View Full Version : Nachricht in QSYSOPR löschen, nicht ausgeben
Hallo *all,
Problem:
ich möchte das Fehler CPC1125 nicht in der QSYSOPR-Warteschlange erscheint.
Meine Lösungsansätze:
- Nachricht ausgeben und anschliessend löschen (keine ahnung wie)
- Bewertungscode der Fehler von 50 auf 10 setzen (gemacht, erscheint trotzdem)
Habt ihr ev. eine weitere möglichkeit?
signoff.
Die Warteschlange kann mittels RCVMSG per CLP gelesen werden.
Auf CPC1125 filtern und per RMVMSG dann löschen (Achtung: nicht schon beim RCVMSG).
Dem Programm verbieten, diese Nachricht zu senden, geht ja nicht.
Der Bewertungscode ist nur eine Info.
Meinst du so
ENDJOB JOB(&JOB) OPTION(*IMMED) +
SPLFILE(*NO) LOGLMT(0)
MONMSG MSGID(CPF0000)
RCVMSG MSGQ(QSYSOPR) MSGTYPE(*FIRST) WAIT(1) +
RMV(*NO) KEYVAR(&MSGKEY) MSGID(&MSGID)
MONMSG MSGID(CPF0000)
RMVMSG MSGQ(QSYSOPR) MSGKEY(&MSGKEY)
MONMSG MSGID(CPF0000)
Ja, das hast du korrekt erkannt.
Nur musst du mit MSGTYPE(*NEXT) zum Key weiterlesen.
Habe geändert,
aber RCVMSG leifert kein MSGkey zurück.
ENDJOB JOB(&JOB) OPTION(*IMMED) +
SPLFILE(*NO) LOGLMT(0)
MONMSG MSGID(CPF0000)
RCVMSG MSGQ(QSYS/QSYSOPR) MSGTYPE(*NEXT) +
MSGKEY(&MSGKEY) RMV(*NO)
MONMSG MSGID(CPF0000)
RMVMSG MSGQ(QSYSOPR) MSGKEY(&MSGKEY)
MONMSG MSGID(CPF0000)
Was ist ein MSGKEY ?
CPC1125
Nun, &MSGKEY liefert eine 4-Byte-ID.
Beim 1. RCVMSG musst du *FIRST wählen, dann wird ein MSGKEY geliefert.
Bei allen weiteren mit *NEXT weiterlesen.
Wenn du allerdings den RMVMSG gemacht hast, kannst du mit diesem MSGKEY keinen *NEXT mehr machen. Dies müsstest du vorher tun.
Kann ich nicht einfach,
die Meldung von dem letzten Befehl empfangen?
(ich habe im Programm ENDJOB... , dieses ENDjob gibt die Meldung CPC1125, und die möchte ich abfangen und löschen.)
Leider nein.
ENDJOB beendet deinen Job, dies ist dann die letzte Anweisung deines Programmes.
Wenn du einen MONMSG danach machst, wird dieser nur ausgeführt, wenn der ENDJOB aus irgendwelchen Gründen scheitert (habe ich aber noch nie erlebt).
Das Löschen aus der QSYSOPR muss also ein anderer Job machen.
habe mich falsch ausgedruckt.
ich habe ein Programm , dieses programm macht ENDJOB auf ein anderen Job.
D.h. Das Programm läuft ganz normal weiter.