Volubis, le forum IBM i Index du Forum Volubis, le forum IBM i
avec les clubs Informatiques IPL et Bretagne.
 
 FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres   Groupes d'utilisateursGroupes d'utilisateurs   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Trigger

 
Poster un nouveau sujet   Répondre au sujet    Volubis, le forum IBM i Index du Forum -> langages
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
cimmelé



Inscrit le: 28 Mar 2007
Messages: 34
Localisation: Rennes(35)

MessagePosté le: Ven 11 Mai 2007, 16:51:36    Sujet du message: Trigger Répondre en citant

Bonjour,

Rolling Eyes J'aimerais pouvoir retrouver dans un programme RPG utilisé comme trigger, le nom du programme ayant effectué la transaction BD et déclenché l'appel au trigger...

Est ce que cette possibilité existe ?

Merci
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
cmasse
Site Admin


Inscrit le: 14 Fév 2007
Messages: 716
Localisation: Nantes

MessagePosté le: Lun 21 Mai 2007, 08:01:15    Sujet du message: retrouver le nom du pgm Répondre en citant

la technique est la suivante, envoyer un message au pgm en indiquant un niveau dans la liste d'invocation et récupérer le nom de celui qui l'a recu.

API QMHSNDPM = SNDPGMMSG en CL, QMHRCVPM = RCVMSG en CL.

dans le cas d'un trigger il faut ajouter 1 (donc 3 et non 2 dans STACK) afin de tenir compte de DB2 qui a lui même lancé le trigger.

Code:

     H  nomain


      * prototype de la fonction
      *
      /copy prototypes,quiappel


      * corps de la fonction
     Pquiappel         B                    export
     D                 PI            10
     D  niveau                       10I 0  const


      *  variables locales
     Dbinaire          S             10I 0


     DLENTXT           S                   like(binaire)
     DSTACK            S                   like(binaire)
     DKEY              S                   like(binaire)
     DATTENTE          S                   like(binaire)
     DCODERR           DS
     D  LGCOD                              like(binaire)   INZ(16)
     D  LGUTIL                             like(binaire)

     D  MSGID                         7
     D  RESERV                        1


      *
      *  on envoi un message au programme au-dessus (stack=empilement)
      *  et on le relit.
      *   (dans les infos retournées il y a le nom du pgm en 111)
      *


      * on rajoute 2 pour tenir compte de la place occupée par le pgm
      * utilisant lui même la fonction ET de la place du PEP (entry point)


     c                   eval      stack = niveau + 2


     C                   CALL      'QMHSNDPM'
     C                   PARM                    ID                7
     C                   PARM                    MSGFL            20
     C                   PARM      'peu importe' MSGTXT           10
     C                   PARM      10            LENTXT
     C                   PARM      '*INFO  '     MSGTYP           10
     C                   PARM      '*'           PGMQ             10
     C                   PARM                    STACK
     C                   PARM                    KEY
     C                   PARM                    CODERR
     C                   CALL      'QMHRCVPM'
     C                   PARM                    retour          120
     C                   PARM      120           lentxt
     C                   PARM      'RCVM0200'    format            8
     C                   PARM      '*'           PGMQ             10
     C                   PARM                    STACK
     C                   PARM      '*ANY'        MSGTYP
     C                   PARM                    KEY
     C                   PARM      0             ATTENTE
     C                   PARM      '*REMOVE'     ACTION           10
     C                   PARM                    CODERR
     c                   return    %subst(retour:111:10)
     Pquiappel         E

_________________
Christian Massé (Volubis.fr)
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Volubis, le forum IBM i Index du Forum -> langages Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com

Anti Bot Question MOD - phpBB MOD against Spam Bots