Le fichier source est ${UPS_HOME}/upsedi/demo/${UPS_LANGUAGE}/valider.upl.
upscmp Source=valider.upl
valider
upssng Source=valider.upl
Source Composant "Exemple de validation et de rejet de l'importation" Version 4.0.0;
ImporterModule UpsEdi(<UpsEdi.upi>, ImporterDefinitions);
Type Employe Defaut
/*****************/
Nom : Caractere;
Numero : Entier;
Salaire : Reel;
DateDEmbauche : Date;
Constructeur();
Fin Type
Variable
/******/
LE : Nul Ou ListeDe Employe;
Procedure CreerListeDEmployes()
/*****************************/
Variable
/******/
F : Nul Ou Fichier;
Debut
F=Fichier("/tmp/essai.upd", EcritureTexte);
F.Ecrire("Echange \"valider\" Version 4.0.0 OptimiserEchange;\n");
F.Ecrire("\n");
F.Ecrire("ImporterModule\n");
F.Ecrire(" "+Global.NomModule+"(2,0,0, ImporterDefinitions);\n");
F.Ecrire("\n");
F.Ecrire("Echange\n");
F.Ecrire("Debut\n");
F.Ecrire("Employe NumeroObjet 1(Caractere NumeroObjet 2(\"scott\"),7724,1000.0,Date NumeroObjet 3(12,1,1980,0,0,0,0));\n");
F.Ecrire("Employe NumeroObjet 4(Caractere NumeroObjet 5(\"allen\"),7832,2000.0,Date NumeroObjet 6(13,2,1981,0,0,0,0));\n");
F.Ecrire("Employe NumeroObjet 7(Caractere NumeroObjet 8(\"smith\"),7948,1400.0,Date NumeroObjet 9(14,3,1982,0,0,0,0));\n");
F.Ecrire("Employe NumeroObjet 10(Caractere NumeroObjet 11(\"king\"),7964,2000.0,Date NumeroObjet 12(15,4,1983,0,0,0,0));\n");
F.Ecrire("Employe NumeroObjet 13(Caractere NumeroObjet 14(\"scott\"),7725,1001.0,Date NumeroObjet 15(16,5,1984,0,0,0,0));\n");
F.Ecrire("Employe NumeroObjet 16(Caractere NumeroObjet 17(\"allen\"),7833,2001.0,Date NumeroObjet 18(17,6,1985,0,0,0,0));\n");
F.Ecrire("Employe NumeroObjet 19(Caractere NumeroObjet 20(\"smith\"),7949,1401.0,Date NumeroObjet 21(18,7,1986,0,0,0,0));\n");
F.Ecrire("Fin Echange\n");
F.Fermer();
Fin Procedure
Procedure CreerListeDEmployes2()
/*****************************/
Variable
/******/
F : Nul Ou Fichier;
Debut
F=Fichier("/tmp/essai2.upd", EcritureTexte);
F.Ecrire("Echange \"valider\" Version 4.0.0 NePasOptimiserEchange;\n");
F.Ecrire("\n");
F.Ecrire("ImporterModule\n");
F.Ecrire(" "+Global.NomModule+"(2,0,0, ImporterDefinitions);\n");
F.Ecrire("\n");
F.Ecrire("Echange\n");
F.Ecrire("Debut\n");
F.Ecrire("Employe(\"scott\",7724,1000.0,Date(12,1,1980,0,0,0,0));\n");
F.Ecrire("Employe(\"allen\",7832,2000.0,Date(13,2,1981,0,0,0,0));\n");
F.Ecrire("Employe(\"smith\",7948,1400.0,Date(14,3,1982,0,0,0,0));\n");
F.Ecrire("Employe(\"king\",7964,2000.0,Date(15,4,1983,0,0,0,0));\n");
F.Ecrire("Employe(\"scott\",7725,1001.0,Date(16,5,1984,0,0,0,0));\n");
F.Ecrire("Employe(\"allen\",7833,2001.0,Date(17,6,1985,0,0,0,0));\n");
F.Ecrire("Employe(\"smith\",7949,1401.0,Date(18,7,1986,0,0,0,0));\n");
F.Ecrire("Fin Echange\n");
F.Fermer();
Fin Procedure
Procedure ListerEmployes()
/************************/
Variable
/******/
E : Nul Ou Employe;
Debut
Pour E=LE.ParcoursAuDebut() JusquA LE.DernierElement() Faire
Ecran.Ecrire(E.Nom+" "+Caractere(E.Numero)+" "+Caractere(E.Salaire)+" "+Caractere(E.DateDEmbauche));
Fin Pour
Fin Procedure
Fonction ValiderEmploye(O : Nul Ou Objet, M : Nul Ou Caractere Sortie) Retourner Booleen
/**********************************************************************************/
Variable
/******/
E1 : Nul Ou Employe;
E2 : Nul Ou Employe;
Debut
Si O==Nul Alors
Retourner Faux;
Fin Si
Si LE==Nul Alors
Retourner Vrai;
Fin Si
E1=Employe(O);
Pour E2=LE.ParcoursAuDebut() JusquA LE.DernierElement() Faire
Si E1.Nom==E2.Nom Alors
M=E1.Nom+" existe déjà.";
Retourner Faux;
Fin Si
Fin Pour
Retourner Vrai;
Fin Fonction
Principal
/*******/
Variable
/******/
F : Nul Ou Fichier;
F2 : Nul Ou Fichier;
E : Nul Ou EchangeUps5GL;
E2 : Nul Ou Employe;
PasFini : Booleen;
Debut
CreerListeDEmployes();
F=Fichier("/tmp/essai.upd", LectureTexte);
F2=Fichier("/tmp/essai-rejet.upd", EcritureTexte);
E=EchangeUps5GL(IFlux(F), Nul, Vrai);
E.FixerValidationAutomatique(2);
E.FixerValidationEnregistrement(ValiderEmploye);
E.RejeterDans(IFlux(F2));
E.ImporterUnModule(Global,Vrai);
LE=Nul;
PasFini=Vrai;
TantQue PasFini Faire
AttraperException
E2=Employe(ImporterObjet());
LE+=E2;
TraiterException
Cas Pour ImportationImpossible Faire
Si E.FinDImportation Alors
PasFini=Faux;
Sinon
Exception.Renvoyer();
Fin Si
Fin Cas
Fin AttraperException
Fin TantQue
E=Nul;
F.Fermer();
F2.Fermer();
ListerEmployes();
Ecran.Ecrire("\n");
CreerListeDEmployes2();
F=Fichier("/tmp/essai2.upd", LectureTexte);
F2=Fichier("/tmp/essai2-rejet.upd", EcritureTexte);
E=EchangeUps5GL(IFlux(F), Nul, Faux);
E.FixerValidationAutomatique(2);
E.FixerValidationEnregistrement(ValiderEmploye);
E.RejeterDans(IFlux(F2));
E.ImporterUnModule(Global, Vrai);
LE=Nul;
PasFini=Vrai;
TantQue PasFini Faire
AttraperException
E2=Employe(ImporterObjet());
LE+=E2;
TraiterException
Cas Pour ImportationImpossible Faire
Si E.FinDImportation Alors
PasFini=Faux;
Sinon
Exception.Renvoyer();
Fin Si
Fin Cas
Fin AttraperException
Fin TantQue
E=Nul;
F.Fermer();
F2.Fermer();
ListerEmployes();
Ecran.Ecrire("\n");
Fin Principal
Echange "valider" Version 4.0.0 OptimiserEchange;
ImporterModule
/************/
valider(2,0,0, ImporterDefinitions);
Echange
/*****/
Debut
Employe NumeroObjet 1(Caractere NumeroObjet 2("scott"), 7724, 1000.0, Date NumeroObjet 3(12,1,1980,0,0,0,0));
Employe NumeroObjet 4(Caractere NumeroObjet 5("allen"), 7832, 2000.0, Date NumeroObjet 6(13,2,1981,0,0,0,0));
Employe NumeroObjet 7(Caractere NumeroObjet 8("smith"), 7948, 1400.0, Date NumeroObjet 9(14,3,1982,0,0,0,0));
Employe NumeroObjet 10(Caractere NumeroObjet 11("king"), 7964, 2000.0, Date NumeroObjet 12(15,4,1983,0,0,0,0));
Employe NumeroObjet 13(Caractere NumeroObjet 14("scott"), 7725, 1001.0, Date NumeroObjet 15(16,5,1984,0,0,0,0));
Employe NumeroObjet 16(Caractere NumeroObjet 17("allen"), 7833, 2001.0, Date NumeroObjet 18(17,6,1985,0,0,0,0));
Employe NumeroObjet 19(Caractere NumeroObjet 20("smith"), 7949, 1401.0, Date NumeroObjet 21(18,7,1986,0,0,0,0));
Fin Echange
/* scott existe déjà. */
Employe NumeroObjet 13(Caractere NumeroObjet 14("scott"), 7725, 1001.0, Date NumeroObjet 15(16,5,1984,0,0,0,0));
/* allen existe déjà. */
Employe NumeroObjet 16(Caractere NumeroObjet 17("allen"), 7833, 2001.0, Date NumeroObjet 18(17,6,1985,0,0,0,0));
/* smith existe déjà. */
Employe NumeroObjet 19(Caractere NumeroObjet 20("smith"), 7949, 1401.0, Date NumeroObjet 21(18,7,1986,0,0,0,0));
Echange "valider" Version 4.0.0 NePasOptimiserEchange;
ImporterModule
/************/
valider(2,0,0, ImporterDefinitions);
Echange
/*****/
Debut
Employe("scott", 7724, 1000.0, Date(12,1,1980,0,0,0,0));
Employe("allen", 7832, 2000.0, Date(13,2,1981,0,0,0,0));
Employe("smith", 7948, 1400.0, Date(14,3,1982,0,0,0,0));
Employe("king", 7964, 2000.0, Date(15,4,1983,0,0,0,0));
Employe("scott", 7725, 1001.0, Date(16,5,1984,0,0,0,0));
Employe("allen", 7833, 2001.0, Date(17,6,1985,0,0,0,0));
Employe("smith", 7949, 1401.0, Date(18,7,1986,0,0,0,0));
Fin Echange
/* scott existe déjà. */
Employe("scott", 7725, 1001.0, Date(16,5,1984,0,0,0,0));
/* allen existe déjà. */
Employe("allen", 7833, 2001.0, Date(17,6,1985,0,0,0,0));
/* smith existe déjà. */
Employe("smith", 7949, 1401.0, Date(18,7,1986,0,0,0,0));