[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Apr 2006
    Beiträge
    49

    Mehrere MONMSG hintereinander ? Wie ?

    hallo,
    ist ja schon fast peinlich nach fast 20jähriger as/400 erfahrung, aber wie werden mehrere MONMSG hintereinander abgefragt; z.B. eine explizite MONMSG abfrageb und danach generell CPF0000 falls noch andere fehler auftreten ?

    einfach dann hinter's ENDDO ?

    CPYF ..........
    MONMSG MSGID(CPFxxxx) EXEC(DO)
    .....
    ENDDO
    MONMSG MSGID(CPF0000)

    danke schonmal für die antworten.

    gruß

    christian

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Ja, genau so !!!!!!!!!
    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

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Nachtrag:
    Es gibt da noch eine Hierarchie:

    1. CPFXXYY
    2. CPFXX00
    3. CPF0000

    Ggf. gibt es noch andere Klassen, die vorher ausgelöst werden, z.B.:

    MONMSG RPG0000
    MONMSG CPF0000
    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
    Apr 2006
    Beiträge
    49
    tja, war wohl nix !!!!

    unsere datensicherung ist mal wieder hängengeblieben und dadurch an der i5 rote warnlampe an und code A9003C70; also hart herunterfahren und neu starten.
    ursache war aber wieder der befehl savlib .....
    direkt dahinter frage ich
    SAVLIB .......
    MONMSG MSGID(CPF3785) EXEC(DO)
    .
    dazwischen nochmals ein
    MONMSG MSGID(CPF0000 EXEC(DO)
    für einen anderen Berfehl
    .
    .
    ENDDO (2. Monmsg)
    ENDDO (1. Monmsg)

    und danach die allg. Monmsg für Savlib
    MONMSG MSGID(CPF0000 EXEC(DO)
    SNDMSG .....
    ENDDO

    d.h. die allg. Monsmg für Savlib wird gar nicht erkannt.
    wo habe ich einen denkfehler ?

    bin mal wieder um jede hilfreiche antwort dankbar.


    gruß

    christian

    und dahinter dannab

    und danach

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Versuch's mal so:
    PHP-Code:
    SAVLIB .......
    MONMSG MSGID(CPF3785EXEC(GOTO HdlCPF3785
    MONMSG MSGID(CPF0000EXEC(DO)
    SNDMSG .....
    ENDDO

    Goto Weiter

    HdlCPF3785

    Ausführung DO mit MONMSG CPF0000 für anderen Befehl
    Goto Weiter

    Weiter
    :
    Weitere Verarbeitung 
    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

  6. #6
    Registriert seit
    Nov 2003
    Beiträge
    2.306
    Vielleicht bleibt der SAVLIB ja gleich auf einer CPAnnnn Anfragenachricht (z.B. CPA4060, CPA4086 oder CPA4088) stehen? Oder das Zeitlimit für die Stapelverarbeitung (Parameter BCHTIMLMT des Befehls ENDSBS) ist zu lang eingestellt?

    Was steht im Jobprotokoll dieses Jobs? Was steht in der Systemchronik (DSPLOG) zu diesem Job?

    Der Systemreferenzcode A900 3C70 wird laut Hilfe zum Befehl ENDSBS angezeigt, "solange" sich das System im Status des eingeschränkten Betriebs befindet.

    Machst du auch ein SAVSYS? Falls nicht, müßtest du das System vielleicht überhaupt nicht in den Status des eingeschränkten Betriebs setzen.

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Die MONMSG-Reihenfolge ist wohl korrekt.
    Allerdings kann es sein, dass die MONMSG nicht erreicht werden, wenn es vorher INQ-Nachrichten gibt, die auf Antwort warten.

    Hierfür muss der Job per CHGJOB auf
    a) automatische Antwort mit Default
    oder
    b) auf Antwort über SYSRPYLE
    gestellt werden.

    MONMSG-Folge funktioniert auch so:

    Befehl
    MONMSG CPFXXYY EXEC(DO)
    Weiterer Befehl
    MONMSG CPF0000 EXEC(DO)
    ENDDO
    ENDDO
    MONMSG CPFXX00 EXEC(DO)
    ENDDO
    MONMSG CPF0000 EXEC(DO)
    ENDDO

    Eine Schachtelung ist also durchaus möglich, da die MONMSG sich unmittelbar auf den davor liegenden Befehl beziehen.
    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

  8. #8
    Registriert seit
    Jan 2007
    Beiträge
    189
    Tut mir leid, aber meine Deutch kenntnis reicht nicht für ein lange antwort aus. Machs einfach mit englisch nai.

    My understanding is that one can use monmsg once per command only, but one can monmsg for several messages at a time in 2 different places.
    Example 1.
    Code:
    SAVLIB ...
    monmsg (cpf3785 cpf3786 cpf3787 whatever..) exec(do)
    crtsavf/rewind tape/whatever..
    goto redosavlib
    Example 2.
    Code:
    dcl...
    dcl...
    monmsg (cpf3785) exec(.....)
    monmsg (cpf3786) exec(.....)
    monmsg (cpf0000) exec(.....) 
     
    SAVLIB ...
    monmsg (cpf3787) exec(do)
    whatever
    ...
    enddo

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Es existiert eine Hirarchie bei MONMSG:

    1. CPFXXYY => Spezielle
    2. CPFXX00 => Gruppe
    3. CPF0000 => Generell

    MONMSG erlaubt auch eine Liste, die nacheinander abgearbeitet wird.

    Zusätzlich kann man auch noch auf Dateninhalt vergleichen (Siehe Feldbeschreibung der Nachrichten), so dass man MONMSG weiter spezialisieren kann:

    MONMSG CPFXXYY MSGDTA(...) EXEC(...)
    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

  10. #10
    Registriert seit
    Apr 2006
    Beiträge
    49
    danke schonmal für die antworten; habe das CL kopiert und etwas vereinfacht aber mit genau diesem ablauf und siehe da, es läuft !!! ich habe keine ahnung was da nicht funktioniert hat, da die i5 aber auf A9003C70 gestanden hat, also mehr oder weniger tot war, und wir uns das eigentlich nicht leisten können, werde ich da nicht länger rumbastelen sondern nur die CPF0000 abfragen, dann haben wir eben keine sicherung.

    das hier ist ein auszug aus dem joblog, wobei ich nicht mal weiß welches objekt nicht gesichert wurde, habe 3 mal drüber geschaut und nihts gefunden:

    359 Bibliotheken gesichert, 1 teilweise gesichert, 0 Objekte nicht gesichert.
    (C D I R) CPF3777 von Prozedur SAVBIBCLB empfangen.
    Antwort auf Nachricht in Nachrichtenwarteschlange QSYSOPR erwartet.
    Eintrag nicht im Journal QSQJRN aufgezeichnet. Ursachencode 11.
    (C D I R) CPF3777 von Prozedur SAVBIBCLB empfangen.
    C

  11. #11
    Registriert seit
    Nov 2003
    Beiträge
    2.306
    Zitat Zitat von c.b. Beitrag anzeigen
    ... da die i5 aber auf A9003C70 gestanden hat, also mehr oder weniger tot war, und wir uns das eigentlich nicht leisten können, werde ich da nicht länger rumbastelen sondern nur die CPF0000 abfragen, dann haben wir eben keine sicherung.
    Das stimmt so nicht!

    Aus dem Hilfetext zum Parameter "Zeitlimit für Stapelverarbeitung" des Befehls ENDSBS:
    ... Wenn dieser Parameter angegeben wird, wird das System im Status des eingeschränkten Betriebs beendet, und nur der Stapeljob, der den Befehl ENDSBS ausführt, bleibt aktiv. Solange sich das System im Status des eingeschränkten Betriebs befindet, wird Systemreferenzcode A900 3C70 angezeigt. Sobald das angegebene Zeitlimit erreicht ist, wird der Stapeljob beendet und das steuernde Subsystem erneut gestartet.

  12. #12
    Registriert seit
    Apr 2006
    Beiträge
    49
    aaah, man muss immer erst zweimal auf die nase fallen; i5 stand wieder auf A9003C70; gleicher grund.

    jetzt weiß ich auch was fuerchau gemeint hat, die INQ-message ging nicht an mein CL sondner an QSYSOPR, also konnte diese mit MONMSG gar nicht abgefangen werden. was aber ist jetzt der beste weg, die QSYSOPR-nachrichtenwarteschlange irgendwie versuchen im CL zuzuornden; was ist wenn QSYSOPR diese aber noch epxlizit zugeordnet hat; und würde dann der MONMSG funktionieren ? oder mit ADDRPYLE die nachricht autom beantworten lassen; benötigt man dann hinterher überhaupt noch eine MONMSG ?
    .... man(n) lernt doch immer wieder dazu; wäre nie auf die idee gekommen, dass aus einem batch-job eine nachricht an QSYSOPR geht und ich diese nicht direkt abfangen kann.

    danke an alle

    christian

Similar Threads

  1. Java POI API auf I5 installieren / einrichten
    By User23 in forum IBM i Hauptforum
    Antworten: 19
    Letzter Beitrag: 10-05-06, 11:19
  2. Monmsg
    By Lissy1 in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 29-09-05, 14:34
  3. Monmsg TCP3211 ?
    By Robi in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 20-07-05, 14:27
  4. MONMSG für *INFO Nachrichten, oder anders...
    By AndreasW aus H in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 23-04-03, 14:59
  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
  •