SELECT命令一括実行ツールのプログラム例(3/3)

IBM eSever iSeries専用。RPGとCLPから構成。
(3)プログラム名:EXSQ30C  タイプ:CLP

PGM        PARM(&POUT)
DCL        VAR(&POUT) TYPE(*CHAR) LEN(1)
DCL        VAR(&WSID) TYPE(*CHAR) LEN(10)
DCL        VAR(&USER) TYPE(*CHAR) LEN(10)
DCL        VAR(&NBR)  TYPE(*CHAR) LEN(06)
DCL        VAR(&RCDS) TYPE(*DEC) LEN(10 0)
/*開始*/
RTVJOBA    JOB(&WSID) USER(&USER) NBR(&NBR)
/*2回目以降のとき、セパレータを実行ログ用ファイルに追加する*/
RTVMBRD    FILE(QTEMP/EXSQLLG) NBRCURRCD(&RCDS)
IF         COND(&RCDS *GE 1) THEN(DO)
CPYF       FROMFILE(TOOLLIB/EXSQF1) +
             TOFILE(QTEMP/EXSQLLG) +
             TOMBR(EXSQLLG) MBROPT(*ADD) FMTOPT(*NOCHK)
ENDDO
/*実行するSELECT命令を実行ログ用ファイルに追加する*/
CPYF       FROMFILE(QTEMP/EXSQDT) TOFILE(QTEMP/EXSQLLG) +
             FROMMBR(EXSQDT) TOMBR(EXSQLLG) +
             MBROPT(*ADD) FMTOPT(*CVTSRC)
/*コメント行ならば、ログに残すだけ*/
IF         COND(&POUT *EQ 'N') THEN(GOTO CMDLBL(TAG900))
/*1つのSELECT命令になっているので、CRTQMQRYしてSTRQMQRYする*/
/* QPQXPRTFの名前で実行結果がスプール出力される*/
DLTQMQRY   QMQRY(QTEMP/EXESQL)
MONMSG     MSGID(CPF0000)
CRTQMQRY   QMQRY(QTEMP/EXESQL) SRCFILE(QTEMP/EXSQDT) +
             SRCMBR(EXSQDT)
STRQMQRY   QMQRY(QTEMP/EXESQL) OUTPUT(*PRINT)
MONMSG     MSGID(QWM2701) EXEC(DO)
CPYF       FROMFILE(TOOLLIB/EXSQF2) +
             TOFILE(QTEMP/EXSQLLG) +
             TOMBR(EXSQLLG) MBROPT(*ADD) FMTOPT(*NOCHK)
ENDDO
/*実行結果の印刷を吸い上げて、1つのメンバーに書きだす*/
CPYSPLF    FILE(QPQXPRTF) TOFILE(QTEMP/EXSQLLG) +
             JOB(&NBR/&USER/&WSID) SPLNBR(*LAST) +
             MBROPT(*ADD)
MONMSG     MSGID(CPF3303 CPF3309 CPF3342 CPF3344 CPF3478)
DLTSPLF    FILE(QPQXPRTF) JOB(&NBR/&USER/&WSID) +
             SPLNBR(*LAST)
MONMSG     MSGID(CPF3303 CPF3309 CPF3342 CPF3344 CPF3478)
TAG900:
/*実行するSELECT命令ファイルを、次のループの為に消去する*/
CLRPFM     FILE(QTEMP/EXSQDT) MBR(EXSQDT)
MONMSG     MSGID(CPF0000)
TAG999:
ENDPGM

(注1)TOOLLIB/EXSQF1とは、セパレータとして文字"----+----:"で80桁になる1行のレコードを事前に準備。
(注2)TOOLLIB/EXSQF2とは、「SELECT命令が正しく実行されませんでした。」というメッセージの1行のレコードを事前に準備。


[プログラミング] SELECT命令を一括実行するツールを作成してみた
http://d.hatena.ne.jp/saul/20101125/p1
[プログラミング] SELECT命令一括実行ツールのプログラム例(1/3)
http://d.hatena.ne.jp/saul/20101125/p2
[プログラミング] SELECT命令一括実行ツールのプログラム例(2/3)
http://d.hatena.ne.jp/saul/20101125/p3