/*
et sa fin est signalée par */
. Exemple :
I=1;
/* Premiere ligne de commentaire.
Deuxieme ligne de commentaire. */
J=1;
//
. Exemple :
I=1;
// Ligne de commentaire.
J=1;
//
.
0, 1, 4567, 23487
-3, 0.5, -0.7, abcd
Voici des exemples de constantes réelles :
0., 0.0, 2.3345, 23.487, 23E7, 45E-6
8, -1, .5, -0.7, abcd, 45E
Voici des exemples d'identificateur :
abcde, a123, def_ad167
18, 3.14, 123aa, _abcde, _aaa
Voici des exemples de chaînes de caractères entre guillemets :
"liste des employés", "pi=3.14159"
'abcd', abcd, 12
Voici des exemples de chaînes de caractères entre chevrons :
<essai.upi>, <graphique/camembert.upi>
'abcd', abcd, 12
\
. Exemple :
"citation :\"essai\"."
\
, il faut le précéder par le caractère division inversée \
. Exemple :
"c:\\tmp\\exemple.txt"
\
en fin des premières lignes composant la chaîne. Exemple :
ceci \
est un \
essai"
@
introduit le serveur d'appartenance d'un objet. Il permet de référencer dans une expression les objets distants suivants :
Employé sur un traitement, l'opérateur accès distant @
introduit le serveur implémentant un appel ou une méthode d'un type. Il permet de référencer dans une expression les traitements distants suivants :
Le serveur de rattachement est donnée par une expression de valeur non nulle dont le type doit être Serveur. La communication entre la tâche courante et le serveur distant est réalisée par Up ! Object Management System selon le protocol Up ! Network.
L'expression du serveur de rattachement est généralement une variable référençant :
Source Composant "Exemple d'emploi de @" Version 1;
Principal
/*******/
Variable
/******/
MonServeur : Nul Ou Serveur;
Debut
MonServeur=Serveur("Andromede", "UpsKrn");
/* Le serveur est connu par avance. Il s'agit de 'Andromede'. */
Ecran@MonServeur.Ecrire("Bonjour le monde");
/* Ecriture sur la console du serveur s'appelant 'MonServeur'. */
/* L'objet distant est utilisé en local. Le traitement est donc local. */
Ecran.Ecrire@MonServeur("Bonjour le monde");
/* Ecriture sur la console du serveur s'appelant 'MonServeur'. */
/* La méthode est exécutée par le serveur distant à l'initiative de la tâche courante. */
Fin Principal
||
permet de mettre un appel de procédure ou de fonction dans une file d'attente de type FileDAttente. Le résultat est une demande de travail de type Travail. L'exécution de l'appel est différée jusqu'à ce qu'une tâche desservant la file d'attente prélève la demande de travail et exécute l'appel demandé.
La demande de travail peut comporter une contrainte temporelle (date minimale de déclenchement ou date maximale de déclenchement) ou un ordre d'exécution vis-à-vis des autres travaux en attente. Une priorité d'exécution peut être spécifié pour le travail lors de son introduction dans la file d'attente.
Une tâche peut surveiller l'état d'une file d'attente ou l'état d'avancement d'un travail. Une fois le travail terminé, il est possible de savoir si cela s'est effectué avec succès et, le cas échéant, le problème survenu. En cas de succès, une tâche peut consulter le résultat d'une fonction ou les valeurs des paramètres de sortie.
Exemple :
Source Composant "Exemple d'emploi de ||" Version 1;
FileDAttente
/**********/
MaFile(1);
/* Création d'une file d'attente 'MaFile' desservie par une tâche. */
Variable
/******/
E : Entier;
MonTravail : Nul Ou Travail;
Procedure P(A:Entier Entree Sortie)
/*********************************/
Debut
Ecran.Ecrire("P="+Caractere(A));
Fin Procedure
Principal
/*******/
Debut
E=10;
MonTravail=P(E)||MaFile;
/* Mise en file de l'appel de 'P' dans la file 'MaFile'. Le travail est 'MonTravail'. */
MonTravail.PlanifierAuPlusTard(DateSysteme()+10);
/* Le travail est à déclencher dans au plus 10 secondes. */
Ecran.Ecrire(MaFile.NbTachesServeur);
Ecran.Ecrire(MaFile.NbTravauxEnAttente());
TantQue (MonTravail.Etat!=TravailTermine) Et (MonTravail.Etat!=TravailEnErreur) Faire
/* Nous attendons que le travail soit accompli. */
Attendre(5);
Fin TantQue
Si MonTravail.Etat==TravailEnErreur Alors
/* Il y a eu une erreur. */
Ecran.Ecrire(MonTravail.MessageErreur);
Sinon
/* Lit la valeur de sortie correspondant au premier paramètre. */
Ecran.Ecrire(MonTravail.LireValeurEntier(1));
Fin Si
Fin Principal
?
permet d'ignorer le résultat d'une expression. Ce caractère s'emploi lorsque le résultat d'une fonction ou les paramètres de sortie d'un appel ne sont pas utiles pour le reste du programme.
Il n'est pas possible d'employer une variable à la place d'un joker sinon Up ! Compiler signalerait que celle-ci est affectée sans être ensuite utilisée. Up ! Compiler impose d'employer le joker, ce qui permet d'identifier clairement lors de la lecture du programme que le résultat est inutile.
Exemple :
Source Composant "Exemple d'emploi de ?" Version 1;
Fonction F() Retourner Entier
/***************************/
Debut
Ecran.Ecrire("Bonjour le monde");
Retourner 1;
Fin Fonction
Procedure P(A : Entier Sortie) Retourner Entier
/*********************************************/
Debut
Ecran.Ecrire("Bonjour le monde");
A=1;
Fin Procedure
Principal
/*******/
Debut
?=F();
P(?);
Fin Principal
.
permet de sélectionner une propriété d'une objet d'un type ou il permet d'appliquer une méthode à un objet.
Seules les méthodes correspondant à un opérateur ne doivent pas être introduites par le caractère sélection .
.
Exemple :
Source Composant "Exemple d'emploi de ." Version 1;
Principal
/*******/
Debut
Ecran.Ecrire("Bonjour le monde en "+DateSysteme().Annee);
Fin Principal