Le fichier source est ${UPS_HOME}/upsedi/demo/${UPS_LANGUAGE}/format5gl.upl.
upscmp Source=format5gl.upl
format5gl
upssng Source=format5gl.upl
Source Composant "Exemple d'emploi de l'import/export" Version 4.0.0;
ImporterModule
/************/
UpsEdi(<UpsEdi.upi>, ImporterDefinitions);
Type Employe Defaut
/*****************/
Nom : Caractere;
Numero : Entier;
Salaire : Reel;
Constructeur();
Fin Type
Variable
/******/
LE : Nul Ou ListeDe Employe;
Procedure CreerListeDEmployes()
/*****************************/
Variable
/******/
E : Nul Ou Employe;
I : Entier;
Debut
Pour I=0 JusquA 10 Faire
E=Employe();
E.Nom="scott"+Caractere(I);
E.Numero=7724+I;
E.Salaire=1000.00+I;
E.DateDEmbauche=Date("12-01-1980");
LE+=E;
E=Employe();
E.Nom="allen"+Caractere(I);
E.Numero=7832+I;
E.Salaire=1200.00+I;
E.DateDEmbauche=Date("13-02-1981");
LE+=E;
E=Employe();
E.Nom="smith"+Caractere(I);
E.Numero=7948+I;
E.Salaire=1400.00+I;
E.DateDEmbauche=Date("14-03-1982");
LE+=E;
E=Employe();
E.Nom="king"+Caractere(I);
E.Numero=7964+I;
E.Salaire=2000.00+I;
E.DateDEmbauche=Date("15-04-1983");
LE+=E;
Fin Pour
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 CritereEmploye(O : Nul Ou Objet) Retourner Booleen
/*******************************************************/
Variable
/******/
E : Nul Ou Employe;
Debut
Si O==Nul Alors
Retourner Faux;
Fin Si
E=Employe(O);
Retourner E.Nom Comme "scott*";
Fin Fonction
Principal
/*******/
Variable
/******/
F : Nul Ou Fichier;
E : Nul Ou EchangeUps5GL;
E2 : Nul Ou Employe;
PasFini : Booleen;
Debut
Ecran.Ecrire("Base de données");
Ecran.Ecrire("===============");
CreerListeDEmployes();
ListerEmployes();
Ecran.Ecrire("\n");
F=Fichier("/tmp/essai.upd", EcritureTexte);
E=EchangeUps5GL(IFlux(F), Nul, Faux);
E.ImporterUnModule(Global, Vrai);
Pour E2=LE.ParcoursAuDebut() JusquA LE.DernierElement() Pas LE.Suivant() Faire
ExporterObjet(E2);
Fin Pour
E=Nul;
F.Fermer();
Ecran.Ecrire("Importation complète");
Ecran.Ecrire("====================");
F=Fichier("/tmp/essai.upd", LectureTexte);
E=EchangeUps5GL(IFlux(F));
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();
ListerEmployes();
Ecran.Ecrire("\n");
Ecran.Ecrire("A partir du 20èm rang");
Ecran.Ecrire("=====================");
F=Fichier("/tmp/essai.upd", LectureTexte);
E=EchangeUps5GL(IFlux(F));
E.FiltrerAPartirDe(20);
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();
ListerEmployes();
Ecran.Ecrire("\n");
Ecran.Ecrire("20 premiers rangs");
Ecran.Ecrire("=================");
F=Fichier("/tmp/essai.upd", LectureTexte);
E=EchangeUps5GL(IFlux(F));
E.FiltrerJusquA(20);
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();
ListerEmployes();
Ecran.Ecrire("\n");
Ecran.Ecrire("Entre 10 et 30èm rang");
Ecran.Ecrire("=====================");
F=Fichier("/tmp/essai.upd", LectureTexte);
E=EchangeUps5GL(IFlux(F));
E.FiltrerEntre(10,30);
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();
ListerEmployes();
Ecran.Ecrire("\n");
Ecran.Ecrire("scott uniquement");
Ecran.Ecrire("================");
F=Fichier("/tmp/essai.upd", LectureTexte);
E=EchangeUps5GL(IFlux(F));
E.FiltrerSelon(CritereEmploye);
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();
ListerEmployes();
Ecran.Ecrire("\n");
Fin Principal
Echange "Exemple" Version 4.0.0 NePasOptimiserEchange;
ImporterModule
format5gl(2,0,0, ImporterDefinitions);
Echange
Debut
Employe("scott0", 7724, 1000.0, Date(12, 1, 1980, 0, 0, 0, 0));
Employe("allen0", 7832, 2000.0, Date(13, 2, 1981, 0, 0, 0, 0));
Employe("smith0", 7948, 1400.0, Date(14, 3, 1982, 0, 0, 0, 0));
Employe("king0", 7964, 2000.0, Date(15, 4, 1983, 0, 0, 0, 0));
Employe("scott1", 7725, 1001.0, Date(12, 1, 1980, 0, 0, 0, 0));
Employe("allen1", 7833, 2001.0, Date(13, 2, 1981, 0, 0, 0, 0));
Employe("smith1", 7949, 1401.0, Date(14, 3, 1982, 0, 0, 0, 0));
Employe("king1", 7965, 2001.0, Date(15, 4, 1983, 0, 0, 0, 0));
Employe("scott2", 7726, 1002.0, Date(12, 1, 1980, 0, 0, 0, 0));
Employe("allen2", 7834, 2002.0, Date(13, 2, 1981, 0, 0, 0, 0));
Employe("smith2", 7950, 1402.0, Date(14, 3, 1982, 0, 0, 0, 0));
Employe("king2", 7966, 2002.0, Date(15, 4, 1983, 0, 0, 0, 0));
Employe("scott3", 7727, 1003.0, Date(12, 1, 1980, 0, 0, 0, 0));
Employe("allen3", 7835, 2003.0, Date(13, 2, 1981, 0, 0, 0, 0));
Employe("smith3", 7951, 1403.0, Date(14, 3, 1982, 0, 0, 0, 0));
Employe("king3", 7967, 2003.0, Date(15, 4, 1983, 0, 0, 0, 0));
Employe("scott4", 7728, 1004.0, Date(12, 1, 1980, 0, 0, 0, 0));
Employe("allen4", 7836, 2004.0, Date(13, 2, 1981, 0, 0, 0, 0));
Employe("smith4", 7952, 1404.0, Date(14, 3, 1982, 0, 0, 0, 0));
Employe("king4", 7968, 2004.0, Date(15, 4, 1983, 0, 0, 0, 0));
Employe("scott5", 7729, 1005.0, Date(12, 1, 1980, 0, 0, 0, 0));
Employe("allen5", 7837, 2005.0, Date(13, 2, 1981, 0, 0, 0, 0));
Employe("smith5", 7953, 1405.0, Date(14, 3, 1982, 0, 0, 0, 0));
Employe("king5", 7969, 2005.0, Date(15, 4, 1983, 0, 0, 0, 0));
Employe("scott6", 7730, 1006.0, Date(12, 1, 1980, 0, 0, 0, 0));
Employe("allen6", 7838, 2006.0, Date(13, 2, 1981, 0, 0, 0, 0));
Employe("smith6", 7954, 1406.0, Date(14, 3, 1982, 0, 0, 0, 0));
Employe("king6", 7970, 2006.0, Date(15, 4, 1983, 0, 0, 0, 0));
Employe("scott7", 7731, 1007.0, Date(12, 1, 1980, 0, 0, 0, 0));
Employe("allen7", 7839, 2007.0, Date(13, 2, 1981, 0, 0, 0, 0));
Employe("smith7", 7955, 1407.0, Date(14, 3, 1982, 0, 0, 0, 0));
Employe("king7", 7971, 2007.0, Date(15, 4, 1983, 0, 0, 0, 0));
Employe("scott8", 7732, 1008.0, Date(12, 1, 1980, 0, 0, 0, 0));
Employe("allen8", 7840, 2008.0, Date(13, 2, 1981, 0, 0, 0, 0));
Employe("smith8", 7956, 1408.0, Date(14, 3, 1982, 0, 0, 0, 0));
Employe("king8", 7972, 2008.0, Date(15, 4, 1983, 0, 0, 0, 0));
Employe("scott9", 7733, 1009.0, Date(12, 1, 1980, 0, 0, 0, 0));
Employe("allen9", 7841, 2009.0, Date(13, 2, 1981, 0, 0, 0, 0));
Employe("smith9", 7957, 1409.0, Date(14, 3, 1982, 0, 0, 0, 0));
Employe("king9", 7973, 2009.0, Date(15, 4, 1983, 0, 0, 0, 0));
Employe("scott10", 7734, 1010.0, Date(12, 1, 1980, 0, 0, 0, 0));
Employe("allen10", 7842, 2010.0, Date(13, 2, 1981, 0, 0, 0, 0));
Employe("smith10", 7958, 1410.0, Date(14, 3, 1982, 0, 0, 0, 0));
Employe("king10", 7974, 2010.0, Date(15, 4, 1983, 0, 0, 0, 0));
Fin Echange