View Full Version : QCMDEXC und Parameterlänge
Hallo Herr Bender,
Ich bin nun mal ein "Augenmensch" . in welchem Handbuch finde ich denn
system() beschrieben.
Gruß Franz
Hallo Herr Franz,
ILE C runtime library reference
mfg
Dieter Bender
Hallo Fabax,
die Funktion system() findest Du unter:
ILE C/C++ for iSeries Run-Time Library Functions (http://publib.boulder.ibm.com/iseries/v5r2/ic2924/books/sm18/c4156071.pdf)
Darstellung von Hochkommata in einem Text-String:
Werden Hochkommata in einem Text-String benötigt, muss das Hochkomma verdoppelt werden.
Dann klappt's auch mit dem QCMDEXC:
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 Parm1 S 10A
D Programm S 10A
D Command S 60A Varying
/Free
Command = 'CALL PGM(' +%Trim(Programm) + ') ' +
'PARM(''' + Parm1 + ''')';
Monitor;
QcmdExc(Command: %Len(Command));
On-Error;
EndMon;
/End-Free
Das Hochkomma durch den Hex-Wert x'7D' darzustellen, macht nur dann Sinn, wenn die Anwendung niemals mit anderer Sprache laufen soll. x'7D' ist nicht international.
Birgitta
Tolle Diskussion aber doch Sinnlos:
1. Die maximale Länge von Kommandos über QCMDEXC ist (per Handbuch) auf 6000 Zeichen beschränkt !
2. Doppelte Hochkomma (") sind ok, aber einfache Hochkomma müssen verdoppelt werden, was aber zu einm CPF0001 führen würde.
3. Alternative zu QCMDEXC ist QCAPCMD
http://publib.boulder.ibm.com/iseries/v5r2/ic2924/info/apis/qcapcmd.htm
Dort können auch größere Kommandos übergeben werden.
PS:
Was das einzelne Hochkomma angeht, so ist dieses im Latin1-Raum auf jeder CCSID identisch. Siehe:
http://publib.boulder.ibm.com/iseries/v5r2/ic2924/info/nls/rbagsinvariantcharset.htm