Les ordres d'entrée/sortie en RPG/400

BoTTom |    Changer de couleur
               Les ordres d'entrée/sortie en RPG IV
 
LECTURE:
 
CL0N01Factor1+++++++Opcode&ExtFactor2+++++++Result++++++++Len++D+HiLoEq
                    READ  (N) Fichier       (DS)                   xxyy
                              Format 
 
lecture séquentielle d'un fichier.
 
Si facteur 2 contient un nom de fichier en interne ou si vous êtes en V6
   vous pouvez mettre un nom de DS ,pour y placer l'enregistrement.
Si facteur 2 contient un nom de fichier externe,l'enregistrement suivant
   sera lu (quelque soit son format)
Si facteur 2 contient un nom de format, l'enregistrement suivant AYANT LE
   FORMAT demandé sera lu.
 
N en option (N) demande une lecture sans verrouillage (UPDATE impossible)
 
xx = ON en cas d'erreur d'entrée/sortie
yy = ON en fin de fichier
 


|    Changer de couleur
 
CL0N01Factor1+++++++Opcode&ExtFactor2+++++++Result++++++++Len++D+HiLoEq
C                   READP (N) Fichier       (DS)                   xxyy
                              Format 
 
Même caractéristique que READ,sauf que la lecture est faite en ordre inverse
 (du dernier au premier) et donc yy = début de fichier.
 
CL0N01Factor1+++++++Opcode&ExtFactor2+++++++Result++++++++Len++D+HiLoEq
      Arg.          CHAIN (N) Fichier       (DS)                 zzxx 
                              Format 
 
  Accès direct/même caractéristiques pour facteur 2,ZR et N que READ
 
Si le fichier est utilisé sur le rang (sans clé ou non utilisée),
    facteur 1 doit contenir un n° de rang (const. ou zone num. 0 décimales)
 
Si le fichier est utilisé avec clé, facteur 1 doit contenir un argument de
    recherche comparable à la clé du fichier
 
zz = ON si l'enregistrement n'est pas trouvé
xx = ON en cas d'erreur d'entrée/sortie.


