Le fichier source est ${UPS_HOME}/upssdk/demo/${UPS_LANGUAGE}/contrainte.upl.
upscmp Source=contrainte.upl
contrainte
upssng Source=contrainte.upl
Source Composant "Exemple sur les contraintes" Version 4.0.0;
Enumere
/******/
Couleur Dans (Bleu, Blanc, Rouge);
Type TypeA=Entier Contrainte Objet>=1;
Type TypeB=Entier Contrainte Objet>2;
Type TypeC=Reel Contrainte Objet<=3;
Type TypeD=Reel Contrainte Objet<4;
Type TypeE=Entier Contrainte Objet Entre 2 Et 10;
Type TypeF=Reel Contrainte Objet Dans (1.0, 2.0, 3.0, 4.0);
Type TypeG=Caractere Contrainte Objet>="ABCD";
Type TypeH=Caractere Contrainte Objet Entre "A" Et "Z";
Type TypeI=Caractere Contrainte Objet Dans ("A", "B",
"C", "D", "E");
Type TypeJ Defaut
/***************/
A : TypeA;
B : TypeB;
C : TypeC;
D : TypeD;
E : TypeE;
F : TypeF;
G : TypeG;
H : TypeH;
I : TypeI;
Constructeur();
Fin Type
Type TypeJBis Defaut Transactionnel
/*********************************/
A:TypeA;
B:TypeB;
C:TypeC;
D:TypeD;
E:TypeE;
F:TypeF;
G:TypeG;
H:TypeH;
I:TypeI;
Constructeur();
Fin Type
Type TypeM Defaut
/***************/
Selon A : Couleur Faire
Cas CasBleu Pour Bleu Faire
B : Entier;
Fin Cas
Defaut
C : Entier;
Fin Defaut
Fin Selon
Constructeur();
Fin Type
Type TypeN Defaut
/***************/
A : Nul Ou Caractere;
B : Nul Ou Caractere;
Constructeur();
Fin Type
Type TypeO=TypeN Contrainte();
Type TypeP=Caractere Contrainte Objet Comme "a[xyz]c";
Prive :
Contrainte TypeO()
/****************/
Debut
Si (A!=Nul) OuExclusif (B!=Nul) Alors
Retourner Vrai;
Fin Si
Retourner Faux;
Fin Contrainte
Public :
Procedure P(A : Entier Entree Sortie, B : Reel Entree Sortie,
C : Caractere Entree Sortie)
/**********************************************************************************/
Debut
Ecran.Ecrire("P");
A=3;
B=4.0;
C="C";
Fin Procedure
Fonction F() Retourner Booleen
/****************************/
Debut
Retourner Vrai;
Fin Fonction
Fonction G(C : Couleur) Retourner Couleur
/***************************************/
Debut
Retourner C;
Fin Fonction
Principal
/*******/
Variable
/******/
VA : TypeA;
VB : TypeB;
VC : TypeC;
VD : TypeD;
VE : TypeE;
VF : TypeF;
VG : TypeG;
VH : TypeH;
VI : TypeI;
VJ : Nul Ou TypeJ;
VJBis : Nul Ou TypeJBis;
VK : Nul Ou Caractere;
VL : Caractere;
VM : TypeM;
VO : Nul Ou TypeO;
VP : TypeP;
Debut
VA=2;
Ecran.Ecrire(VA);
VB=3;
Ecran.Ecrire(VB);
VC=2.71;
Ecran.Ecrire(VC);
VD=3.14;
Ecran.Ecrire(VD);
VE=3;
Ecran.Ecrire(VE);
VF=2.0;
Ecran.Ecrire(VF);
VG="ZZZZ";
Ecran.Ecrire(VG);
VH="C";
Ecran.Ecrire(VH);
VI="C";
Ecran.Ecrire(VI);
VP="axc";
Ecran.Ecrire(VP);
Ecran.Ecrire("\n");
VA=2;
VF=3.0;
VI="B";
P(VA, VF, VI);
Ecran.Ecrire(VA);
Ecran.Ecrire(VF);
Ecran.Ecrire(VI);
Ecran.Ecrire("\n");
VJ=TypeJ();
VJ.A=2;
Ecran.Ecrire(VJ.A);
VJ.B=3;
Ecran.Ecrire(VJ.B);
VJ.C=2.71;
Ecran.Ecrire(VJ.C);
VJ.D=3.14;
Ecran.Ecrire(VJ.D);
VJ.E=3;
Ecran.Ecrire(VJ.E);
VJ.F=2.0;
Ecran.Ecrire(VJ.F);
VJ.G="ZZZZ";
Ecran.Ecrire(VJ.G);
VJ.H="C";
Ecran.Ecrire(VJ.H);
VJ.I="C";
Ecran.Ecrire(VJ.I);
Ecran.Ecrire("\n");
TypeJBis.ActiverContrainte(ContrainteValidation);
VJBis=TypeJBis();
VJBis.A=2;
VJBis.B=3;
VJBis.C=2.71;
VJBis.D=3.14;
VJBis.E=3;
VJBis.F=2.0;
VJBis.G="ZZZZ";
VJBis.H="C";
VJBis.I="C";
TachePrincipale.TransactionCourante.Valider();
Ecran.Ecrire(VJBis.A);
Ecran.Ecrire(VJBis.B);
Ecran.Ecrire(VJBis.C);
Ecran.Ecrire(VJBis.D);
Ecran.Ecrire(VJBis.E);
Ecran.Ecrire(VJBis.F);
Ecran.Ecrire(VJBis.G);
Ecran.Ecrire(VJBis.H);
Ecran.Ecrire(VJBis.I);
Ecran.Ecrire("\n");
Si F() Alors
VK="Bonjour ";
Fin Si
VL=VK+"le monde";
Ecran.Ecrire(VL);
Ecran.Ecrire("\n");
VM.A=G(Bleu);
VM.A.CasBleu.B=10;
Ecran.Ecrire(VM.A.CasBleu.B);
VM.A=G(Rouge);
VM.A.Defaut.C=20;
Ecran.Ecrire(VM.A.Defaut.C);
Ecran.Ecrire("\n");
TypeO.ActiverContrainte(ContrainteValidation);
VO=TypeO();
VO.A="Bonjour le monde";
VO.B=Nul;
TypeO.ActiverContrainte(ContrainteImmediate);
Ecran.Ecrire(VO.A);
Fin Principal