Validation et rejet de l'importation

Ce programme présente la validation et le rejet des données importées.

Le fichier source est ${UPS_HOME}/upsedi/demo/${UPS_LANGUAGE}/valider.upl.

Mode compilé

Commande de compilation

upscmp Source=valider.upl

Commande d'exécution

valider

Mode interprété

upssng Source=valider.upl

Fichier source

Source Composant "Exemple de validation et de rejet de l'importation" Version 4.0.0;

ImporterModule UpsEdi(<UpsEdi.upi>, ImporterDefinitions);

Type Employe Defaut
/*****************/
Fin Type

Variable
/******/
Procedure CreerListeDEmployes()
/*****************************/
Variable
/******/
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
/******/
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
/******/
Debut
Pour E=LE.ParcoursAuDebut() JusquA LE.DernierElement() Faire Fin Pour
Fin Procedure

Fonction ValiderEmploye(O : Nul Ou Objet, M : Nul Ou Caractere Sortie) Retourner Booleen
/**********************************************************************************/
Variable
/******/
Debut
Si O==Nul Alors Fin Si
Si LE==Nul Alors Fin Si
E1=Employe(O);
Pour E2=LE.ParcoursAuDebut() JusquA LE.DernierElement() Faire Fin Pour
Retourner Vrai;
Fin Fonction

Principal
/*******/
Variable
/******/
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 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 Fin TantQue
E=Nul;
F.Fermer();
F2.Fermer();
ListerEmployes();
Ecran.Ecrire("\n");
Fin Principal

Fichier de données

Echange optimisé

Données initiales

Echange "valider" Version 4.0.0 OptimiserEchange;

ImporterModule
/************/
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

Données rejetées

/* 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 non optimisé

Données initiales

Echange "valider" Version 4.0.0 NePasOptimiserEchange;

ImporterModule
/************/
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

Données rejetées

/* 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));

Résultat de l'exécution

scott 7,724 1,000.0000 12/01/1980 00:00:00 allen 7,832 2,000.0000 13/02/1981 00:00:00 smith 7,948 1,400.0000 14/03/1982 00:00:00 king 7,964 2,000.0000 15/04/1983 00:00:00 scott 7,724 1,000.0000 12/01/1980 00:00:00 allen 7,832 2,000.0000 13/02/1981 00:00:00 smith 7,948 1,400.0000 14/03/1982 00:00:00 king 7,964 2,000.0000 15/04/1983 00:00:00