Lit la JOBLOG à l'envers pour retrouver erreur

BoTTom |
      **********************************************************************
      * lit tous les messages de la JOBLOG en commencant par le dernier
      *
      * pratique qaund il s'agit d'erreur recue par SQL et non par
      *  le RPG en ayant besoin
      *
      **********************************************************************
      * API création d'un User Space
     d QUSCRTUS        PR                  EXTPGM('QUSCRTUS')
     d                               20    const
     d                               10    const
     d                               10i 0 const
     d                                1    const
     d                               10    const
     d                               50    const
     d                               10    const
     d error                               likeds(error_codeDS)
     d
      **********************************************************************
      * API liste des messages de la JOBLOG
     d QMHLJOBL        PR                  EXTPGM('QMHLJOBL')
     d                               20    const
     d                                8    const
     d  select                             likeds(message_select)
     d                               10i 0 const
     d                                8    const
     d error                               likeds(error_codeDS)
     d
      **********************************************************************
      * code erreur std pour APis
     d error_codeDS    DS
     d   error_size                  10i 0
     d   error_rt                    10I 0
     d   error_id                     7
     d   error_filler                 1
     d   error_data                  50
     d
      **********************************************************************
      * paramètre 3 de QMHLJOBL, critères de sélection
     d message_select  DS
     d message_max                   10I 0 inz(9999)
     d message_sens                  10    inz('*PRV')
     d job_name                      10
     d job_user                      10


|
     d job_nbr                        6
     d job_internal                  16
     d cle_depart                     4     inz(X'FFFFFFFF')
      * x'FFFFFFFF' = à partir de la fin , x'00000000' = début
     d unmessage_max                 10i 0  inz(256)
     d unmessage_help                10i 0  inz(256)
     d zone_offset                   10i 0  inz(84)
     d zone_nbr                      10i 0  inz(1)
     d msgq_offset                   10i 0  inz(88)
     d msgq_lg                       10i 0  inz(10)
     d zone_rt                       10i 0  inz(0302)
     d msgq                          10     inz('*')
     d
      **********************************************************************
      * SDS pour coordonnées du JOB en cours
     dsystemeDS       SDS
     d SDSjn                         10     overlay(systemeDS:244)
     d SDSju                         10     overlay(systemeDS:254)
     d SDSnb                          6     overlay(systemeDS:264)
     d
      **********************************************************************
      * prototype pour API qui retrouve pointeur de début
     dQUSPTRUS         PR                  EXTPGM('QUSPTRUS')
     d  space                        20    const
     d  ptr                            *
 
      * va contenir l'adresse de début du User Space
     Dpointeur         s               *
     DI                s             10i 0
 
      * l'entête
     Dptrinfos         s               *
     DRTVINF           ds                  based(ptrinfos)
     D  offset                       10i 0
     D  taille                       10i 0
     D  nbpostes                     10i 0
     D  lgposte                      10i 0
 
      * la liste
     dptrliste         s               *
     DLIST             ds                  based(ptrliste)
     d  msgid                         7    overlay(LIST : 17)
     d  msg_lg                       10i 0 overlay(List : 109)
     d  msg_txt                     128    overlay(LIST : 113)


|
      *========================================================
     dtexte            s            128
 
      /free
       error_size = %size(error_codeDS);
       // création du *USRSPC
       QUSCRTUS('JOBLOG    QTEMP' : 'JOBLOG' : 9999 : ' ' : '*USE' :
                 'pour JOBLOG' : '*YES' : error_codeDS);
 
       // attribution de valeur à la DS de sélection
       job_name = SDSjn;
       job_user = SDSju;
       job_nbr = SDSnb;
 
       //appel de l'API qui retourne tous les messages à partir du plus récent
       QMHLJOBL('JOBLOG    QTEMP' : 'LJOB0100' : message_select:
                 %size(message_select) : 'JSLT0100' : error_codeDS);
 
       // lecture du User Space
 
          // récupération pointeur de début
          QUSPTRUS('JOBLOG    QTEMP' : pointeur);
          ptrinfos = pointeur + 124;
          ptrliste = pointeur + offset;
 
          // boucle (nbpostes fois)
         for  i = 1 to nbpostes;
              // traitement d'un message
              // à adapter suivant les besoins
              if  msgid = 'CPF????';
                 texte = %subst(msg_txt:1:msg_lg);
                 //
                 //
              endif;
 
              // poste suivant ?
              if        i < nbpostes;
                   ptrliste = ptrliste + lgposte;
              endif;
         endfor;
       *inLR = *ON;
      /end-free




©AF400