コマンドラインから、直接、CALL命令(プログラム呼び出し)を実行する場合、数値パラメータを渡す必要がある場合の対処方法です。
パック10進数であれば、パラメータにて数値を渡すことが可能です。
下記のようなサンプルを作成してみました。
TIGER/RPGLESRC SAMPLE27
D MAIN PR EXTPGM('SAMPLE27') D 3P 0 D 5P 2 D 8P 0 D 4P 0 D* D MAIN PI D P@PARM1 3P 0 D P@PARM2 5P 2 D P@PARM3 8P 0 D P@PARM4 4P 0 D* C********************************************************************* C* MAIN C********************************************************************* /FREE DSPLY P@PARM1; DSPLY P@PARM2; DSPLY P@PARM3; DSPLY P@PARM4; DSPLY (P@PARM2 + 100); *INLR = *ON; RETURN; /END-FREE
パラメータの書き方
数値パラメータの書き方は、下記の通りになります。数値1と数値-1の例になります。
数値 1 ・・・ X'001F' 数値 -1 ・・・ X'001D'
P-COMM上のコマンド入力画面より、CALL命令を実施しますと、結果がきちんと表示されました!
> CALL PGM(TIGEROBJ/SAMPLE27) PARM(X'001F' X'00525F' X'020150122F' X'00777D') DSPLY 1 DSPLY 525 DSPLY 20150122 DSPLY 777- DSPLY 10525
注意点
- 小数点以下ありの場合でも、カンマは不要です。
- パラメータの桁数が偶数の場合、入力する値の先頭にひとつ0を追加する必要があります。
- なお、RPGパラメータ定義をゾーン10進数にして実行すると、10進数エラーになります。詳しいことはわかりませんが、私はパラメータを数値にする場合は、パック10進数で統一しています。
> CALL PGM(TIGEROBJ/SAMPLE27) PARM(X'001F' X'00525F' X'020150122F' X'00777D') 10 進数データ・エラー。 (C G D F) 10 進数データ・エラーが起こった。