Le fichier source est ${UPS_HOME}/upsvtm/demo/${UPS_LANGUAGE}/transact.upl.
upscmp Source=transact.upl
transact
upssng Source=transact.upl
Source Composant "Exemple d'emploi des transactions" Version 4.0.0;
Type TypeA Defaut Transactionnel
/******************************/
Public :
/******/
CA : Booleen;
CB : Entier;
CC : Reel;
CD : Caractere;
Constructeur();
Fin Type
Variable
/******/
V : TypeA;
T : Nul Ou Transaction;
TS : Nul Ou Tache;
Procedure P()
/***********/
Debut
V.CA=Vrai;
V.CB=1;
V.CC=2.3;
V.CD="coucou";
Fin Procedure
Procedure P2()
/************/
Debut
V.CA=Faux;
V.CB=2;
V.CC=3.4;
V.CD="hello";
Fin Procedure
Procedure P3()
/************/
Debut
V.CA=Vrai;
V.CB=3;
V.CC=4.5;
V.CD="schuss";
Fin Procedure
Fonction PrincipalTacheSecondaire(? : Nul Ou Tache) Retourner
Entier
/******************************************************************/
Variable
I : Entier;
Debut
Pour I=1 JusquA 10 Faire
Ecran.Ecrire("TacheSecondaire:"+Caractere(V.CB)+" "+Caractere(V.CC)+
"+V.CD);
Attendre(1.0);
Fin Pour
Fin Fonction
Fonction PrincipalTacheTertiaire(? : Nul Ou Tache) Retourner
Entier
/*****************************************************************/
Variable
I : Entier;
Debut
Photographier(Vrai);
Pour I=1 JusquA 10 Faire
Ecran.Ecrire("TacheTertiaire:"+Caractere(V.CB)+" "+Caractere(V.CC)+
"+V.CD);
Attendre(1.0);
Fin Pour
Photographier(Faux);
Fin Fonction
Principal
/*******/
Debut
T=Transaction("MaTransaction");
P();
T.Invalider();
Ecran.Ecrire("Principal:"+Caractere(V.CB)+" "+Caractere(V.CC)+" "+V.CD);
P();
T.Valider();
Ecran.Ecrire("Principal:"+Caractere(V.CB)+" "+Caractere(V.CC)+" "+V.CD);
P2();
TS=Tache("TacheSecondaire", PrincipalTacheSecondaire, Faux);
Attendre(5.0);
T.Valider();
Attendre(15.0);
TS=Tache("TacheTertiaire", PrincipalTacheTertiaire, Faux);
Attendre(2.0);
P3();
Attendre(5.0);
T.Valider();
Attendre(15.0);
TS=Nul;
Fin Principal