essai de trigger avec ALWREPCHG et val. nulle

BoTTom |
      *=========== définition des paramètres recus =========================
     Dptr              s               *
     Ddata             DS                  based(ptr)
     D  fichier                      10
     D  biblio                       10
     D  membre                       10
     D  evenem                        1
     D  moment                        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 des zones nulles avant (déplacement et longueur)
      * il y a un octet par zone dans l'enregistrement
      * contenant 0 (la zone est significative)
      *           1 (elle est nulle)
     D  dep_desav                     9B 0
     D  lg_desav                      9B 0
      * enregistrement après (idem)
     D  dep_enrap                     9B 0
     D  lg_enrap                      9B 0
      * zones nulles
     D  dep_desap                     9B 0
     D  lg_desap                      9B 0
     D    filler3                    16
     D  variable                   9900A
     Dparam            S           9999
     Dlgparam          S              9B 0
     Ddep              S              9B 0
     Dprtav            s               *
     Denregav        E DS                  EXTNAME(db2nullpf) PREFIX(av)
     D                                     based(ptrav)
     Dprtap            s               *
     Denregap        E DS                  EXTNAME(db2nullpf) PREFIX(ap)
     D                                     based(ptrap)
     dprtnav           s               *
     dnullav           ds                  based(ptrnav)
     D  codart_nav                    1
     D  libart_nav                    1
     D  datcrt_nav                    1
     D  prix_nav                      1


|
     dprtnap           s               *
     dnullap           ds                  based(ptrnap)
     D  codart_nap                    1
     D  libart_nap                    1
     D  datcrt_nap                    1
     D  prix_nap                      1
      *=========== 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')
     D ID              S              7    INZ('CPF9898')
     D MSGTXT          S             50    INZ('artcile invalide')
     D LENTXT          S              9B 0 INZ(50)
     D MSGTYP          S             10
     D PGMQ            S             10    INZ('*PGMBDY')
     D STACK           S              9B 0
     D KEY             S              9B 0
      *=========== DEBUT DU PROGRAMME ======================================
     C     *entry        plist
     C                   parm                    param
     C                   parm                    lgparam
      *
      * mise en place du paramètre reçu
      *
     C                   eval      ptr = %addr(param)
      *
      * mise en place du buffer avant
      *
     C                   if        dep_enrav <> 0
     C                   eval      ptrav = ptr + dep_enrav
     C                   endif
     C                   if        dep_desav <> 0
     C                   eval      ptrnav = ptr + dep_desav
     C                   endif
      *
      * mise en place du buffer après
      *
     C                   if        dep_enrap <> 0
     C                   eval      ptrap = ptr + dep_enrap


|
     C                   endif
     C                   if        dep_desap <> 0
     C                   eval      ptrnap = ptr + dep_desap
     C                   endif
      * si libart est à blanc alors ==> valeur nulle
     c                   if        aplibart = *blank
     c                   eval       libart_nap = '1'
     c                   endif
      * vérification du prix (doit être positif)
     C                   if        apprix <= 0
     C                   exsr      env_msg
     C                   endif
      * mettre date du jour dans DATCRT
     c                   time                    datcrt
     C                   return
      *
     C     env_msg       begsr
      *
      * envoi d'un message diagnostic au pgm applicatif
      *
     C                   CALL      'QMHSNDPM'
     C                   PARM      'CPF9898'     ID                7
     C                   PARM                    MSGFL
     C                   PARM                    MSGTXT
     C                   PARM                    LENTXT
     C                   PARM      '*DIAG'       MSGTYP
     C                   PARM                    PGMQ
     C                   PARM      2             STACK
     C                   PARM                    KEY
     C                   PARM                    ERRDS
      *
      * envoi d'un message escape( erreur) au système
      *
     C                   CALL      'QMHSNDPM'
     C                   PARM      'CPF9898'     ID                7
     C                   PARM                    MSGFL
     C                   PARM                    MSGTXT
     C                   PARM                    LENTXT
     C                   PARM      '*ESCAPE'     MSGTYP
     C                   PARM                    PGMQ
     C                   PARM      1             STACK
     C                   PARM                    KEY
     C                   PARM                    ERRDS
     C                   endsr





©AF400