PDA

View Full Version : Nachricht CPA4262 empfangen bei Befehl SAVLIB



Seiten : [1] 2

schatte
27-09-06, 10:51
Hallo,

wenn man in einem Batchjob SAVLIB ausführt, aber das Band schreibgeschützt ist wird ja die Nachricht CPA4262 (Datenträger xxx in Einheit TAP01 ist schreibgeschützt (C R)) erzeugt.

Damit der Job nicht auf MSGW läuft habe ich entsprechend die JOBD angepasst, sodass diese Nachricht automatisch mit C (Cancel) beantwortet wird.

Jedoch kann ich diese Nachricht nicht mit MONMSG empfangen. Mein CL dazu sieht so aus:

SAVLIB LIB(XXX) DEV(TAP01)
MONMSG MSGID(CPF0000) EXEC(DO)
RCVMSG MSGTYPE(*LAST) MSG(&RETTEXT) MSGID(&RETID)
ENDDO

Mit diesen Zeilen empfange ich jedoch nur die Meldung CPF3794 (Sichern/Zurückspeichern ohne Erfolg beendet.) Ich habe auch schon versucht RCVMSG ein zweites Mal auszuführen. Dabei wird jedoch keine Nachricht mehr empfangen.

Was kann ich tun um die wirkliche Fehlermeldung zu empfangen?

Gruß
Matthias Schatte

Fuerchau
27-09-06, 11:00
Doch, und zwar die Antwort. Die Nachricht ist dann nochmal davor, also 3. RCVMSG.

kuempi von stein
27-09-06, 11:03
Hello,

mir ist noch nicht ganz klar, was der Sinn dieser ganzen Geschichte sein soll.

Die CPA könntest Du ja auch direkt abfangen?

k.

DVE
27-09-06, 11:31
Vorausgesetzt du hast das richtige iSeries Release, schau dir die API QTARDSTS an. Damit ermittelst du (vor dem SAV.. Befehl) ob das Band schreibgeschütz ist.

Gruß
DVE

schatte
27-09-06, 11:34
Den CPA kann ich leider nicht direkt abfangen. Das habe ich bereits versucht. Leider springt er darüber.

Ich benötige die Fehlermeldung und die MSGID jeweils in einer Variable.

Ich hab V5R3 als Release.

DVE
27-09-06, 11:38
Bei dem Release kein Problem. Du schreibst Programm in dem du die API aufrufst und ermittelst damit vor dem SAV.. Befehl ob das Band ein Schreibschutz hat.
Damit brauchst du den SAV.. Befehl bei Schreibschutz nicht aufzurufen, oder ??

Gruß
DVE

Fuerchau
27-09-06, 11:41
Wenn du das testest (STRDBG), dann schau doch mal ins Joblog wo die Nachricht steht.

Ggf. kann man auch selber per SNDPGMMSG eine Nachricht ins Joblog stellen, erhält eine KEYVAR zurück und empfängt eben ab KEYVAR alle folgenden Nachrichten (*NEXT) bis zum Ende.

schatte
27-09-06, 11:45
Leider bin ich mit der API Programmierung im Moment noch nicht so vertraut. Muss ich mir mal anschauen.

3 mal RCVMSG hat leider nicht funktioniert.
Kann das sein, dass man mit RCVMSG nur Nachrichten empfangen kannn, die man auch mit MONMSG abfangen könnte?
CPA4262 konnte ich ja nicht mit MONMSG abfangen.

PS: Danke schonmal für eure schnellen Antworten!

DVE
27-09-06, 11:47
Willst du das Programm (incl. Source) haben ??
Gruß
DVE

Kostenlos 'latürlich

schatte
27-09-06, 11:51
Ich habe jetzt meinen Breakpoint an der Stelle gesetzt wo SAVLIB ausgeführt wird. Nach dem ich nun einen Schritt weiter gehe sieht mein Joblog so aus:

6>> call lgsavlib
Datenträger MAT in Einheit TAP01 ist schreibgeschützt. (C R)
? C
Abbruchantwort auf Nachricht CPA4262 empfangen.
Sichern/Zurückspeichern ohne Erfolg beendet.
Schritt in Zeile 45 beendet.

Als nächstes wird das erste RCVMSG ausgeführt. Das joblog sieht dann so aus:
6>> call lgsavlib
Datenträger MAT in Einheit TAP01 ist schreibgeschützt. (C R)
? C
Abbruchantwort auf Nachricht CPA4262 empfangen.
Schritt in Zeile 46 beendet.

Man sieht, dass die empfangene Nachricht entfernt wurde. Danach kommen noch 2 weitere RCVMSG, bei denen jedoch die Variablen alle nicht mehr gefüllt werden und sich auch das Joblog nicht mehr verändert.