Le fichier source est ${UPS_HOME}/upssdk/demo/${UPS_LANGUAGE}/dictionnaire.upl.
Pour exécuter, ne pas oublier de créer un entrepôt MonEntrepot dans la configuration du noyau d'exécution. Ce programme nécessite sa définition.
upscmp Source=dictionnaire.upl AdaptateurDictionnaire=Oui AdaptateurServeurUpsNet=Oui
dictionnaire
upssng Source=dictionnaire.upl
Source Composant "Exemple d'emploi des dictionnaires" Version 4.0.0;
Enumere
/*****/
Public :
   A1 Dans (ValA1, ValA2, ValA3);
Prive :
   B2 Dans (ValB1, ValB2);
Entrepot
/*******/
Public :
   MonEntrepot;
Public :
/*****/
Type C1 Defaut
/************/
Public :
/******/
   CA1 : Booleen;
   CB1 : Nul Ou Booleen;
   CC1 : Entier;
   CD1 : Nul Ou Entier;
   CE1 : Reel;
   CF1 : Nul Ou Reel;
   CG1 : Caractere;
   CH1 : Nul Ou Caractere;
Prive :
/******/
   CA2 : Booleen;
   CB2 : Nul Ou Booleen;
   CC2 : Entier;
   CD2 : Nul Ou Entier;
   CE2 : Reel;
   CF2 : Nul Ou Reel;
   CG2 : Caractere;
   CH2 : Nul Ou Caractere;
Public :
/******/
   Constructeur();
   Procedure Ecrire1(Prm : Nul Ou Booleen);
   Procedure Ecrire2(Prm : Nul Ou Entier);
   Procedure Ecrire3(Prm : Nul Ou Reel);
   Procedure Ecrire3(Prm : Nul Ou Caractere);
Fin Type
Type C2 Defaut
/************/
   CA1 : Entier;
Fin Type
Variable
/******/
Public :
/******/
   VA1 : Booleen;
   VB1 : Nul Ou Booleen;
   VC1 : Entier;
   VD1 : Nul Ou Entier;
   VE1 : Reel;
   VF1 : Nul Ou Reel;
   VG1 : Caractere;
   VH1 : Nul Ou Caractere;
Prive :
/******/
   VA2 : Booleen;
   VB2 : Nul Ou Booleen;
   VC2 : Entier;
   VD2 : Nul Ou Entier;
   VE2 : Reel;
   VF2 : Nul Ou Reel;
   VG2 : Caractere;
   VH2 : Nul Ou Caractere;
Exception
/*******/
Public :
/******/
   E1(1, TransactionInchangee);
Prive :
/*****/
   E2(2, TransactionInchangee);
Procedure C1.Ecrire1(Prm : Nul Ou Booleen)
/****************************************/
Debut
Ecran.Ecrire(Prm);
Fin Procedure
Procedure C1.Ecrire2(Prm : Nul Ou Entier)
/***************************************/
Debut
Ecran.Ecrire(Prm);
Fin Procedure
Procedure C1.Ecrire3(Prm : Nul Ou Reel)
/*************************************/
Debut
Ecran.Ecrire(Prm);
Fin Procedure
Procedure C1.Ecrire3(Prm : Nul Ou Caractere)
/******************************************/
Debut
Ecran.Ecrire(Prm);
Fin Procedure
Procedure Appel1()
/****************/
Debut
Ecran.Ecrire("Appel1();");
Fin Procedure
Procedure Appel2(Prm1 : Booleen, Prm2 : Entier, Prm3 : Reel, Prm4 : 
Caractere Entree Sortie)
/*****************************************************************************************/
Debut
Ecran.Ecrire("Appel2("+Caractere(Prm1)+","+Caractere(Prm2)+","+Caractere(Prm3)+","+Prm4+");");
Prm4="hello Appel2";
Fin Procedure
Fonction Appel3() Retourner Booleen
/*********************************/
Debut
Ecran.Ecrire("Appel3();");
Retourner Vrai;
Fin Fonction
Fonction Appel4(Prm1 : Booleen, Prm2 : Entier, Prm3 : Reel, Prm4 : 
Caractere Entree Sortie) Retourner Booleen
/***********************************************************************************************************/
Debut
Ecran.Ecrire("Appel4("+Caractere(Prm1)+","+Caractere(Prm2)+","+Caractere(Prm3)+","+Prm4+");");
Prm4="hello Appel4";
Retourner Vrai;
Fin Fonction
Fonction Appel5() Retourner Entier
/********************************/
Debut
Ecran.Ecrire("Appel5();");
Retourner 10;
Fin Fonction
Fonction Appel6(Prm1 : Booleen, Prm2 : Entier, Prm3 : Reel, Prm4 : 
Caractere Entree Sortie) Retourner Entier
/**************************************************************************************************/
Debut
Ecran.Ecrire("Appel6("+Caractere(Prm1)+","+Caractere(Prm2)+","+Caractere(Prm3)+","+Prm4+");");
Prm4="hello Appel6";
Retourner 10;
Fin Fonction
Fonction Appel7() Retourner Reel
/******************************/
Debut
Ecran.Ecrire("Appel7();");
Retourner 11.11;
Fin Fonction
Fonction Appel8(Prm1 : Booleen, Prm2 : Entier, Prm3 : Reel, Prm4 : 
Caractere Entree Sortie) Retourner Reel
/********************************************************************************************************/
Debut
Ecran.Ecrire("Appel8("+Caractere(Prm1)+","+Caractere(Prm2)+","+Caractere(Prm3)+","+Prm4+");");
Prm4="hello Appel8";
Retourner 11.11;
Fin Fonction
Fonction Appel9() Retourner Caractere
/***********************************/
Debut
Ecran.Ecrire("Appel9();");
Retourner "schuss";
Fin Fonction
Fonction Appel10(Prm1 : Booleen, Prm2 : Entier, Prm3 : Reel, Prm4 : 
Caractere Entree Sortie) Retourner Caractere
/******************************************************************************************************/
Debut
Ecran.Ecrire("Appel10("+Caractere(Prm1)+","+Caractere(Prm2)+","+Caractere(Prm3)+","+Prm4+");");
Prm4="hello Appel10";
Retourner "schuss";
Fin Fonction
Principal
/*******/
Variable
   Numero : Entier;
   Numero2 : Entier;
   P : Nul Ou Caractere;
   P2 : Nul Ou Caractere;
   A : Nul Ou Caractere;
   Pr : Nul Ou Entrepot;
   T : Nul Ou Type;
   E : Nul Ou<
   Exception;
   Ap : Nul Ou Appel;
   EstNul : Booleen;
   L : Nul Ou ListeDe Nul Ou Objet;
   L2 : Nul Ou ListeDe Nul Ou Objet;
