Le fichier source est ${UPS_HOME}/upssdk/demo/${UPS_LANGUAGE}/typeprm.upl.
upscmp Source=typeprm.upl
typeprm
upssng Source=typeprm.upl
Source Composant "Exemple des définitions de types paramétrés" Version 4.0.0;
Enumere
/*****/
Couleur Dans (Bleu, Blanc, Rouge);
Type TA(PA : Type Defaut, PB : Enumere, PC : Constante)
Defaut
/************************************************************/
D : Entier;
E : Nul Ou PA;
F : PB;
G : Tableau[PB] De Caractere;
H : Tableau[PC] De Caractere;
Constructeur(PA2 : Nul Ou Type, PB2 : Enumere, PC2 :
Entier);
Procedure P1(X : Entier, Y : Nul Ou PA, Z : PB);
Fonction F1() Retourner Nul Ou PA;
Fonction F2() Retourner PB;
Fin Type
Type TB(PA : Type Defaut) Defaut
/******************************/
B : Nul Ou PA;
Constructeur(PA2 : Nul Ou Type, PB2 : Enumere, PC2 :
Entier);
Procedure P2(X : Nul Ou PA);
Fonction F3() Retourner Nul Ou PA;
Fin Type
Procedure TA.P1(X : Entier, Y : Nul Ou PA, Z : PB)
/************************************************/
Debut
Ecran.Ecrire("TA.P1");
D=X;
E=Y;
F=Z;
Fin Procedure
Fonction TA.F1() Retourner Nul Ou PA
/**********************************/
Debut
Ecran.Ecrire("TA.F1");
Retourner E;
Fin Fonction
Fonction TA.F2() Retourner PB
/***************************/
Debut
Ecran.Ecrire("TA.F2");
Retourner F;
Fin Fonction
Procedure TB.P2(X : Nul Ou PA)
/**************************/
Debut
Ecran.Ecrire("TB.P2");
B=X;
Fin Procedure
Fonction TB.F3() Retourner Nul Ou PA
/**********************************/
Debut
Ecran.Ecrire("TB.F3");
Retourner B;
Fin Fonction
Principal
/*******/
Variable
/******/
C : Couleur;
VA : Nul Ou TA(Date, Couleur, 5);
VB : Nul Ou TA(Nul Ou TB(Date), Couleur, 5);
VC : Nul Ou TB(Nul Ou Date);
VD : Nul Ou TB(Nul Ou TA(Date, Couleur, 5));
I : Entier;
Debut
VA=TA(Date, Couleur, 5);
VA.G[Bleu]="Bonjour Bleu";
VA.G[Blanc]="Bonjour Blanc";
VA.G[Rouge]="Bonjour Rouge";
Pour I=VA.H.BorneMin JusquA VA.H.BorneMax Faire
VA.H[I]="Hello +"+Caractere(I);
Fin Pour
Ecran.Ecrire(VA.G[Bleu]);
Ecran.Ecrire(VA.G[Blanc]);
Ecran.Ecrire(VA.G[Rouge]);
Pour I=VA.H.BorneMin JusquA VA.H.BorneMax Faire
Ecran.Ecrire(VA.H[I]);
Fin Pour
VA.P1(12,Date("10-10-1968"), Bleu);
Ecran.Ecrire(Caractere(VA.F1()));
C=VA.F2();
Ecran.Ecrire("\n");
VB=TA(TB, Couleur, 5);
VB.G[Bleu]="Bonjour Bleu";
VB.G[Blanc]="Bonjour Blanc";
VB.G[Rouge]="Bonjour Rouge";
Pour I=VB.H.BorneMin JusquA VB.H.BorneMax Faire
VB.H[I]="Hello +"+Caractere(I);
Fin Pour
Ecran.Ecrire(VB.G[Bleu]);
Ecran.Ecrire(VB.G[Blanc]);
Ecran.Ecrire(VB.G[Rouge]);
Pour I=VB.H.BorneMin JusquA VB.H.BorneMax Faire
Ecran.Ecrire(VB.H[I]);
Fin Pour
VB.P1(12, TB(Date), Bleu);
VC=VB.F1();
VC.P2(Date("10-10-1968"));
Ecran.Ecrire(Caractere(VC.F3()));
Ecran.Ecrire("\n");
VD=TB(TA);
VD.P2(TA(Date, Couleur, 5));
VD.B.G[Bleu]="Bonjour Bleu";
VD.B.G[Blanc]="Bonjour Blanc";
VD.B.G[Rouge]="Bonjour Rouge";
Pour I=VD.B.H.BorneMin JusquA VD.B.H.BorneMax Faire
VD.B.H[I]="Hello +"+Caractere(I);
Fin Pour
Ecran.Ecrire(VD.B.G[Bleu]);
Ecran.Ecrire(VD.B.G[Blanc]);
Ecran.Ecrire(VD.B.G[Rouge]);
Pour I=VD.B.H.BorneMin JusquA VD.B.H.BorneMax Faire
Ecran.Ecrire(VD.B.H[I]);
Fin Pour
VD.B.P1(12,Date("10-10-1968"), Bleu);
VA=VD.F3();
Ecran.Ecrire(Caractere(VA.F1()));
Fin Principal