|    Changer de couleur
 
    1/ nom de zone
 
      L'argument de recherche peut-être une clé partielle
 
      Si plusieurs enregistrements correspondent à l'argument, le premier
      (dans l'ordre des clés) est retourné au programme.
 
sinon, indiquez
 
    2/ nom de KLIST,pour clé composée
                                                                            ++++
CL0N01Factor1+++++++Opcode&ExtFactor2+++++++Result++++++++Len++D+HiLoEq
C     nom           KLIST
       ^            KFLD                    societe
 à utiliser en      KFLD                    nocli
facteur 1 du CHAIN   ...
 
Les zones KFLD doivent être comparables une à une avec les clés du fichier
 (même définition, même longueur), le nom n'importe pas.
 
 


|    Changer de couleur
 
    3/ nom de DS déclarée par LIKERCD [V5R20 uniquement]
                                                                            ++++
     DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++++Comments++++++++++++
     Dnom              DS                  LIKEREC(nom-format : *KEY)
 
 
      à utiliser en traitement format libre
 
      /free
        CHAIN %KDS(nom) fichier ;
      /end-free
 
 
    4/ liste de champs utilisée directement lors du CHAIN [V5R20 uniquement]
 
      /free
        CHAIN (societe : nocli) fichier ;
      /end-free
 
 
 


|    Changer de couleur
 
CL0N01Factor1+++++++Opcode&ExtFactor2+++++++Result++++++++Len++D+HiLoEq
      Arg.          SETLL     Fichier                            aabbcc
 
Positionnement (pas de lecture) sur le premier enregistrement correspondant
 à l'argument de recherche
 
Si aucun enregistrement ne correspond, positionnement sur le premier enreg.
 ayant une clé plus grande à l'argument.
 
aa = non positionné (arg. supérieur à la plus grande des clés)
 
 
bb = erreur E/S
 
 
cc = positionné par égalité
 
ainsi   aa          indique un "non-positionnement"
       naa et ncc   indique un positionnement par >
       naa et  cc   indique un positionnement par =
 


|    Changer de couleur
exemple :
                           F1        Codop  F2          >><<==
 ...............           'A1'      SETLLfichier       80  81
 : rang ! clé  :           --> position sur rang 1 (80 = OFF, 81 = ON)
 :  1   ! A1   :
 :  2   ! A2   :           'A3'      SETLLfichier       80  81
 :  3   ! B2   :           --> position sur rang 3 (80 = OFF, 81 = OFF)
 :  4   ! C1   :
 :  5   ! C1   :           'FF'      SETLLfichier       80  81
 :  6   ! D1   :           --> position sur aucun enreg (80 = ON,81 = OFF)
 :.............:
                           'C1'      SETLLfichier       80  81
                           --> position sur rang 4 (80 = OFF, 81 = ON)
 
CL0N01Factor1+++++++Opcode&ExtFactor2+++++++Result++++++++Len++D+HiLoEq
      Arg.          SETGT     Fichier                            aabb
Positionnement (pas de lecture) sur le premier enregistrement ayant une clé
 plus grande à l'argument.
(pratique pour lire le dernier enregistrement d'un groupe =SETGT + REDPE)
 
aa = non positionné (arg. supérieur à la plus grande des clés)
bb = erreur E/S


|    Changer de couleur
exemple :
                           F1        Codop  F2          >><<==
 ...............           'A1'      SETGTfichier       80
 : rang ! clé  :           --> position sur rang 2 (80 = OFF)
 :  1   ! A1   :
 :  2   ! A2   :           'A3'      SETGTfichier       80
 :  3   ! B2   :           --> position sur rang 3 (80 = OFF)
 :  4   ! C1   :
 :  5   ! C1   :           'FF'      SETGTfichier       80
 :  6   ! D1   :           --> position sur aucun enreg (80 = ON)
 :.............:
                           'C1'      SETGTfichier       80
                           --> position sur rang 6 (80 = OFF)
 
 
CL0N01Factor1+++++++Opcode&ExtFactor2+++++++Result++++++++Len++D+HiLoEq
      Arg.          READE (N) Fichier                              xxyy
 
Lecture séquentielle de l'enregistrement suivant, SI la clé de l'enreg.
 est identique à argument (clé complète ou clé partielle), SINON fin
 de fichier "logique" signalée par yy = ON.
 


|    Changer de couleur
 
CL0N01Factor1+++++++Opcode&ExtFactor2+++++++Result++++++++Len++D+HiLoEq
      Arg.          READPE(N) Fichier                              xxyy
 
Idem READE, mais en lecture arrière (yy = "début de fichier")
 
 
CL0N01Factor1+++++++Opcode&ExtFactor2+++++++Result++++++++Len++D+HiLoEq
                    UNLOCK    Fichier                                yy 
 
Déverrouille l'enregistrement verrouillé par le programme en cours pour ce
 fichier. Le fichier doit être ouvert en mise à jour (U).
Si aucun enregistrement n'est verrouillé, aucune erreur n'est signalée.
 
 
CL0N01Factor1+++++++Opcode&ExtFactor2+++++++Result++++++++Len++D+HiLoEq
      (*NOKEY)      CLEAR     Format
 
Réinitialise une structure de donnée (Format de fichier par exemple)
Si *NOKEY est indiqué en facteur 1, les zones clé de ce fichier NE SONT PAS
 remises à l'état initial.
 


|    Changer de couleur
 
CL0N01Factor1+++++++Opcode&ExtFactor2+++++++Result++++++++Len++D+HiLoEq
                    WRITE     Format        (DS)                   xxyy 
                              Fichier
Ecriture dans un fichier d'un nouvel enregistrement
 
Pour les fichiers en interne utiliser Fichier en facteur 2 et un nom de DS
 en zone résultat.
 
Pour les fichiers en externe, nom de format !
 
CL0N01Factor1+++++++Opcode&ExtFactor2+++++++Result++++++++Len++D+HiLoEq
                    UPDATE    Format        (DS)                   xxyy 
                              Fichier
Mise à jour du dernier enregistrement lu (même syntaxe que WRITE)
 
 -   mise à jour partielle [V5R20 uniquement]
 
    - UPDATE admet une liste des zones à modifier avec la fonction %FIELDS()
 
       UPDATE format  %FIELDS(nom : adr1 : tel) ;
 


|    Changer de couleur
CL0N01Factor1+++++++Opcode&ExtFactor2+++++++Result++++++++Len++D+HiLoEq
      (arg.)        DELETE    Format        (DS)                   xxyy  
                              Fichier
Suppression d'un enregistrement (si facteur 1 à blanc = dernier enreg lu)
Si facteur 1 est renseigné cela représente un CHAIN + DELETE
 
CL0N01Factor1+++++++Opcode&ExtFactor2+++++++Result++++++++Len++D+HiLoEq
                    EXFMT     Format                 xx
 
POUR UN DSPF : lecture puis écriture d'un format.
 
               (équivalent à WRITE suivit de READ)
 
CL0N01Factor1+++++++Opcode&ExtFactor2+++++++Result++++++++Len++D+HiLoEq
                    READC     Format                                 xx
 
POUR UN DSPF : lecture séquentielle des enregistrements MODIFIES d'un format
 d'enregistrement SOUS-FICHIER
 
 
et voir COMMIT et ROLBK pour les fichiers B de D sous contrôle de validation.
 


|    Changer de couleur
Depuis la version 4.20 de l'OS les indicateurs sur les ordres d'E/S
 sont facultatifs et remplacés par les fonctions :
 
%EOF        |  vrai  en fin de fichier          (READ, READP, READE, ...)
            |
%EQUAL      |  vrai si SETLL est positionné
            |
%FOUND      |  vrai si la dernière E/S a trouvé (SETLL,SETGT,CHAIN,DELETE)
            |
%ERROR      |  signale une erreur en utilisant l'option (E) sur l'ordre
 
     C     code          chain     ARTICLE
     C                   IF        %FOUND
     C                   ....
     C                   ....
     C                   ENDIF
 
     C     code          chain     ARTICLE
     C     code          chain     ENTETCDE
     C                   IF        not %FOUND(ARTICLE) and %FOUND(ENTETCDE)
     C                   ....
     C                   ENDIF


|    Changer de couleur
 
 La même chose en format libre.
 
  rappellez vous, dans ce contexte la règle est : ORDRE(opt) F1 F2 ; 
 
 
    //recherche de l'article
    CHAIN code ARTICLE ;
    IF        %FOUND ;
               ....  ;
              ....   ;
    ENDIF;
 
 
    //recherche de l'article et de ces commandes
    chain code ARTICLE ;
    chain code ENTETCDE;
    IF        not %FOUND(ARTICLE) and %FOUND(ENTETCDE);
               ....
    ENDIF;
 
 





©AF400