CALLコマンドは
?CALL OBJLIB/PGM
のようにCLP中でプロンプト表示しようとしても
エラーになってプロンプト表示することはできない。
解決方法としてQCMDEXC に組み込めばエラーなく
プロンプト表示することができる。
[CLP: TESTCALL ]
ソースはこちらから
0001.00 PGM
0002.00 DCL VAR(&CMDSTR) TYPE(*CHAR) LEN(128)
0003.00 DCL VAR(&CMDLEN) TYPE(*DEC) LEN(15 5)
0004.00 DCL VAR(&NULL) TYPE(*CHAR) LEN(1) VALUE(X'00')
0005.00
0006.00 CHGVAR VAR(&CMDSTR) VALUE('?CALL QTROBJ/PGM201' +
0007.00 *TCAT &NULL)
0008.00 CHGVAR VAR(&CMDLEN) VALUE(%SCAN(&NULL &CMDSTR) -1)
0009.00 CALL PGM(QCMDEXC) PARM(&CMDSTR &CMDLEN)
0010.00 MONMSG CPF6801
0011.00 ENDPGM
[解説]
0004.00 DCL VAR(&NULL) TYPE(*CHAR) LEN(1) VALUE(X'00')
0005.00
0006.00 CHGVAR VAR(&CMDSTR) VALUE('?CALL QTROBJ/PGM201' +
0007.00 *TCAT &NULL)
も最後尾に NULL(0x00)をつけてそれを検索することによって
実際の長さを検出している。
