Cours gap fichier externe fichier en entrée

BoTTom |    Changer de couleur
 
               ---------------------------------------------
               ! 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."
 


|    Changer de couleur
         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
 
 


|    Changer de couleur
 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
 
 
 


|    Changer de couleur
 
   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 


|    Changer de couleur
 
 
  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.
 
 
 
 


|    Changer de couleur
 
      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.


|    Changer de couleur
 
     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
 





©AF400