Le fichier source est ${UPS_HOME}/upsvtm/demo/${UPS_LANGUAGE}/filedattente.upl.
upscmp Source=filedattente.upl
filedattente
upssng Source=filedattente.upl
Source Composant "Exemple d'emploi des files d'attente" Version 4.0.0;
Variable
/******/
T : Nul Ou Travail;
T1 : Nul Ou Travail;
T2 : Nul Ou Travail;
T3 : Nul Ou Travail;
T4 : Nul Ou Travail;
T5 : Nul Ou Travail;
T6 : Nul Ou Travail;
T7 : Nul Ou Travail;
T8 : Nul Ou Travail;
T9 : Nul Ou Travail;
T10 : Nul Ou Travail;
D : Nul Ou Date;
D2 : Nul Ou Date;
E : Nul Ou Caractere;
FileDAttente
/**********/
MaFile(1);
Procedure AFaire1()
/*****************/
Debut
Ecran.Ecrire("Dans AFaire1");
Ecran.Ecrire("Date="+Caractere(DateSysteme()));
Ecran.Ecrire("\n");
Fin Procedure
Procedure AFaire2(A : Entier, B : Caractere Entree Sortie, C : Date Sortie)
/*************************************************************************/
Debut
Ecran.Ecrire("Dans AFaire2 "+Caractere(A)+" "+B);
Ecran.Ecrire("Date="+Caractere(DateSysteme()));
Ecran.Ecrire("\n");
B="afaire2";
C=DateSysteme();
Fin Procedure
Fonction AFaire3() Retourner Booleen
/**********************************/
Debut
Ecran.Ecrire("Dans AFaire3");
Ecran.Ecrire("Date="+Caractere(DateSysteme()));
Ecran.Ecrire("\n");
Retourner Faux;
Fin Fonction
Fonction AFaire4(A : Entier, B : Caractere Entree Sortie, C : Date Sortie) Retourner Booleen
/******************************************************************************************/
Debut
Ecran.Ecrire("Dans AFaire4 "+Caractere(A)+" "+B);
Ecran.Ecrire("Date="+Caractere(DateSysteme()));
Ecran.Ecrire("\n");
B="afaire4";
C=DateSysteme();
Retourner Vrai;
Fin Fonction
Fonction AFaire5() Retourner Entier
/*********************************/
Debut
Ecran.Ecrire("Dans AFaire5");
Ecran.Ecrire("Date="+Caractere(DateSysteme()));
Ecran.Ecrire("\n");
Retourner 1;
Fin Fonction
Fonction AFaire6(A : Entier, B : Caractere Entree Sortie, C : Date Sortie) Retourner Entier
/*****************************************************************************************/
Debut
Ecran.Ecrire("Dans AFaire6 "+Caractere(A)+" "+B);
Ecran.Ecrire("Date="+Caractere(DateSysteme()));
Ecran.Ecrire("\n");
B="afaire6";
C=DateSysteme();
Retourner 2;
Fin Fonction
Fonction AFaire7() Retourner Reel
/*******************************/
Debut
Ecran.Ecrire("Dans AFaire7");
Ecran.Ecrire("Date="+Caractere(DateSysteme()));
Ecran.Ecrire("\n");
Retourner 1.1;
Fin Fonction
Fonction AFaire8(A : Entier, B : Caractere Entree Sortie, C : Date Sortie) Retourner Reel
/***************************************************************************************/
Debut
Ecran.Ecrire("Dans AFaire8 "+Caractere(A)+" "+B);
Ecran.Ecrire("Date="+Caractere(DateSysteme()));
Ecran.Ecrire("\n");
B="afaire8";
C=DateSysteme();
Retourner 2.1;
Fin Fonction
Fonction AFaire9() Retourner Caractere
/************************************/
Debut
Ecran.Ecrire("Dans AFaire9");
Ecran.Ecrire("Date="+Caractere(DateSysteme()));
Ecran.Ecrire("\n");
Retourner "bonjour";
Fin Fonction
Fonction AFaire10(A : Entier, B : Caractere Entree Sortie, C : Date Sortie) Retourner Caractere
/*********************************************************************************************/
Debut
Ecran.Ecrire("Dans AFaire10 "+Caractere(A)+" "+B);
Ecran.Ecrire("Date="+Caractere(DateSysteme()));
Ecran.Ecrire("\n");
B="afaire10";
C=DateSysteme();
Retourner "coucou";
Fin Fonction
Principal
/*******/
Variable
/******/
NbTravauxEnCours : Entier;
Debut
MaFile.ActiverJournal(Vrai);
D=DateSysteme();
Ecran.Ecrire("Reference="+Caractere(D));
T1=AFaire1()||MaFile;
T1.PlanifierAuPlusTot(D+15);
E="coucou2";
T2=AFaire2(1,E,D2)||MaFile;
T2.PlanifierAuPlusTard(D+10);
T3=AFaire3()||MaFile;
T3.PlanifierAuPlusTot(D+25);
E="coucou4";
T4=AFaire4(4, E, D2)||MaFile;
T4.PlanifierApres(ListeDe(T1));
T5=AFaire5()||MaFile;
T5.PlanifierApres(ListeDe(T2));
E="coucou6";
T6=AFaire6(6, E, D2)||MaFile;
T6.PlanifierAuPlusTot(D+15, 3, 1);
T7=AFaire7()||MaFile;
T7.PlanifierAuPlusTot(D+15, 3, 3);
E="coucou8";
T8=AFaire8(8, E, D2)||MaFile;
T8.PlanifierAuPlusTot(D+15, 3, 2);
T9=AFaire9()||MaFile;
T9.PlanifierAuPlusTot(D+15);
E="coucou10";
T10=AFaire10(10, E, D2)||MaFile;
T10.PlanifierAuPlusTot(D+15);
NbTravauxEnCours=10;
Pour T=MaFile.ParcoursAuDebut() JusquA MaFile.DernierElement() Faire
Ecran.Ecrire(T.NomTravail);
Fin Pour
Ecran.Ecrire("\n");
TantQue NbTravauxEnCours>0 Faire
Si T1!=Nul Et T1.Etat==TravailTermine Alors
Ecran.Ecrire(T1.NomTravail+" termine");
Ecran.Ecrire("\n");
T1=Nul;
NbTravauxEnCours--;
Fin Si
Si T2!=Nul Et T2.Etat==TravailTermine Alors
Ecran.Ecrire(T2.NomTravail+" termine:"+Caractere(Date(T2.LireValeurObjet(3))));
Ecran.Ecrire("\n");
T2=Nul;
NbTravauxEnCours--;
Fin Si
Si T3!=Nul Et T3.Etat==TravailTermine Alors
Ecran.Ecrire(T3.NomTravail+" termine");
Ecran.Ecrire("Resultat="+Caractere(Booleen(T3.LireValeurEnumere(0))));
Ecran.Ecrire("\n");
T3=Nul;
NbTravauxEnCours--;
Fin Si
Si T4!=Nul Et T4.Etat==TravailTermine Alors
Ecran.Ecrire(T4.NomTravail+" termine:"+Caractere(Date(T4.LireValeurObjet(3))));
Ecran.Ecrire("Resultat="+Caractere(Booleen(T4.LireValeurEnumere(0))));
Ecran.Ecrire("\n");
T4=Nul;
NbTravauxEnCours--;
Fin Si
Si T5!=Nul Et T5.Etat==TravailTermine Alors
Ecran.Ecrire(T5.NomTravail+" termine:");
Ecran.Ecrire("Resultat="+Caractere(T5.LireValeurEntier(0)));
Ecran.Ecrire("\n");
T5=Nul;
NbTravauxEnCours--;
Fin Si
Si T6!=Nul Et T6.Etat==TravailTermine Alors
Ecran.Ecrire(T6.NomTravail+" termine:"+Caractere(Date(T6.LireValeurObjet(3))));
Ecran.Ecrire("Resultat="+Caractere(T6.LireValeurEntier(0)));
Ecran.Ecrire("\n");
T6=Nul;
NbTravauxEnCours--;
Fin Si
Si T7!=Nul Et T7.Etat==TravailTermine Alors
Ecran.Ecrire(T7.NomTravail+" termine:");
Ecran.Ecrire("Resultat="+Caractere(T7.LireValeurReel(0)));
Ecran.Ecrire("\n");
T7=Nul;
NbTravauxEnCours--;
Fin Si
Si T8!=Nul Et T8.Etat==TravailTermine Alors
Ecran.Ecrire(T8.NomTravail+" termine:"+Caractere(Date(T8.LireValeurObjet(3))));
Ecran.Ecrire("Resultat="+Caractere(T8.LireValeurReel(0)));
Ecran.Ecrire("\n");
T8=Nul;
NbTravauxEnCours--;
Fin Si
Si T9!=Nul Et T9.Etat==TravailTermine Alors
Ecran.Ecrire(T9.NomTravail+" termine:");
Ecran.Ecrire("Resultat="+Caractere(T9.LireValeurObjet(0)));
Ecran.Ecrire("\n");
T9=Nul;
NbTravauxEnCours--;
Fin Si
Si T10!=Nul Et T10.Etat==TravailTermine Alors
Ecran.Ecrire(T10.NomTravail+" termine:"+Caractere(Date(T10.LireValeurObjet(3))));
Ecran.Ecrire("Resultat="+Caractere(T10.LireValeurObjet(0)));
Ecran.Ecrire("\n");
T10=Nul;
NbTravauxEnCours--;
Fin Si
Attendre(2.0);
Fin TantQue
Fin Principal