RPGの実行中でオブジェクトの存在を
チェックしたい場合がある。
ILE-RPGのフリー・フォーマットを使えば
簡単に検査することができる。
_
[RPG : TESTCHKB ]
ソースはこちらから
0001.00 H DFTNAME(TESTCHKB) DATEDIT(*YMD/) BNDDIR('QC2LE')
0002.00 D*( SYSTEM のプロトタイプ宣言 )
0003.00 D SYSTEM PR 10I 0 EXTPROC('system')
0004.00 D CMDSTR * VALUE OPTIONS(*STRING)
0005.00 D bSPOOLWTR S 1N INZ(*OFF)
0006.00
0007.00 /FREE
0008.00 IF SYSTEM('CHKOBJ SPOOLWTR *LIB') = 0;
0009.00 bSPOOLWTR = *ON;
0010.00 ENDIF;
0011.00 /END-FREE
0012.00 C SETON LR
[解説]
関数 : system は C言語の関数であり QCMDEXCと同じで
コマンドを実行するAPIでもある。
ここではライブラリー: SPOOLWTR が存在しているのかを
CHKOBJコマンドを使ってチェックしている。
C言語の関数をRPGで使えるようにするには
H仕様書で BNDDIR(‘QC2LE’) を宣言する必要がある。
次にsystem関数のプロトタイプを
0002.00 D*( SYSTEM のプロトタイプ宣言 )
0003.00 D SYSTEM PR 10I 0 EXTPROC('system')
0004.00 D CMDSTR * VALUE OPTIONS(*STRING)
として宣言する。
後はフリー・フォーマットで
SYSTEM('CHKOBJ SPOOLWTR *LIB')
を実行するだけであり成功時、すなわち SPOOLWTR という名前の
ライブラリーが見つかったときの結果は 0 の値が戻る。
失敗したときは -1 ではなく 1の値が戻る。
このようにフリー・フォーマットをうまく使えば
RPG と CLPの混在利用は非常にわかりやすく簡単に実行することが
できる。
_
