Lecture séquentielle de tout un fichier message

BoTTom |
      * variable retour pour le format RTVM0300
     Dmessage_rt       DS         32767
     D  byte_retour                  10I 0
     D  byte_dispo                   10I 0
     D  msgid_rt                      7    overlay(message_rt : 27)
     D  msg_offset                   10I 0 overlay(message_rt : 65)
     D  msg_retour                   10I 0 overlay(message_rt : *next)
     D  msg_dispo                    10I 0 overlay(message_rt : *next)
     D  msg2_offset                  10I 0 overlay(message_rt : 77)
     D  msg2_retour                  10I 0 overlay(message_rt : *next)
     D  msg2_dispo                   10I 0 overlay(message_rt : *next)
     D  data                       9999
 
     d msg1            S            256
     d msg2            S           9000
 
      * divers paramètres
     Dmessage_rt_lg    S             10I 0 inz(%size(message_rt))
     Dformat           S              8    inz('RTVM0300')
     dmsgid            S              7
     dmsgf             S             20    inz('QCPFMSG   QSYS')
     dmsgdta           S              1
     dmsgdta_lg        S             10I 0 inz(0)
     dremplace_var     S             10    inz('*NO')
     dremplace_spc     S             10    inz('*NO')
 
     Derror_code       DS
     D  err_lg                       10I 0 inz(%size(error_code))
     D  err_retour                   10I 0
     D  err_filler                    1
     D  err_msgid                     7
 
     Doption           S             10    inz('*FIRST')
     Dmsg_ccsid        S             10I 0 inz(0)
     Ddta_ccsid        S             10I 0 inz(0)
 
      * prototype d'appel à l'API
     Drtvmsg           PR                  EXTPGM('QMHRTVM')
     D                             9999
     D                               10I 0
     D                                8
     d                                7
     d                               20
     d                                1


|
     d                               10I 0
     d                               10
     d                               10
     D                               16
     D                               10
     D                               10I 0
     D                               10I 0
      * on recoit msgf et bibliothèque en paramètre
     C     *entry        plist
     C                   parm                    p_msgf           10
     C                   parm                    p_msgfl          10
      /free
       msgf = p_msgf + p_msgfl;
       exsr lecture;
       option = '*NEXT';
       dow byte_dispo > 0;
 
         if msg_offset > 0;
            msg1 = %subst(message_rt : msg_offset + 1 : msg_retour);
         else;
            msg1 = *blanks;
         endif;
         if msg2_offset > 0;
            msg2 = %subst(message_rt : msg2_offset + 1 : msg2_retour);
         else;
            msg2 = *blanks;
         endif;
 
            // positionnement sir le message suivant
            msgid = msgid_rt;
            exsr lecture;
       enddo;
       *inlr = *on;
 
        // S-PGM
 
        //   appel à l'API.
       begsr lecture;
        rtvmsg(message_rt : message_rt_lg : format : msgid : msgf : msgdta :
                msgdta_lg  : remplace_var : remplace_spc : error_code :
                option     : msg_ccsid    : dta_ccsid);
       endsr;
      /end-free




©AF400