RPGプログラムからDLYコマンドを実行させたいケースがありましたので、まとめます。
下記のサイトを参考にさせていただきました。
Capturing QCMDEXC error codes | RPGPGM.COM - From AS400 to IBM i
RPGプログラムからDLYJOBを実行するサンプル
- 単純にプログラム実行中に3秒待つだけのものです。前後にTIMESTAMPを書き出し、実際に3秒間待ち状態になっているかかを確認します。
D MAIN PR EXTPGM('SAMPLE32') D MAIN PI D* D #QCMDEXC DS QUALIFIED D P@NCMD 132 // CMD STRING D P@QLEN 15P 5 // CMD STRING LENGTH D QCMDEXC PR EXTPGM('QCMDEXC') D P@NCMD LIKE(#QCMDEXC.P@NCMD) // CMD STRING D OPTIONS(*VARSIZE) CONST D P@QLEN LIKE(#QCMDEXC.P@QLEN) // CMD STRING LENGTH D CONST D* /FREE DSPLY %TIMESTAMP(); #QCMDEXC.P@NCMD = 'DLYJOB DLY(3)'; #QCMDEXC.P@QLEN = %LEN(#QCMDEXC.P@NCMD); CALLP(E) QCMDEXC(#QCMDEXC.P@NCMD:#QCMDEXC.P@QLEN); DSPLY %TIMESTAMP(); *INLR = *ON; RETURN; /END-FREE
実行結果
> CALL PGM(TIGEROBJ/SAMPLE32) DSPLY 2015-04-01-22.01.07.058000 DSPLY 2015-04-01-22.01.10.097000
- 成功です! 今回は、DLYコマンドを試しましたが、他にも応用が利きそうですね♪