PDA

View Full Version : Nachricht in QSYSOPR löschen, nicht ausgeben



Seiten : [1] 2

svit
21-05-15, 15:42
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.

Fuerchau
21-05-15, 15:52
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.

svit
21-05-15, 16:02
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)

Fuerchau
21-05-15, 16:11
Ja, das hast du korrekt erkannt.
Nur musst du mit MSGTYPE(*NEXT) zum Key weiterlesen.

svit
22-05-15, 11:31
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)

svit
22-05-15, 11:37
Was ist ein MSGKEY ?
CPC1125

Fuerchau
22-05-15, 12:22
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.

svit
22-05-15, 13:07
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.)

Fuerchau
22-05-15, 13:15
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.

svit
22-05-15, 13:22
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.