Debut
L=ListeDe(Objet(Vrai));
L+=Objet(5);
L+=Objet(3.14159);
L+=Objet("salut");
P=Global.EnumererEnumeres(++Numero, A);
TantQue P!=Nul Faire
   Ecran.Ecrire("Enumere="+P+":"+A);
   P2=Global.EnumererValeursEnumeres(P, ++Numero2, A);
   TantQue P2!=Nul Faire
   
      Ecran.Ecrire("ValeurEnumere="+P2+":"+A);
      P2=Global.EnumererValeursEnumeres(P, ++Numero2, A);
   
Fin TantQue
   Numero2=0;
   P=Global.EnumererEnumeres(++Numero,A);
Fin TantQue
Ecran.Ecrire("\n");
Numero=0;
Pr=Global.EnumererEntrepots(++Numero, A);
TantQue Pr!=Nul Faire
   Ecran.Ecrire("Entrepot="+Pr.NomEntrepot+":"+A);
   Pr=Global.EnumererEntrepots(++Numero, A);
Fin TantQueBR>
Ecran.Ecrire("\n");
Numero=0;
T=Global.EnumererTypes(++Numero, A);
TantQue T!=Nul Faire
   Ecran.Ecrire("Type="+T.NomType+":"+A);
   T=Global.EnumererTypes(++Numero, A);
Fin TantQue
Ecran.Ecrire("\n");
Numero=0;
P=Global.EnumererVariables(++Numero, T, EstNul, A, ?);
TantQue P!=Nul Faire 
   Ecran.Ecrire("Variable="+P+" "+T.NomType+" "+Caractere(EstNul)+":"+A);
   P=Global.EnumererVariables(++Numero, T,EstNul, A, ?);
Fin TantQue
Ecran.Ecrire("\n");
Numero=0;
E=Global.EnumererExceptions(++Numero, A);
TantQue E!=Nul Faire 
   Ecran.Ecrire("Exception="+E.NomException+":"+A);
   E=Global.EnumererExceptions(++Numero, A);
Fin TantQue
Ecran.Ecrire("\n");
Numero=0;
Ap=C1.EnumererMethodes(++Numero, P, A);
TantQue Ap!=Nul Faire 
   Ecran.Ecrire("Methode="+P+":"+A);
   P=Ap.EnumererParametres(++Numero2, T, EstNul, A, ?, ?, ?);
   TantQue P!=Nul Faire 
   
      Ecran.Ecrire("Parametre="+P+" "+T.NomType+" "+Caractere(EstNul)+":"+A);
      P=Ap.EnumererParametres(++Numero2, T, EstNul, A, ?, ?, ?);
   
Fin TantQue
   Numero2=0;
   Ap=C1.EnumererMethodes(++Numero, P, A);
Fin TantQue
Ecran.Ecrire("\n");
Numero=0;
Ap=Global.EnumererAppels(++Numero, P, A);
TantQue Ap!=Nul Faire 
   Ecran.Ecrire("Methode="+P+":"+A);
   P2=Ap.EnumererParametres(++Numero2, T,EstNul, A, ?, ?, ?);
   TantQue P2!=Nul Faire
   
      Ecran.Ecrire("Parametre="+P2+" "+T.NomType+" "+Caractere(EstNul)+":"+A);
      P2=Ap.EnumererParametres(++Numero2, T, EstNul, A, ?, ?, ?);
   
