Ich würde den Prototyp wie folgt definieren.
Die maximale Länge, die der Command (Parameter 1) haben kann beträgt 32702 Byte. Und dann gibt es noch einen dritten, optionalen Parameter.
Da alles Input-Parameter sind, können sie mit dem Schlüssel-Wort CONST definiert werden. Damit können abweichende Feldlängen, Konstanten und Literale als Parameter übergeben werden. Beim Aufruf werden temporäre Felder mit den erwarteten Feld-Definitionen erstellt und die Adresse dieser Felder an das aufgerufene Programm übergeben.
PHP-Code:
D QCMDEXC PR ExtPgm('QCMDEXC')
D P$Cmd 32702A const options(*VARSIZE)
D P$CmdLen 15P 5 const
D P$IGC 3A const options(*NoPass)
D Cmd S 256 varying
*******************************************
/Free
Cmd = 'CHGCURLIB CURLIB(SMS)';
QCmdExc(Cmd: %Len(Cmd));
*InLR = *On;
/End-Free
Das API system hat den Vorteil, dass die Feldlänge nicht angegeben werden muss.
Dafür kann man im Fehlerfall allenfalls an die Message-Id, jedoch nicht an die variablen Message-Texte oder den aufbereiteten Message-Text heran kommen.
Bei der Verwendung von QCMDEXC erhält man den Message-Text in der Programm-Status-Datenstruktur auf Stelle 90-170 und die Message-Id auf Stelle 40-46.
Birgitta
Bookmarks