Les transactions

Ce programme présente la déclaration de types transactionnels et la réalisation de transactions sur des objets.

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

Mode compilé

Commande de compilation

upscmp Source=transact.upl

Commande d'exécution

transact

Mode interprété

upssng Source=transact.upl

Fichier source

Source Composant "Exemple d'emploi des transactions" Version 4.0.0;

Type TypeA Defaut Transactionnel
/******************************/
Public :
/******/ Fin Type

Variable
/******/
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 Debut
Pour I=1 JusquA 10 Faire Fin Pour
Fin Fonction

Fonction PrincipalTacheTertiaire(? : Nul Ou Tache) Retourner Entier
/*****************************************************************/
Variable Debut
Photographier(Vrai);
Pour I=1 JusquA 10 Faire 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

Résultat de l'exécution

Principal:0 0,0000 Principal:1 2,3000 coucou TacheSecondaire:1 2,3000 coucou TacheSecondaire:1 2,3000 coucou TacheSecondaire:1 2,3000 coucou TacheSecondaire:1 2,3000 coucou TacheSecondaire:1 2,3000 coucou TacheSecondaire:2 3,4000 hello TacheSecondaire:2 3,4000 hello TacheSecondaire:2 3,4000 hello TacheSecondaire:2 3,4000 hello TacheSecondaire:2 3,4000 hello TacheTertiaire:2 3,4000 hello TacheTertiaire:2 3,4000 hello TacheTertiaire:2 3,4000 hello TacheTertiaire:2 3,4000 hello TacheTertiaire:2 3,4000 hello TacheTertiaire:2 3,4000 hello TacheTertiaire:2 3,4000 hello TacheTertiaire:2 3,4000 hello TacheTertiaire:2 3,4000 hello TacheTertiaire:2 3,4000 hello