Fin TantQue
   Numero2=0;
   Selon P Faire
   
      Cas Pour "Appel1" Faire
      
         Ap.ExecuterProcedure(L2);
      
Fin Cas
      Cas Pour "Appel2" Faire
      
         Ap.ExecuterProcedure(L);
      
Fin Cas
      Cas Pour "Appel3" Faire
      
         Ecran.Ecrire(Caractere(Booleen(Ap.ExecuterFonction(L2))));
      
Fin Cas
      Cas Pour "Appel4" Faire
      
         Ecran.Ecrire(Caractere(Booleen(Ap.ExecuterFonction(L))));
      
Fin Cas
      Cas Pour "Appel5" Faire
      
         Ecran.Ecrire(Caractere(Entier(Ap.ExecuterFonction(L2))));
      
Fin Cas
      Cas Pour "Appel6" Faire
      
         Ecran.Ecrire(Caractere(Entier(Ap.ExecuterFonction(L))));
      
Fin Cas
      Cas Pour "Appel7" Faire
      
         Ecran.Ecrire(Caractere(Reel(Ap.ExecuterFonction(L2))));
      
Fin Cas
      Cas Pour "Appel8" Faire
      
         Ecran.Ecrire(Caractere(Reel(Ap.ExecuterFonction(L))));
      
Fin Cas
      Cas Pour "Appel9" Faire
      
         Ecran.Ecrire(Caractere(Ap.ExecuterFonction(L2)));
      
Fin Cas
      Cas Pour "Appel10" Faire
      
         Ecran.Ecrire(Caractere(Ap.ExecuterFonction(L)));
      
Fin Cas
Fin Selon
   Ap=Global.EnumererAppels(++Numero, P, A);
Fin TantQue
Ecran.Ecrire("\n");
Global.EcrireVariable("VA1", Objet(Vrai));
Ecran.Ecrire("VA1="+Caractere(VA1));
Ecran.Ecrire("VA1="+Caractere(Booleen(Global.LireVariable("VA1"))));
Global.EcrireVariable("VB1", Objet(Vrai));
Ecran.Ecrire("VB1="+Caractere(VB1));
Ecran.Ecrire("VB1="+Caractere(Booleen(Global.LireVariable("VB1"))));
Global.EcrireVariable("VC1", Objet(10));
Ecran.Ecrire("VC1="+Caractere(VC1));
Ecran.Ecrire("VC1="+Caractere(Entier(Global.LireVariable("VC1"))));
Global.EcrireVariable("VD1", Objet(20));
Ecran.Ecrire("VD1="+Caractere(VD1));
Ecran.Ecrire("VD1="+Caractere(Entier(Global.LireVariable("VD1"))));
Global.EcrireVariable("VE1", Objet(11.11));
Ecran.Ecrire("VE1="+Caractere(VE1));
Ecran.Ecrire("VE1="+Caractere(Reel(Global.LireVariable("VE1"))));
Global.EcrireVariable("VF1", Objet(22.22));
Ecran.Ecrire("VF1="+Caractere(VF1));
Ecran.Ecrire("VF1="+Caractere(Reel(Global.LireVariable("VF1"))));
Global.EcrireVariable("VG1", Objet("coucou"));
Ecran.Ecrire("VG1="+VG1);
Ecran.Ecrire("VG1="+Caractere(Global.LireVariable("VG1")));
Global.EcrireVariable("VH1", Objet("coucou"));
Ecran.Ecrire("VH1="+VH1);
Ecran.Ecrire("VH1="+Caractere(Global.LireVariable("VH1")));
Ecran.Ecrire("\n");
Ecran.Ecrire("++VC1="+Caractere(Entier(Global.IncrementerDecrementerVariable("VC1", 
Vrai, Vrai))));
Ecran.Ecrire("++VD1="+Caractere(Entier(Global.IncrementerDecrementerVariable("VD1", 
Vrai, Vrai))));
Ecran.Ecrire("VC1--="+Caractere(Entier(Global.IncrementerDecrementerVariable("VC1", 
Faux, Faux))));
Ecran.Ecrire("VD1--="+Caractere(Entier(Global.IncrementerDecrementerVariable("VD1", 
Faux, Faux))));
Ecran.Ecrire("++VE1="+Caractere(Reel(Global.IncrementerDecrementerVariable("VE1", 
Vrai, Vrai))));
Ecran.Ecrire("++VF1="+Caractere(Reel(Global.IncrementerDecrementerVariable("VF1", 
Vrai, Vrai))));
Ecran.Ecrire("VE1--="+Caractere(Reel(Global.IncrementerDecrementerVariable("VE1", 
Faux, Faux))));
Ecran.Ecrire("VF1--="+Caractere(Reel(Global.IncrementerDecrementerVariable("VF1", 
Faux, Faux))));
Ecran.Ecrire("\n");
Fin Principal