印刷スプール・ファイルをデータ・ベースに変換する
三つの方法について紹介する。
最初は最も簡単な 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
【 解説 】
動作の詳細は上記のとおりであるがこのプログラムはサンプルであるので
実用上、必要なエラー監視などの機能は用意されていない。
あくまで学習用としてのサンプルに過ぎない。