/* exemple d'un langage de 4_génération */ GLOBAL integer: x:=15 ,i:=1 + 5,ReturnInteger,y , table: indexe occurs 20 ,ik ; struct : semaine { integer lundi,mardi, mercredi,jeudi;} table: departement occurs 10 { integer numero ; char nom :25 ; } long : table:numberPhone occurs 10 ; struct : mois { integer table:mois occurs 12 ; struct:semaine ; } struct : annee { struct : semaine ; struct :mois ;} struct: tiers { char nom: 25 := "EndUser4gl structure TABLE" , adresse:70:= "14 rue Jean Moulin "; struct:semaine; struct :annee; long codepostal := 37550 ; char ville:40 := "St avertin"; integer prout := 9999; char reference:40; float CA dec(2) := 1998 ; double CaCumul dec(2) := 1234567.123456; integer enreg := 22 ; float table :CAffaire dec(2) occurs 15 ; } float : m1 dec(2) := 100; long : wnt := 1200 ,ReturnLong; tiers Fournisseur ; tiers Client ; char : zone1:64,zone2:128 := "bergou",ReturnChar:32 , table:mois2:2 occurs 12 ; end_global Begin_Main display "------------------------------------------------------------------------- " ; display " Exemple de STRUCT " ; display "------------------------------------------------------------------------- " ; begin indexe[12] := 24 - 1 ; /* structure TIERS */ display "tiers.nom,adresse,ville,enreg:",tiers.nom ,tiers.adresse ,tiers.ville ,tiers.enreg ; tiers.semaine.lundi := 55; tiers.enreg := 12000; display " tiers.semaine.lundi, tiers.enreg.:", tiers.semaine.lundi,tiers.enreg ; enter; tiers.caffaire[12] := 444444 ; tiers.annee.mois.mois[12] := 6666 ; tiers.annee.semaine.lundi := 51 ; /* structure TIERS FOURNISSEUR */ display "Fournisseur.nom,adresse,ville,enreg:",Fournisseur.nom ,Fournisseur.adresse ,Fournisseur.ville ,Fournisseur.enreg ; display "Client.nom,adresse,ville,enreg:",Client.nom ,Client.adresse ,Client.ville ,Client.enreg ; indexe[13] := indexe[12] * 2 - 4; display " indexe[12]....dans MAIn :",indexe[12], " indexe[13]....dans MAIn :",indexe[13]; display "APPUYER SUR ENTREE POUR CONTINUER"; enter; i-- ; str_proc_display( wnt,i ) ; str_func_calcul(i) returning (y) ; display " Ajout à Y la valeur de x + 1 ", y ; enter ; /* sizeStruct des structures */ x:= sizeStruct(tiers ); display " sizeStruct(tiers ).......................",x; enter ; SysCommandWindows("c:\EndUser4gl\4gl\bin\ EndUser4gl.exe c:\EndUser4gl\4gl\hlp\Includesys EndUser\copyright. EndUser4gl" ) ; end_begin ; end_main proc str_proc_display( long vvv ,integer i ) begin_procedure Local integer : exit_trans1 ,k := 8 ,x ; table: tiersLocal occurs 50 { char nom:28 := "TABLE LOCALE DES TIERS" ; integer indice := 12 ; long code := 123 ; float ca dec(2) := 99999.99 ; } long : table:numberPhone occurs 10 ; struct : disk { integer cylindre:= 32000, segment, table:secteur occurs 3;} float : table :montantX dec(2) occurs 30; struct: file { char filename:128 := "c:\temp\essai1.txt"; float catalogue dec(2) := 123.67 ; integer cluster := 888 ; long capacity ; struct : disk ; } /* duplicate STRUCT */ file MAitre; file Index; end_local **display_local_table_symbol(); tiersLocal[2].nom := "BERGOUGNOUX" ; i++; display "proc str_proc_display(integer i,char a) ....tiersLocal[2].nom : ",tiersLocal[2].nom; y := k * 4 ; /* y : var globales */ file.disk.secteur[2] := 32400; display " Variable globale : y............:" , y,"file.disk.secteur[2] ",file.disk.secteur[2]; **STRUCTURE FILE , display "proc str_proc_display(integer i,char a) ....file.filename :",file.filename , "file.capacity :", file.capacity ,"file.cluster :",file.cluster , " file.catalogue", file.catalogue , " file.cluster.disk.cylindre.... : ",file.disk.cylindre ; /*STRUCTURE FILE MAITRE*/ display "proc str_proc_display(integer i,char a) ....maitre.filename :",maitre.filename, "maitre.capacity :",maitre.capacity,"maitre.cluster :",maitre.cluster ; /*STRUCTURE FILE INDEX*/ display "proc str_proc_display(integer i,char a) ....index.filename :",index.filename, "index.capacity :",index.capacity,"index.cluster :",index.cluster ; x:= sizeStruct(index); display " sizeStruct(index).......................",x; /* sizeStruct des structures GLOBALES dans Locale*/ x := sizeStruct(client); display " sizeStruct(clients) dans local.......................",x; end_procedure func str_func_calcul(integer i) begin_function display "func str_func_calcul(integer i) valeur de i................",i; return i++ ; end_function