CL

103. 印刷スプールをデータ・ベースに変換する (1)

印刷スプール・ファイルをデータ・ベースに変換する
三つの方法について紹介する。
最初は最も簡単な CPYSPLF を使う方法である。
この方法はポピュラーな方法としてよく知られているが
まだ使ったことのない方のために紹介する次第である。

1.印刷スプールを受け入れるデータ・ベースを
漢字 *YES で QTEMP に 132 バイトで作成する。
CRTPF FILE(QTEMP/QPRINT) RCDLEN(132) IGCDTA(*YES)
    LVLCHK(*NO) AUT(*ALL)
2.印刷ファイルがプリンターに印刷出力されてしまわないように
*HOLD にオーバーライドして凍結する。
OVRPRTF FILE(QPRTOBJD) OUTQ(QGPL/QPRINT) HOLD(*YES)
    LVLCHK(*NO) SECURE(*YES) OVRSCOPE(*JOB) OPNSCOPE(*JOB)
3.印刷プログラムを実行する。
DSPOBJD OBJ(SPOOLWTR) OBJTYPE(*LIB) OUTPUT(*PRINT)
4.CPYSLF で最後に出力された印刷スプールを QTEMP に
作成しておいたデータ・ベースに出力する。
CPYSPLF FILE(QPRTOBJD) TOFILE(QTEMP/QPRINT) JOB(*)
    SPLNBR(*LAST)
5.不要になった印刷スプールを削除する。
DLTSPLF FILE(QPRTOBJD) JOB(*) SPLNBR(*LAST)
【 サンプル CLP : TESTPRT 】
0001.00              PGM
0002.00              DCL        VAR(&USER) TYPE(*CHAR) LEN(10)
0003.00              DCL        VAR(&JOBNBR) TYPE(*CHAR) LEN(6)
0004.00
0005.00              RTVJOBA    USER(&USER) NBR(&JOBNBR)
0006.00              OVRPRTF    FILE(QPRTOBJD) OUTQ(QGPL/QPRINTS) HOLD(*YES) +
0007.00                           LVLCHK(*NO) SECURE(*YES) OVRSCOPE(*JOB) +
0008.00                           OPNSCOPE(*JOB)
0009.00              CRTPF      FILE(QTEMP/DSPDUMP) RCDLEN(132) IGCDTA(*YES) +
0010.00                           LVLCHK(*NO) AUT(*ALL)
0011.00              DSPOBJD    OBJ(SPOOLWTR) OBJTYPE(*LIB) OUTPUT(*PRINT)
0012.00              CPYSPLF    FILE(QPRTOBJD) TOFILE(QTEMP/DSPDUMP) JOB(*) +
0013.00                           SPLNBR(*LAST)
0014.00              DLTSPLF    FILE(QPRTOBJD) JOB(*) SPLNBR(*LAST)
0015.00              ENDPGM
【 解説 】

動作の詳細は上記のとおりであるがこのプログラムはサンプルであるので
実用上、必要なエラー監視などの機能は用意されていない。
あくまで学習用としてのサンプルに過ぎない。