Les files d'attente

Ce programme présente l'usage des files d'attente.

Le fichier source est ${UPS_HOME}/upsvtm/demo/${UPS_LANGUAGE}/filedattente.upl.

Mode compilé

Commande de compilation

upscmp Source=filedattente.upl

Commande d'exécution

filedattente

Mode interprété

upssng Source=filedattente.upl

Fichier source

Source Composant "Exemple d'emploi des files d'attente" Version 4.0.0;

Variable
/******/
FileDAttente
/**********/
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
/******/
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 Fin Pour
Ecran.Ecrire("\n");
TantQue NbTravauxEnCours>0 Faire Fin TantQue
Fin Principal

Résultat de l'exécution

Reference=04/07/2006 16:55:48 Dans AFaire2 1 coucou2 Date=04/07/2006 16:55:48 Dans AFaire5 Date=04/07/2006 16:55:48 AFaire7 AFaire1 AFaire8 AFaire9 AFaire10 AFaire6 AFaire3 AFaire4 AFaire2 termine:04/07/2006 16:55:48 AFaire5 termine: Resultat=1 Dans AFaire7 Date=04/07/2006 16:56:03 Dans AFaire1 Date=04/07/2006 16:56:03 Dans AFaire4 4 coucou4 Date=04/07/2006 16:56:03 Dans AFaire8 8 coucou8 Date=04/07/2006 16:56:03 Dans AFaire9 Date=04/07/2006 16:56:03 Dans AFaire10 10 coucou10 Date=04/07/2006 16:56:03 Dans AFaire6 6 coucou6 Date=04/07/2006 16:56:03 AFaire1 termine AFaire4 termine:04/07/2006 16:56:03 Resultat=Vrai AFaire6 termine:04/07/2006 16:56:03 Resultat=2 AFaire7 termine: Resultat=1.1000 AFaire8 termine:04/07/2006 16:56:03 Resultat=2.1000 AFaire9 termine: Resultat=bonjour AFaire10 termine:04/07/2006 16:56:03 Resultat=coucou Dans AFaire3 Date=04/07/2006 16:56:13 AFaire3 termine Resultat=Faux