Les types de données paramétrés

Ce programme présente la déclaration et l'usage de type paramétré.

Le fichier source est ${UPS_HOME}/upssdk/demo/${UPS_LANGUAGE}/typeprm.upl.

Mode compilé

Commande de compilation

upscmp Source=typeprm.upl

Commande d'exécution

typeprm

Mode interprété

upssng Source=typeprm.upl

Fichier source

Source Composant "Exemple des définitions de types paramétrés" Version 4.0.0;

Enumere
/*****/
Type TA(PA : Type Defaut, PB : Enumere, PC : Constante) Defaut
/************************************************************/
Fin Type

Type TB(PA : Type Defaut) Defaut
/******************************/
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
/******/
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 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 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 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 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 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 Fin Pour VD.B.P1(12,Date("10-10-1968"), Bleu);
VA=VD.F3();
Ecran.Ecrire(Caractere(VA.F1()));
Fin Principal

Résultat de l'exécution

Bonjour Bleu Bonjour Blanc Bonjour Rouge Hello +0 Hello +1 Hello +2 Hello +3 Hello +4 TA.P1 TA.F1 10/10/1968 00:00:00 TA.F2 C==Bleu Bonjour Bleu Bonjour Blanc Bonjour Rouge Hello +0 Hello +1 Hello +2 Hello +3 Hello +4 TA.P1 TA.F1 TB.P2 TB.F3 10/10/1968 00:00:00 TB.P2 Bonjour Bleu Bonjour Blanc Bonjour Rouge Hello +0 Hello +1 Hello +2 Hello +3 Hello +4 TA.P1 TB.F3 TA.F1 10/10/1968 00:00:00