PDA

View Full Version : QCMDEXC und Parameterlänge



Seiten : 1 [2]

fabax
27-02-04, 10:30
Hallo Herr Bender,

Ich bin nun mal ein "Augenmensch" . in welchem Handbuch finde ich denn

system() beschrieben.

Gruß Franz

BenderD
27-02-04, 11:01
Hallo Herr Franz,

ILE C runtime library reference

mfg

Dieter Bender

B.Hauser
27-02-04, 11:06
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

Fuerchau
27-02-04, 11:10
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