Accueil du site > Les articles > Lire 2 fois le même fichier dans un CL.
Version à imprimer Enregistrer au format PDF

Lire 2 fois le même fichier dans un CL.

vendredi 7 octobre 2005, par Serge Gomes Visites  2924

Pour lire un fichier plusieurs fois dans un CL, on peut utiliser un appel récursif.


/* Serge GOMES Lire 2 fois le même fichier dans un CL */         
/* 1er appel  CALL PGM(RECURS) PARM(’0’) */                      
             PGM        PARM(&PAR)                               
             DCL        VAR(&PAR) TYPE(*CHAR)                    
             DCLF       FILE(BOOKS)                              
 LECTURE :    RCVF      /* Boucle Lecture */                      
             MONMSG     MSGID(CPF0864) EXEC(GOTO CMDLBL(FINLEC)) 
  /*                                                          */ 
  /*     ICI TRAIEMENT DE VOTRE FICHIER                       */ 
  /*                                                          */ 
             GOTO       CMDLBL(LECTURE)                          
 FINLEC :     IF         COND(&PAR *NE ’1’) THEN(DO)              
             CHGVAR     VAR(&PAR) VALUE(’1’)                     
             CALL       PGM(RECURS) PARM(&PAR)                   
             ENDDO                                               
 ENDPGM :     ENDPGM                                              

- La v5r30 apporte un nouveau paramètre OPNID() sur les commandes DCLF, RCVF, SNDRCVF, SNDF permettant de manipuler plusieurs fichiers (5 maxi). Ce paramètre reçoit en valeur une chaine de caractère (10 maxi) permettant de l’identifier. Les zones des fichiers manipulés, devront être préfixées par cette valeur (xxxxx_nomzone).

PGM DCLF FILE(MYFILE) OPNID(FICH) DCLF FILE(DSPFEX) OPNID(ECRAN)

DEB : DOWHILE COND(*NOT &ECRAN_IN03) RCVF OPNID(FICH) MONMSG MSGID(CPF0864) EXEC(LEAVE CMDLBL(DEB)) CHGVAR &ECRAN_ZID &FICH_IDNOM SNDRCVF OPNID(ECRAN) ENDDO ENDPGM