--------------------------------------------- ! DEFINITION EXTERNE DES FICHIERS EN ENTREE ! --------------------------------------------- Vous vous demandez peut-être pourquoi définir les zones du fichier dans le programme , alors que cette définition existe dans l'objet fichier. ON PEUT UTILISER CETTE DEFINITION DE L'OBJET FICHIER. Pour cela nous indiquerons dans la spécification de fichier que nous utilisons la description du fichier (description externe), à la création du programme le compilateur ira chercher la description des zones du fichier et la placera dans l'OBJET DE TYPE *PGM. Grâce à cette description externe il n'est peut-être plus nécessaire d'écrire des spécifications d'entrée. Comment codifier cette utilisation de la description externe. Prenons l'exemple sur un pgm "liste des produits." |
1 2 3 4 5 6 7 67890123456789012345678901234567890123456789012345678901234567890 FPRODUIT IP F 36 5PI 6 DISK FQSYSPRT O F 198 PRINTER IPRODUIT NS 01 I P 6 80PRNO I 9 28 PRLIB I P 29 310PRQTE I P 32 362PRPU C PRQTE MULT PRPU PRMT 82H C ADD PRMT PRTOMT 102 OQSYSPRT D 2 01 O PRNO 7 O PRLIB 29 O PRQTE 37 O PRPU 2 45 O PRMT 2B 60 O T 3 LR O 46 'TOTAL STOCK :' O PRTOMT2B 60 |
Et voici le même programme en description externe pour les fichiers en entrée. 1 2 3 4 5 6 7 67890123456789012345678901234567890123456789012345678901234567890 FPRODUIT IP E K DISK FQSYSPRT O F 198 PRINTER C PRQTE MULT PRPU PRMT 82H C ADD PRMT PRTOMT 102 OQSYSPRT D 2 N1P O PRNO 7 O PRLIB 29 O PRQTE 37 O PRPU 2 45 O PRMT 2B 60 O T 3 LR O 46 'TOTAL STOCK :' O PRTOMT2B 60 |
La ligne F est très différente. Que signifie t'elle? FFilenameIPEAF........L..I........Device+......KExit++Entry+A....U1 FPRODUIT IP E K DISK ! ! ------------------- ! Utilisation de la ! description ! externe ! ------------------------- Le fichier est séquentiel indexé. La clé est celle indiqué dans l'objet fichier Si le nom de format dépasse 8c. il faut le renommer par une spécif F de v-----continuation. FFilenameIPEAF........L..I........Device+......KExit++Entry+A....U1 FPRODUIT IP E K DISK K F............Ext-record..................RcdnbrKOptionEntry+++..... F FORMATLONG KRENAMEFMTGAP format ext. ^--------^ option RENAME ------^ ^----^format RPG |
Plus de spécif. I. Elles seront apportées à la compilation automatiquement, les noms des zones d'entrée seront ceux du fichier. S'ils dépassent 6c. il faudra renommer les zones (voir plus loin) Spécif O OName++++DFBASbSaN01N02N03Excnam................................... OQSYSPRT D 2 N1P Cette spécif. O a changé: l'indicateur est maintenant N1P, il n'y plus de spécif. I, donc pas d'indicateurs d'entrée. Dans cet exemple nous pouvions utiliser cette astuce, mais parfois il sera nécessaire d'indiquer un indicateur d'entrée. |
Reprenons cet exemple avec un indicateur d'entrée. 1 2 3 4 5 6 7 67890123456789012345678901234567890123456789012345678901234567890 FPRODUIT IP E K DISK FQSYSPRT O F 198 PRINTER IPRODUITF 01 C PRQTE MULT PRPU PRMT 82H C ADD PRMT PRTOMT 102 OQSYSPRT D 2 01 O PRNO 7 O PRLIB 29 O PRQTE 37 O PRPU 2 45 O PRMT 2B 60 O T 3 LR O 46 'TOTAL STOCK :' O PRTOMT2B 60 Comme vous le voyez nous indiquons une spécif. I un peu différente de la description interne. |
IRCDNAME+....IN.................................................... IPRODUITF 01 ! ! ! --------------- -- ! indic. d'entrée ! ! ! ----------------- > seules indications possibles je n'indique plus ! en externe. le nom du fichier ! mais le nom du ! format d'enreg. -- Nous n'utiliserons les spécif I niveau zone que pour : I..............Ext-field+......................Field+L1M1..PlMnZr .. renommer une zone NOMLONG NOM6 associer indic. de rupture ou de concordance RUPT LxMx tester la zone par rapport à 'blanc' ou 0 MT 404142 |