Les fichiers sources sont dans le répertoire ${UPS_HOME}/upssdk/demo/${UPS_LANGUAGE}/shell/.
Pour lancer Up ! Shell, appsrv.upi doit être déclaré parmi les modules importés dans le fichier ${UPS_HOME}/upssdk/sources/${UPS_LANGUAGE}/upsshl.upl.
Le noyau d'exécution doit être multi-processus via le partage de l'entrepôt Systeme qui doit être desservi par le programme serveur.
Cela se déclare dans le fichier ${UPS_HOME}/ini/${UPS_USER}/upsoms.ini comme suit :
Serveur=serveur
Depuis Up ! Shell, il est possible d'appeler ListerEmployes pour surveiller le serveur ou AugmenterSalaires pour changer les données du serveur.
upscmp Source=appsrv
upscmp Source=serveur
upsorb PortUpsOrb=1632
serveur PortUpsOrb=1632 PortServeur=1640 NbServeurs=1 PasDOrb=Non
upsshl PortUpsOrb=1632
upsorb PortUpsOrb=1632
upssng Source=serveur.upl PortUpsOrb=1632 PortServeur=1640 NbServeurs=1 PasDOrb=Non
upsshl PortUpsOrb=1632
Source Module "Exemple d'emploi du shell" Version 4.0.0 ModuleDynamique;
Composant Dans "appsrv1.upl";
Source Composant "Exemple d'emploi du shell" Version 4.0.0 RattacherA "appsrv.upl";
SegmentPublic MemoirePublique;
Public :
Type Employe Defaut
/*****************/
Nom : Caractere;
Numero : Entier;
Salaire : Reel;
DateDEmbauche : Date;
Constructeur();
Fin Type
Variable
/******/
Public :
ListeDEmployes : Nul Ou ListeDe Employe;
Public :
/*****/
Procedure CreerListeDEmployes()
/*****************************/
Variable
E : Nul Ou Employe;
Debut
E=Employe();
E.Nom="scott";
E.Numero=7724;
E.Salaire=1000.00;
E.DateDEmbauche=Date("12-01-1980");
ListeDEmployes+=E;
E=Employe();
E.Nom="allen";
E.Numero=7832;
E.Salaire=2000.00;
E.DateDEmbauche=Date("13-02-1981");
ListeDEmployes+=E;
E=Employe();
E.Nom="smith";
E.Numero=7948;
E.Salaire=1400.00;
E.DateDEmbauche=Date("14-03-1982");
ListeDEmployes+=E;
E=Employe();
E.Nom="king";
E.Numero=7964;
E.Salaire=2000.00;
E.DateDEmbauche=Date("15-04-1983");
ListeDEmployes+=E;
Fin Procedure
Procedure AugmenterSalaires()
/***************************/
Variable
I : Entier;
E : Nul Ou Employe;
Debut
I=ListeDEmployes.AllouerIterateur();
Pour E=ListeDEmployes.ParcoursAuDebut(I) JusquA ListeDEmployes.DernierElement() Pas ListeDEmployes.Suivant(I) Faire
E.Salaire*=1.025;
Fin Pour
ListeDEmployes.LibererIterateur(I);
Fin Procedure
Procedure ListerEmployes()
/************************/
Variable
I : Entier;
E : Nul Ou Employe;
Debut
I=ListeDEmployes.AllouerIterateur();
Pour E=ListeDEmployes.ParcoursAuDebut(I) JusquA ListeDEmployes.DernierElement() Pas ListeDEmployes.Suivant(I) Faire
Ecran.Ecrire(E.Nom+" "+Caractere(E.Numero)+" "+Caractere(E.Salaire)+" "+Caractere(E.DateDEmbauche));
Fin Pour
ListeDEmployes.LibererIterateur(I);
Ecran.Ecrire(");
Fin Procedure
Source Composant "Exemple d'emploi du shell" Version 4.0.0;
ImporterModule Demande(<appsrv.upi>, ImporterDefinitions);
Principal
/*******/
Variable
Delai : Entier;
Debut
CreerListeDEmployes();
ListerEmployes();
TantQue Vrai Faire
Delai=Aleatoire()%30;
Ecran.Ecrire("Attente de "+Caractere(Delai)+" secondes avant l'augmentation de salaires...");
Attendre(Reel(Delai));
AugmenterSalaires();
ListerEmployes();
Fin TantQue
Fin Principal