PDA

View Full Version : QCMDEXEC in free-RPG



Gimli
22-04-04, 13:04
Hallo an alle Boarder,

ich habe bei einem Prototype-PGM Aufruf (QCMDEXEC) ein Problem: der Programmaufruf wird fehlerhaft beendet (das kann passieren, da ich Objekte über den QCMDEXEC löschen möchte und wenn das Objekt schon nicht mehr existiert, dann kommt es zu einem Fehler)!
Kann mir bitte jemand mal einen Hinweis geben, wie ich auf einen Programmfehler des QCMDEXEC im RPG reagieren kann, so dass mein RPG-Programm weiterläuft ??

Bitte keine Hinweise, dass ich ein CL-Programm dafür aufrufen soll, ich möchte das über ein RPG lösen !!

Wir haben eine AS/400 mit V5R2M0!

Danke im Voraus für Eure Hilfe.

Gruss Marc

Fuerchau
22-04-04, 13:09
Am besten mit einer Monitor-Group:

/free
monitor;
callp qcmdexec ...
on-error *all;
endmon;
/end-free

KM
22-04-04, 14:47
Hallo Marc,

Du könntest das Ganze auch über die C-Funktion SYSTEM lösen. Dann kannst Du bei Bedarf die CPF-Nachricht abfragen. Dazu brauchst Du das Binderverzeichnis QC2LE. Die Definition sieht dann folgendermaßen aus:

H BNDDIR('QC2LE')
D SYSTEM PR 10I 0 EXTPROC('SYSTEM')
D * VALUE OPTIONS(*STRING)
D CPFMSG S 7 IMPORT('_EXCP_MSGID')
D * VALUE OPTIONS(*STRING)
/FREE
SYSTEM('Befehl')
.
/END-FREE

Gruß,
KM

AndreasH
28-04-04, 14:31
sollte auch mit erweiterung E problemlos abzufangen sein. Ist einfach die Geschmacksfrage was man "hübscher" findet:


D AS400CMD PR EXTPGM('QCMDEXC')
D CMD 512 CONST
D LENCMD 15P 5 CONST
/free
monitor;
AS400CMD('machwas');
on-error *all;
endmon;
/end-free

funktioniert genauso wie


callp(E) AS400CMD('machwas');

Monitor benötigt halt ein paar mehr Zeilen, kann aber wunderbar die einzelnen Monitorgruppen abfragen.
callp(E) ist ein Einzeiler, wenn dir der Fehler egal ist.
In beiden Fällen kannst du über die SD Fehlercodes im Fehlerfall genauer abfragen.
Gruß