[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2001
    Beiträge
    6

    Trigger / ILE RPG

    Ich habe einen Trigger in ILE RPG geschrieben und den Trigger via ADDPFTRG der physischen Datei hinzugefügt.
    Der Trigger wird vom DB-System aktiviert. Laut IBM-Doku, muß via API QMHSNDPM eine *ESCAPE-Nachricht gesendet werden; habe ich. Trotzdem erhalte ich keinen Hinweis, wenn ich mit DFU einen Datensatz lösche, der lt. Trigger nicht gelöscht werden darf.
    Mit Hilfe des Debuggers habe ich kontrolliert, dass das API zum Senden der Nachticht aufgerufen wird. Ergebnis: positiv.
    Hier der entsprechende Sourcecode:

    EVAL SNDMSGD = 'Fehler Trigger: C1UNFTRG!'
    EVAL SNDMSGD = 'QCPFMSG QSYS '
    EVAL SNDMSGERR1=66
    EVAL SNDMSGERR2 =0
    EVAL SNDMSGERR3 = *BLANKS
    EVAL SNDMSGERR4 = *BLANKS
    EVAL SNDMSGERR5 = *BLANKS
    C*
    CALL 'QMHSNDPM'
    PARM 'CPF9898' SNDMSGID
    PARM SNDMSGF
    PARM SNDMSGD
    PARM 25 SNDLEN
    PARM '*ESCAPE' SNDMSGTYP
    PARM '*' SNDPGMQ
    PARM 1 SNDSTCNT
    PARM *BLANKS SNDMSGKEY
    PARM SNDMSGERR

    Die Parameter sind in einer DS definiert.

    Mit welchen Werte muss ich die API-Parameter versorgen, um die Nachricht an das DB-System weiterzuleiten ?

  2. #2
    Registriert seit
    Apr 2001
    Beiträge
    80

    Question

    Hallo Frank !

    Ich nehme mal an, Du möchtest eine Nachricht am Bildschirm ausgeben. (Das geht aus Deiner Beschreibung nicht so genau hervor).

    Probiere mal den Wert des Call-Stack-Counters

    PARM 1 SNDSTCNT

    auf 2 oder 3 zu ändern.

    Dieser Wert gibt an, wieviele Programmstapel zurück die Msg ausgegeben werden soll. Ist der Wert falsch, sieht man z.B. die Msg im JOBLOG, aber nicht in der Msg-Zeile des Bildschirms. Es ist zwar etwas nervig, aber meistens klappt es. (Ich schaffe es oft auch erst nach etwas rumprobieren. So ist das, wenn man nicht genau weiss, was man tut.. *grins*)

    Sollte das nicht helfen, mal versuchen den MsgType (PARM '*ESCAPE' SNDMSGTYP
    ) zu ändern. (z.B. *COMP)


    Gruß

    Jörg

    [Dieser Beitrag wurde von JoergZ am 16. Mai 2001 editiert.]

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.207

    Post

    Das Problem ist, dass das Programm in ILE-RPG geschrieben ist. Wenn Sie den Trigger mal mittels Debug anhalten und den Callstack betrachten, sehen Sie dass der 1. Eintrag über ihrem Programmmodul nicht die Datenbank ist, sondern eine Startprozedur an die Sie auch die Escape-Nachricht senden.

    Ermitteln Sie den korrekten Stapeleintrag anhand des Callstacks und senden Sie die Escape-Nachricht genau an diesen (irgendwas mit QDB...).

    [Dieser Beitrag wurde von Fuerchau am 17. Mai 2001 editiert.]
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #4
    Registriert seit
    May 2001
    Beiträge
    6

    Wink

    Danke für die prompte Hilfe.
    Ich konnte im IBM-Handbuch "DB2 UDB for AS/400 Advanced Database Function" die korrekte Parameterversorgung finden. In der Tat muss bei einem ILE-Programm der Name der Programmnachrichtenwarteschlange nach einer bestimmten Regel gebildet werden:
    Konstante: "_QRNP_PEP_" + "Name des Moduls".
    Nach dieser Änderung wurde die Escapenachricht an das DB-System gesandt.
    Ziel war, dass auch beim Hinzufügen/Ändern oder Löschen eines Datensatzes z.B. via ODBC eine entsprechende Meldung weitergeleitet und vom DB-System kein Commit ausgelöst wird.

Similar Threads

  1. ILE RPG / SQL Füllen einer Feldgruppe
    By homue in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 18-07-07, 17:47
  2. Problem mit Java-Methoden Aufruf aus ILE RPG?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 10-01-07, 11:58
  3. DDS in ILE RPG
    By Squall in forum IBM i Hauptforum
    Antworten: 82
    Letzter Beitrag: 19-10-06, 16:37
  4. Return ILE RPG
    By Squall in forum IBM i Hauptforum
    Antworten: 31
    Letzter Beitrag: 28-09-06, 18:53
  5. Rechnen mit Datumsfeldern in ILE RPG
    By Angela in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 22-08-06, 11:11

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •