[NEWSboard IBMi Forum]
  1. #1
    AndreasW aus H Besucher/Guest

    Angry MONMSG für *INFO Nachrichten, oder anders...

    Hallo *ALL!

    Ich habe folgendes Problem und würde mich freuen einen Denkanstoß zu bekommen:

    In einem CL wird per CPYFRMSTMF eine Datenstromdatei (DFÜ-Eingang im root-Verzeichnis) in eine DB-Datei (programmbeschrieben) gefüllt.

    Wenn der Befehl funktioniert, aber Datensätze abgeschnitten wurden, wird eine *INFO-Nachricht (CPIA083) ausgegeben. Aufgrund dieser Nachricht sollen Aktionen durchgeführt werden.

    Die Nachricht lässt sich aber, da es eine *INFO-Nachricht ist, nicht durch MONMSG abfangen. (*INFO und *DIAG-Nachrichten können nicht via MONMSG verarbeitet werden, oder gibt es da doch etwas?)
    Auch ein hochsetzen der Fehlerbewertungsstufe in einer Kopie der QCPFMSG bringt nichts, dann wird halt eine 40er *INFO Nachricht versendet, die sich nicht monitoren lässt.

    Gibt es vielleicht eine Möglichkeit, dem Befehl zu "sagen", dass er die Nachricht nicht als *INFO sondern als *NOTIFY versendet?

    Oder ein API statt CPYFRMSTMF, welches entsprechende Informationen bietet beim Abschneiden? (ich habe nur QHFxxx-APIs gefunden, die nur in QDLS und QOPT funktionieren)

    Lösbar ist das ganze mit RCVMSG * *PGMQ *INFO, der die *PGMQ des aktuellen Call Stack Entries ausliest. So könnte man alle Nachrichten des aktuellen Aufrufs des Programms auslesen und wenn CPIA083 dabei ist, reagieren. Das ist hier in der Firma aber nicht gewünscht.

    Ich dürfte, wenn es denn ginge, den CL-Befehl über System(Befehl) oder QCMDEXC aus einem RPG herraus ausführen und anschließend über ein API die *PGMQ auslesen. Aber der Aufruf bekommt anscheinend einen neuen Call-Stack-Entry und dieser ist ja nach Beendigung des QCMDEXC wieder verschwunden, also kann ich wohl nicht die *PGMQ des aktuellen Call-Stack-Entries auslesen und auch nicht die *PGMQ des Call-Stack-Entries, in der QCMDEXC lief, oder?

    Im JobLog lesen ist hier auch nicht erwünscht...

    Ich wäre über jede Anregung sehr dankbar!

    Ansonsten wünsche ich allen AS400/iSeries-Kollegen ein frohes Osterfest!

    Andreas

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.873

    Post

    Hallo,

    hast Du Dir eigentlich schon mal das API QMHRCVPM (Receive Program Message) angeschaut?

    Ich denke mit diesem API hast Du weitaus mehr Möglichkeiten als mit RCVMSG und Du kannst es direkt in deinem RPG-Programm aufrufen.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  3. #3
    Registriert seit
    Apr 2003
    Beiträge
    3

    Post

    Wenn du ein ILE-Programm verwendest, muss das RCV-Programm (CL) auch ILE mit der ActivationGroup *CALLER [CRTBNDCL ... ACTGRP(*CALLER)] sein (oder das Programm als Modul mit einbinden).
    Der RCVMSG muss sich auch immer auf PGMQ(*PRV) beziehen. Um alle Nachrichten auszulesen, mußt du dir den MSGKEY merken und damit dann die vorherige oder nachfolgende Antwort auslesen, bis dein CPA-Nachricht kommt.

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241

    Post

    QCMDEXC leitet alle Nachrichten an seinen Stack an das aufrufende Programm weiter, so dass mittels QMHRCVPM die Nachrichten des eigenen Stacks gelesen werden können.

    Das Problem ist hier nur, den richtigen Aufsetzpunkt zu finden. Wenn du nämlich ein QCMDEXC mehrmals ausgeführt hast, must du dir den MSGKEY der letzten gelesenen Nachricht merken und mit diesem wieder aufsetzen, da du sonst vorherige Nachrichten verarbeitest, die mit dem gerade aufgerufenen nichts mehr zu tun haben.

    Ich würde die ganze Arbeit des QCMDEXC in ein CLP verlegen, dem man als Parameter die Pfade und einen Fehlercode übergibt.
    Das CLP kann dann den CPYFRMSTMF ausführen und mittels RCVMSG und MONMSG diverse Fehlercodes zurückgeben.
    So hat dann auch jeder Aufruf wieder seine eigene PGMQ, so dass auch tatsächlich nur Meldungen dieses Aufrufes auftreten können.
    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

Similar Threads

  1. Nachrichten aus Jobprotokoll lesen
    By hgunz in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 20-11-06, 16:27
  2. Nachrichten vom QSYSOPR mit F13 gelöscht
    By cassi in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 12-11-05, 17:20
  3. Info über offene QSYSOPR Nachrichten per Mail
    By bjoern in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 21-07-05, 07:57
  4. Monmsg TCP3211 ?
    By Robi in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 20-07-05, 14:27
  5. Frage zu MONMSG
    By hs in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 14-08-02, 07:09

Berechtigungen

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