CL

193. CALLコマンドをプロンプト表示するには

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)をつけてそれを検索することによって
実際の長さを検出している。