Pourquoi un système d'exploitation virtuel ?
Concepts du système d'exploitation virtuel...
L'intérêt d'un système d'exploitation virtuel est de mettre à la disposition des informaticiens une interface système identique quelle que soit la plate-forme qui se fond sur un système d'exploitation réel. Les API étant identiques, le portage de l'applicatif est immédiat, même si des fonctions particulièrement avancées ont été employées.
Pour connaître les options d'exécution d'Up ! System, veuillez vous référer à la fiche Description des options d'exécution d'Up ! System.
Revenir en haut de la page...
Le type Calendrier d'Up ! System modélise les calendriers. Le type PeriodeCalendrier d'Up ! System modélise les périodes de calendrier.
Un fichier porte un nom composé de caractères éditables et sans limite de taille. Il peut comporter des caractères non alpha-numérique tel le caractère espace. Seuls les caractères division /
et division inversé \
ne sont pas acceptés.
Un fichier appartient à un utilisateur (son propriétaire) et possède des droits d'accès vis-à-vis de son propriétaire et de groupes d'utilisateur.
Un fichier est caractérisé par un chemin d'accès correspondant à la succession des répertoires y menant. Ce chemin d'accès est exprimé sous forme d'une chaîne de caractères et cite dans l'ordre :
/
ou le caractère division inversé \
.
Pour connaître le contenu d'un répertoire, il faut utiliser la fonction ListerFichiers d'Up ! System. Celle-ci retourne la description de chaque fichier ou de chaque sous-répertoire d'un répertoire donné sous forme d'un objet du type FichierListe.
Dans le cas d'une politique autorisant une croissance souple (scalable growth), le mieux est d'employer des files d'attente gérant les demandes pour lisser la monter en charge de la machine. Les temps de réponse sont alors améliorés et la machine supportera une plus grande amplitude d'utilisateurs.
Une file d'attente permet à une tâche cliente d'y placer un travail de type Travail en spécifiant une contrainte temporelle d'exécution et une priorité. A chaque file sont associées des tâches la desservant. Les tâches sont créées dynamiquement en fonction de la demande, dans la limite d'un nombre maximal spécifique à chaque file.
Les tâches prélèvent les travaux un à un selon le planning établi et par ordre de priorité puis les exécutent. Les tâches clientes peuvent suivre l'état leur état d'avancement. Une fois terminés, le résultat des travaux est disponible.
Le type FileDAttente d'Up ! System modélise les files d'attente. Le type Travail d'Up ! System modélise les travaux dans les files d'attente.
Le 7/8/2003 à 23:39:35 : planification du travail 'AFaire1' numéro 1 au plus tôt le 7/8/2003 à 23:39:50.
Le 7/8/2003 à 23:39:35 : planification du travail 'AFaire2' numéro 2 au plus tard le 7/8/2003 à 23:39:45.
Le 7/8/2003 à 23:39:35 : début du travail 'AFaire2' numéro 2.
Le 7/8/2003 à 23:39:36 : planification du travail 'AFaire3' numéro 3 au plus tôt le 7/8/2003 à 23:39:60.
Le 7/8/2003 à 23:39:37 : fin du travail 'AFaire2' numéro 2.
Le 7/8/2003 à 23:39:37 : planification du travail 'AFaire4' numéro 4 synchronisé avec d'autres travaux.
Le 7/8/2003 à 23:39:37 : planification du travail 'AFaire5' numéro 5 synchronisé avec d'autres travaux.
Le 7/8/2003 à 23:39:37 : planification du travail 'AFaire6' numéro 6 au plus tôt le 7/8/2003 à 23:39:50.
Le 7/8/2003 à 23:39:38 : planification du travail 'AFaire7' numéro 7 au plus tôt le 7/8/2003 à 23:39:50.
Le 7/8/2003 à 23:39:39 : planification du travail 'AFaire8' numéro 8 au plus tôt le 7/8/2003 à 23:39:50.
Le 7/8/2003 à 23:39:40 : début du travail 'AFaire5' numéro 5.
Le 7/8/2003 à 23:39:40 : planification du travail 'AFaire9' numéro 9 au plus tôt le 7/8/2003 à 23:39:50.
Le 7/8/2003 à 23:39:41 : fin du travail 'AFaire5' numéro 5.
Le 7/8/2003 à 23:39:43 : planification du travail 'AFaire10' numéro 10 au plus tôt le 7/8/2003 à 23:39:50.
Le 7/8/2003 à 23:39:57 : début du travail 'AFaire7' numéro 7.
Le 7/8/2003 à 23:39:59 : fin du travail 'AFaire7' numéro 7.
Le 7/8/2003 à 23:39:59 : début du travail 'AFaire1' numéro 1.
Le 7/8/2003 à 23:40:0 : fin du travail 'AFaire1' numéro 1.
Le 7/8/2003 à 23:40:0 : début du travail 'AFaire4' numéro 4.
Le 7/8/2003 à 23:40:3 : fin du travail 'AFaire4' numéro 4.
Le 7/8/2003 à 23:40:3 : début du travail 'AFaire8' numéro 8.
Le 7/8/2003 à 23:40:4 : fin du travail 'AFaire8' numéro 8.
Le 7/8/2003 à 23:40:4 : début du travail 'AFaire9' numéro 9.
Le 7/8/2003 à 23:40:5 : fin du travail 'AFaire9' numéro 9.
Le 7/8/2003 à 23:40:5 : début du travail 'AFaire10' numéro 10.
Le 7/8/2003 à 23:40:6 : fin du travail 'AFaire10' numéro 10.
Le 7/8/2003 à 23:40:6 : début du travail 'AFaire6' numéro 6.
Le 7/8/2003 à 23:40:10 : fin du travail 'AFaire6' numéro 6.
Le 7/8/2003 à 23:40:10 : début du travail 'AFaire3' numéro 3.
Le 7/8/2003 à 23:40:12 : fin du travail 'AFaire3' numéro 3.
Dans le cadre d'un applicatif complexe, les demandes successives d'un même client ne sont pas indépendantes. En effet, il existe une relation de causalité ce qui demande de gérer un contexte par client regroupant des informations persistantes entre deux demandes. Ce contexte regroupe un ensemble de variables traduisant l'état du client. Nous pouvons y trouver :
Le principe des instances est bien différent de celui d'une tâche : une instance permet de faire de la sérialisation alors qu'une tâche permet de faire du parallélisme.
Quand l'applicatif est multi-instance, il reste à signifier à Up ! Application System quelles sont les informations propres à une instance et quelles sont celles qui sont partagées. Cela se résout aisément au moyen du mode de partage des segments de données.
Il ne faut pas confondre ces journaux avec les journaux mémorisant les modifications apportées aux objets des entrepôts persistants. Ceux-ci servent pour le mécanisme de reprise en cas d'arrêt brutal d'un programme persistant.
Ce journal porte alors le nom du processus. Il est conservé dans le répertoire ${UPS_HOME}/log en mode mono-utilisateur ou ${UPS_HOME}/log/${UPS_USER} en mode multi-utilisateurs.
Le contenu de ce journal correspond à ce que vous écrivez dans la variable Journal de type Fichier. Si l'option d'exécution d'Up ! Kernel TracerException est activée, alors toutes les exceptions envoyées par une des tâches du processus sont reportées dans le journal.
Ce journal porte alors le nom de la file. Il est conservé dans le répertoire ${UPS_HOME}/log en mode mono-utilisateur ou ${UPS_HOME}/log/${UPS_USER} en mode multi-utilisateurs.
Voici le contenu du journal pour l'exemple traitant des files d'attente :
Le 7/8/2003 à 23:39:35 : planification du travail 'AFaire1' numéro 1 au plus tôt le 7/8/2003 à 23:39:50.
Le 7/8/2003 à 23:39:35 : planification du travail 'AFaire2' numéro 2 au plus tard le 7/8/2003 à 23:39:45.
Le 7/8/2003 à 23:39:35 : début du travail 'AFaire2' numéro 2.
Le 7/8/2003 à 23:39:36 : planification du travail 'AFaire3' numéro 3 au plus tôt le 7/8/2003 à 23:39:60.
Le 7/8/2003 à 23:39:37 : fin du travail 'AFaire2' numéro 2.
Le 7/8/2003 à 23:39:37 : planification du travail 'AFaire4' numéro 4 synchronisé avec d'autres travaux.
Le 7/8/2003 à 23:39:37 : planification du travail 'AFaire5' numéro 5 synchronisé avec d'autres travaux.
Le 7/8/2003 à 23:39:37 : planification du travail 'AFaire6' numéro 6 au plus tôt le 7/8/2003 à 23:39:50.
Le 7/8/2003 à 23:39:38 : planification du travail 'AFaire7' numéro 7 au plus tôt le 7/8/2003 à 23:39:50.
Le 7/8/2003 à 23:39:39 : planification du travail 'AFaire8' numéro 8 au plus tôt le 7/8/2003 à 23:39:50.
Le 7/8/2003 à 23:39:40 : début du travail 'AFaire5' numéro 5.
Le 7/8/2003 à 23:39:40 : planification du travail 'AFaire9' numéro 9 au plus tôt le 7/8/2003 à 23:39:50.
Le 7/8/2003 à 23:39:41 : fin du travail 'AFaire5' numéro 5.
Le 7/8/2003 à 23:39:43 : planification du travail 'AFaire10' numéro 10 au plus tôt le 7/8/2003 à 23:39:50.
Le 7/8/2003 à 23:39:57 : début du travail 'AFaire7' numéro 7.
Le 7/8/2003 à 23:39:59 : fin du travail 'AFaire7' numéro 7.
Le 7/8/2003 à 23:39:59 : début du travail 'AFaire1' numéro 1.
Le 7/8/2003 à 23:40:0 : fin du travail 'AFaire1' numéro 1.
Le 7/8/2003 à 23:40:0 : début du travail 'AFaire4' numéro 4.
Le 7/8/2003 à 23:40:3 : fin du travail 'AFaire4' numéro 4.
Le 7/8/2003 à 23:40:3 : début du travail 'AFaire8' numéro 8.
Le 7/8/2003 à 23:40:4 : fin du travail 'AFaire8' numéro 8.
Le 7/8/2003 à 23:40:4 : début du travail 'AFaire9' numéro 9.
Le 7/8/2003 à 23:40:5 : fin du travail 'AFaire9' numéro 9.
Le 7/8/2003 à 23:40:5 : début du travail 'AFaire10' numéro 10.
Le 7/8/2003 à 23:40:6 : fin du travail 'AFaire10' numéro 10.
Le 7/8/2003 à 23:40:6 : début du travail 'AFaire6' numéro 6.
Le 7/8/2003 à 23:40:10 : fin du travail 'AFaire6' numéro 6.
Le 7/8/2003 à 23:40:10 : début du travail 'AFaire3' numéro 3.
Le 7/8/2003 à 23:40:12 : fin du travail 'AFaire3' numéro 3.
Ce journal est conservé dans le fichier ${UPS_HOME}/log/${UPS_APPLICATION}-upscrb-${NumeroSession}.log en mode mono-utilisateur ou dans le fichier ${UPS_HOME}/log/${UPS_USER}/${UPS_APPLICATION}-upscrb-${NumeroSession}.log en mode multi-utilisateur.
Ce journal permet notamment de mettre au point l'usage d'un serveur Corba correspondant à un module Up ! Application System afin de se rendre compte si le client transmet les bonnes valeurs de paramètres. Voici le contenu du journal :
-> Annuaire.LireArborescenceAnnuaire(0x01cc6d68)
<- OK
-> EstNul(0x00000000)
<- OK
-> Liste.DernierElement()
ExposerObjet(0x01cc6ea8)
<- OK
-> Identique(0x01cc6368,0x01cc6ea8)
<- OK
-> Liste.Suivant(0)
ExposerObjet(0x01cc6fe8)
<- OK
-> CorbaString2Caractere()
ExposerObjet(0x01cc7128)
<- OK
-> Caractere.!=(0x01cc7128)
ExposerObjet(0x01cc7268)
<- OK
-> Booleen2CorbaBoolean(0x01cc7268)
<- OK
-> CorbaString2Caractere(.)
ExposerObjet(0x01cc73a8)
-> Caractere.+(0x01cc73a8)
<- OK
ExposerObjet(0x01cc74e8)
<- OK
-> Caractere.+(0x01cc6fe8)
ExposerObjet(0x01cc7628)
<- OK
-> Caractere2CorbaString(0x01cc7628)
<- OK
-> CorbaString2Caractere(.)
ExposerObjet(0x01cc7768)
<- OK
Ce journal permet notamment de mettre au point l'usage d'un serveur Corba correspondant à un module Up ! Application System afin de se rendre compte si le client transmet les bonnes valeurs de paramètres.
Ce journal est conservé dans le fichier ${UPS_HOME}/log/${UPS_APPLICATION}-upscom-${NumeroSession}.log en mode mono-utilisateur ou dans le fichier ${UPS_HOME}/log/${UPS_USER}/${UPS_APPLICATION}-upscom-${NumeroSession}.log en mode multi-utilisateur.
Voici le contenu du journal :
-> IDispatch.GetIDsOfNames(0x00ce27c0,DComBStr2Caractere)
<- S_OK
-> IDispatch.Invoke(0x00ce27c0,1610743948,3)
-> DComBStr2Caractere(0x00401ac0)
<- S_OK
IUnknown.AddRef(0x00ceb060)
<- S_OK
-> IDispatch.GetIDsOfNames(0x00ce27c0,Binaire2)
<- S_OK
-> IDispatch.Invoke(0x00ce27c0,1610743904,3)
-> IUnknown.QueryInterface(0x00ceb060,0xfecd0004-0x8a05-0x11d0-0x8e3ce1043ebbde2b)
<- S_OK
<- S_OK
-> Binaire.Binaire2(0x00ce27c0,0x00ceb060)
IUnknown.AddRef(0x00ceaf30)
<- S_OK
IUnknown.Release(0x00ceb060)
-> IDispatch.GetIDsOfNames(0x00ceacd0,AdditionnerAffecter)
-> ITypeLib.ChargerTypeLib(UpsKrn)
<- S_OK
<- 1
-> IDispatch.Invoke(0x00ceacd0,1610743825,1)
-> IUnknown.QueryInterface(0x00ceaf30,0xfecd0003-0x8a05-0x11d0-0x8e3ce1043ebbde2b)
<- S_OK
<- S_OK
-> Binaire.+=(0x00ceacd0,0x00ceaf30)
<- S_OK
IUnknown.Release(0x00ceaf30)
IUnknown.Release(0x00ceb060)
IUnknown.Release(0x00ceaf30)
Ce journal permet notamment de mettre au point l'usage d'un serveur Com correspondant à un module Up ! Application System afin de se rendre compte si le client transmet les bonnes valeurs de paramètres.
Ce journal est conservé dans le fichier ${UPS_HOME}/log/${UPS_APPLICATION}-upsjav-${NumeroSession}.log en mode mono-utilisateur ou dans le fichier ${UPS_HOME}/log/${UPS_USER}/${UPS_APPLICATION}-upsjav-${NumeroSession}.log en mode multi-utilisateur.
Voici le contenu du journal :
-> UpsKrnSJ.JavaString2Caractere(0x0007fab8)
-> UpsJav.String2Caractere(MonAnnuaire)
<- '0x00a05860'
<- '1:281:244@6:65534'
-> UpsKrnSJ.JavaString2Caractere(0x0007fab4)
-> UpsJav.String2Caractere(coucou)
<- '0x00a05860'
<- '1:281:245@6:65534'
-> UpsKrnSJ.JavaString2Caractere(0x0007fab0)
-> UpsJav.String2Caractere(COUCOU)
<- '0x00a05860'
<- '1:217:0@6:65534'
-> UpsKrnSJ.JavaString2Caractere(0x0007fab4)
-> UpsJav.String2Caractere(hello)
<- '0x00a05864'
<- '1:217:17@6:65534'
-> UpsKrnSJ.JavaString2Caractere(0x0007fab0)
-> UpsJav.String2Caractere(HELLO)
<- '0x00a05860'
<- '1:281:245@6:65534'
Ce journal permet notamment de mettre au point l'usage d'un serveur Java correspondant à un module Up ! Application System afin de se rendre compte si le client transmet les bonnes valeurs de paramètres.
Ce journal est conservé dans le fichier ${UPS_HOME}/log/${UPS_APPLICATION}-upskrn-${NumeroSession}.log en mode mono-utilisateur ou dans le fichier ${UPS_HOME}/log/${UPS_USER}/${UPS_APPLICATION}-upskrn-${NumeroSession}.log en mode multi-utilisateur.
Voici le contenu du journal :
No=1 : NbTaches 3 TempsUtilisateur 0.740% TempsSysteme 0.100%
Entrepot Systeme :
No=2 : NbTaches 3 TempsUtilisateur 0.000% TempsSysteme 0.000%
NbCachesAlloues 38 NbBlocsAlloues 303 NbVerrousAlloues 0 NbObjetsCrees 476
Entrepot MonEntrepot :
NbBlocsEcrits 190 NbBlocsLus 109 NbCollisions 0
NbCachesAlloues 9 NbBlocsAlloues 70 NbVerrousAlloues 0 NbObjetsCrees 0
NbBlocsEcrits 0 NbBlocsLus 0 NbCollisions 0
Entrepot Systeme :
No=3 : NbTaches 3 TempsUtilisateur 0.000% TempsSysteme 0.000%
NbCachesAlloues 38 NbBlocsAlloues 303 NbVerrousAlloues 0 NbObjetsCrees 476
Entrepot MonEntrepot :
NbBlocsEcrits 2 NbBlocsLus 16 NbCollisions 0
NbCachesAlloues 9 NbBlocsAlloues 70 NbVerrousAlloues 0 NbObjetsCrees 0
NbBlocsEcrits 0 NbBlocsLus 0 NbCollisions 0
Entrepot Systeme :
No=4 : NbTaches 3 TempsUtilisateur 0.000% TempsSysteme 0.000%
NbCachesAlloues 38 NbBlocsAlloues 303 NbVerrousAlloues 0 NbObjetsCrees 476
Entrepot MonEntrepot :
NbBlocsEcrits 2 NbBlocsLus 16 NbCollisions 0
NbCachesAlloues 9 NbBlocsAlloues 70 NbVerrousAlloues 0 NbObjetsCrees 0
NbBlocsEcrits 0 NbBlocsLus 0 NbCollisions 0
Entrepot Systeme :
No=5 : NbTaches 3 TempsUtilisateur 0.000% TempsSysteme 0.000%
NbCachesAlloues 38 NbBlocsAlloues 303 NbVerrousAlloues 0 NbObjetsCrees 476
Entrepot MonEntrepot :
NbBlocsEcrits 2 NbBlocsLus 16 NbCollisions 0
NbCachesAlloues 9 NbBlocsAlloues 70 NbVerrousAlloues 0 NbObjetsCrees 0
NbBlocsEcrits 0 NbBlocsLus 0 NbCollisions 0
Entrepot Systeme :
NbCachesAlloues 38 NbBlocsAlloues 303 NbVerrousAlloues 0 NbObjetsCrees 476
Entrepot MonEntrepot :
NbBlocsEcrits 2 NbBlocsLus 16 NbCollisions 0
NbCachesAlloues 9 NbBlocsAlloues 70 NbVerrousAlloues 0 NbObjetsCrees 0
NbBlocsEcrits 0 NbBlocsLus 0 NbCollisions 0
Ce journal permet notamment de mettre au point la configuration mémoire optimale pour le programme en fonction de son activité.
Ce journal est conservé dans le fichier ${UPS_HOME}/log/${UPS_APPLICATION}-upsnet-${NumeroSession}.log en mode mono-utilisateur ou dans le fichier ${UPS_HOME}/log/${UPS_USER}/${UPS_APPLICATION}-upsnet-${NumeroSession}.log en mode multi-utilisateur.
Voici le contenu du journal :
No=817 : Recu de l'en-tete du message 'OuvrirSession' de 'UpsTcp:127.0.0.1/1635' suivi de 0 octets.
No=818 : Envoi de l'en-tete du message 'Reponse' vers 'UpsTcp:127.0.0.1/1634' suivi de 0 octets.
No=819 : Fin de l'envoi vers 'UpsTcp:127.0.0.1/1634'.
No=820 : Recu de l'en-tete du message 'MethodeSansParametre' de 'UpsTcp:127.0.0.1/1634' suivi de 0 octets.
No=821 : Envoi de l'en-tete du message 'Reponse' vers 'UpsTcp:127.0.0.1/1634' suivi de 0 octets.
No=822 : Fin de l'envoi vers 'UpsTcp:127.0.0.1/1634'.
No=823 : Recu de l'en-tete du message 'NePlusUtiliserObjet' de 'UpsTcp:127.0.0.1/1634' suivi de 0 octets.
No=824 : Envoi de l'en-tete du message 'Reponse' vers 'UpsTcp:127.0.0.1/1634' suivi de 0 octets.
No=825 : Fin de l'envoi vers 'UpsTcp:127.0.0.1/1634'.
No=826 : Recu de l'en-tete du message 'MethodeSansParametre' de 'UpsTcp:127.0.0.1/1634' suivi de 0 octets.
No=827 : Envoi de l'en-tete du message 'Reponse' vers 'UpsTcp:127.0.0.1/1634' suivi de 0 octets.
No=828 : Fin de l'envoi vers 'UpsTcp:127.0.0.1/1634'.
No=829 : Recu de l'en-tete du message 'NePlusUtiliserObjet' de 'UpsTcp:127.0.0.1/1634' suivi de 0 octets.
No=830 : Envoi de l'en-tete du message 'Reponse' vers 'UpsTcp:127.0.0.1/1634' suivi de 0 octets.
No=831 : Fin de l'envoi vers 'UpsTcp:127.0.0.1/1634'.
No=832 : Recu de l'en-tete du message 'MethodeSansParametre' de 'UpsTcp:127.0.0.1/1634' suivi de 0 octets.
No=833 : Envoi de l'en-tete du message 'Reponse' vers 'UpsTcp:127.0.0.1/1634' suivi de 0 octets.
Ce journal porte alors le nom ${UPS_HOME}/log/${UPS_APPLICATION}-upsoms-${NumeroSession}.log en mode mono-utilisateur ou dans le fichier ${UPS_HOME}/log/${UPS_USER}/${UPS_APPLICATION}-upsoms-${NumeroSession}.log en mode multi-utilisateur. La session est l'identification d'un tâche issue d'un processus ou d'un groupe de processus partageant des ressources au sein d'Up ! System.
Ce journal d'alerte est alimenté en continu quand l'option TracerNoyau d'Up ! Object Management System est activée.
Voici le contenu du journal :
Interblocage pour 7 :
Actif 65596 Cache 12 Bloc 98 Index 2 TypeVerrou LecturePartagee Proprietaire 8 Date 0
Actif 65592 Cache 12 Bloc 98 Index 0 TypeVerrou LecturePartagee Proprietaire 8 Date 0
Bloque 65595 Cache 12 Bloc 98 Index 5 TypeVerrou LecturePartagee Proprietaire 7 Date 0
Actif 65599 Cache 12 Bloc 98 Index 5 TypeVerrou LecturePartagee Proprietaire 8 Date 0
Actif 65587 Cache 12 Bloc 98 Index 9 TypeVerrou LecturePartagee Proprietaire 8 Date 0
Actif 65600 Cache 12 Bloc 98 Index 5 TypeVerrou LecturePartagee Proprietaire 8 Date 0
Actif 65598 Cache 16 Bloc 130 Index 0 TypeVerrou EcritureExclusive Proprietaire 7 Date 0
Bloque 65597 Cache 16 Bloc 130 Index 0 TypeVerrou EcritureExclusive Proprietaire 8 Date 0
La variable NumeroProcessus contient le numéro du processus du programme courant.
Pour connaître les programmes en cours d'exécution, il faut utiliser la fonction ListerProcessus d'Up ! System. Celle-ci retourne la description de chaque processus de la machine courante sous forme d'un objet du type ProcessusListe.
/
ou le caractère division inversé \
.
Un répertoire porte un nom composé de caractères éditables et sans limite de taille. Il peut comporter des caractères non alpha-numérique tel le caractère espace. Seuls les caractères division /
et division inversé \
ne sont pas acceptés.
Un répertoire appartient à un utilisateur (son propriétaire) et possède des droits d'accès vis-à-vis de son propriétaire et de groupes d'utilisateur.
La variable RepertoireTmp contient le répertoire où doivent être créés les fichiers temporaires. Sa valeur provient du paramètre tmp.
Pour lever une synchronisation préalablement posée, il suffit d'appeler la méthode Lacher.
Le type Tache d'Up ! System permet gérer les tâches des processus. Il permet en particulier d'en créer de spécifiques.
Up ! System comporte des tâches servant à gérer :
Ces informations vous seront particulièrement utiles pour écrire un module d'installation ou de configuration de votre applicatif.
On peut définir autant de variables environnement que nécessaire.
UPS_HOME, UPS_PATH et UPS_USER sont des variables environnement. Elles alimentent respectivement les variables UpsHome, UpsPath et UpsUser.
Up ! System met à la disposition des programmes les pseudo variables environnement suivantes :
Variable | Signification |
SYSTEM_HOME | Répertoire d'installation du système d'exploitation. |
UPS_APPLICATION | Identifiant de l'application au sein de Up ! Virtual Technical Machine. |
UPS_HOME | Répertoire d'installation d'Up ! Application System. |
UPS_LANGUAGE | Identifiant de la langue au sein de Up ! Virtual Technical Machine. |
UPS_NLS | Liste des chemins d'accès aux ressources linguistiques d'Up ! Application System. |
UPS_PATH | Liste des chemins d'accès aux exécutables d'Up ! Application System. |
UPS_PROJECT | Identifiant du projet au sein de Up ! Virtual Technical Machine. |
UPS_USER | Identifiant de l'utilisateur au sein de Up ! Virtual Technical Machine. |
Elles peuvent être également employées dans la valeur de tous les paramètres de tous les modules de Virtual Technical Machine dont la sémantique correspond à un nom de répertoire ou de fichier.
En ce cas, le nom de la variable doit être écrit entre caractères accolade ouvrante { et accolade fermante } et précédée du caractère dollar $. Voici un exemple :
tmp=${UPS_HOME}/demo/tmp/${UPS_USER}