Trigger à la lecture (V5 uniquement)

BoTTom |
      *  Exemple de trigger utilisant le paramètre TRGEVENT(*READ)          =
      *                                                                     =
      * =========== définition des paramètres recus =========================
     Ddata             DS
     D  fichier                      10
     D  biblio                       10
     D  membre                       10
     D  event                         1
     D  time                          1
     D  niv_verrou                    1
     D  filler1                       3
     D  ccsid                         9B 0
     D  filler2                       8
      *  enregistrement avant déplacement et longueur
     D  dep_enrav                     9B 0
     D  lg_enrav                      9B 0
      *  description enregistrement avant déplacement et longueur
     D  dep_desav                     9B 0
     D  lg_desav                      9B 0
      *  enregistrement après (idem)
     D  dep_enrap                     9B 0
     D  lg_enrap                      9B 0
     D  dep_desap                     9B 0
     D  lg_desap                      9B 0
     D  filler3                      16
     D  vari                       9900A
 
     Dparam            S           9999
     Dlgparam          S              9B 0
     Ddep              S              9B 0
 
      **
      **  placez ici le nom de votre physique ---------!
      **                                               v
     Denregav        E DS                  EXTNAME(ma_cave) PREFIX(av_)
      * =========== variables pour API envoi de messages ===================
     D ERRDS           DS
     D  LGDS                   1      4B 0 INZ(16)
     D  LGERR                  5      8B 0
     D  MSGID                  9     15
     D  RESERV                16     16
     D MSGFL           DS
     D  MSGF                         10    INZ('QCPFMSG')
     D  MSGL                         10    INZ('*LIBL')


|
      * =========== API QMHSNDPM (envoi d'un message) =====================
     D QMHSNDPM        PR                  EXTPGM('QMHSNDPM')
     D  mh_id                         7    const
     D  mh_msgf                      20    const
     D  mh_msgtxt                    50    const
     D  mh_msglen                    10I 0 const
     D  mh_msgtyp                    10    const
     D  mh_pgmq                      10    const
     D  mh_stack                     10I 0 const
     D  mh_key                       10I 0
     D  mh_errds                           like(errds)
      */
      */ placez ici votre message -------------------!
      */                                             V
     D MSGTXT          S             50    INZ('ne pas utiliser cette ligne')
     D KEY             S             10I 0
     d today           S               D
      //=========== DEBUT DU PROGRAMME ======================================
     C     *entry        plist
     C                   parm                    param
     C                   parm                    lgparam
      */
      */ mise en place du paramètre reçu
      */
      /FREE
       data = %subst(param:1:lgparam);
       //
       // mise en place du buffer avant
       //
       if dep_enrav <> 0;
         dep = dep_enrav + 1;
         enregav = %subst(data:dep:lg_enrav);
       endif;
       //
       // ici toute lecture d'une ligne ayant date de création > aujourd'hui
       //  est refusée (saisie de lignes à l'avance par exemple...)
       //
      /END-FREE
     c                   time                    today
      /FREE
       if av_cav_e00001 > today;
         exsr env_msg;
       endif;
       *inlr = *on;


|
 
 
       BEGSR env_msg  ;
         //
         // envoi d'un message diagnostique au pgm applicatif (pgm + 2)
         //
            qmhsndpm ('CPF9898':'QCPFMSG   *LIBL':msgtxt: %len(msgtxt) :
            '*DIAG' : '*PGMBDY' : 2: key : errds) ;
 
         //
         // envoi d'un message escape( erreur) au système (pgm + 1)
         //
            qmhsndpm ('CPF9898':'QCPFMSG   *LIBL':msgtxt: %len(msgtxt) :
            '*ESCAPE' : '*PGMBDY' : 1: key : errds) ;
 
        ENDSR ;




©AF400