CLP でも RPG の /COPY を使えたら、と思ったことはないだろうか ?
OS Ver6.1 からは INCLUDE コマンドというソースをインクルードするためのコマンドが IBM によって提供されている。
使用方法はカンタンであり、頻繁に使用する CLP のソース・ステートメントをメンバーとして登録して、
これらを INCLUDE コマンドによって参照するようにすれば作成するソースは大幅に短くてシンプルな
見やすいものとなる。
ここではその使用方法の例をサンプルとして紹介する。
【 参照する CPY_ERR メンバー 】
---------------------------------------------------------------------------------- 0001.00 DCL VAR(&MSG) TYPE(*CHAR) LEN(132) 0002.00 DCL VAR(&MSGID) TYPE(*CHAR) LEN(7) 0003.00 DCL VAR(&MSGF) TYPE(*CHAR) LEN(10) 0004.00 DCL VAR(&MSGFLIB) TYPE(*CHAR) LEN(10) 0005.00 DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(512) 0006.00 DCL VAR(&TYPE) TYPE(*CHAR) LEN(1) 0007.00 MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR)) 0008.00 0009.00 RTVJOBA TYPE(&TYPE) ----------------------------------------------------------------------------------
【 参照する CPY_ERR2 メンバー 】
---------------------------------------------------------------------------------- 0001.00 ERROR: RCVMSG MSGTYPE(*LAST) RMV(*NO) MSG(&MSG) + 0002.00 MSGDTA(&MSGDTA) MSGID(&MSGID) MSGF(&MSGF) + 0003.00 MSGFLIB(&MSGFLIB) 0004.00 SNDMSG: 0005.00 IF COND(&TYPE *EQ '0') THEN(DO) 0006.00 SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) + 0007.00 MSGDTA(&MSGDTA) TOMSGQ(*SYSOPR) + 0008.00 MSGTYPE(*ESCAPE) 0009.00 MONMSG CPF0000 0010.00 ENDDO 0011.00 ELSE CMD(DO) 0012.00 SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) + 0013.00 MSGDTA(&MSGDTA) TOMSGQ(*TOPGMQ) + 0014.00 MSGTYPE(*ESCAPE) 0015.00 MONMSG CPF0000 0016.00 ENDDO ----------------------------------------------------------------------------------
【 CPY_ERR と CPY_ERR2 を参照するサンプル CLP : TEST_ERR 】
----------------------------------------------------------------------------------------- 0001.00 PGM 0002.00 INCLUDE SRCMBR(CPY_ERR) 0003.00 0004.00 CHKOBJ OBJ(AAA) OBJTYPE(*FILE) 0005.00 RETURN 0006.00 0007.00 INCLUDE SRCMBR(CPY_ERR2) 0008.00 ENDPGM -----------------------------------------------------------------------------------------
【 解説 】
コンパイルはいつもと同じ CRTCLPGM でよい。
ただしソース・ライブラリーもライブラリー・リストに存在している必要がある。
また INCLUDE コマンドは明示的にライブラリーやインクルードするソース・ファイルを指定することもできる。