CVTSPLFコマンドほユーザーCLPに組み込む例をご紹介します。
[例] PGM006CL:商品マスター一覧表
0001.00 PGM
0002.00 /*-------------------------------------------------------------------*/
0003.00 /* PGM006CL : 商品マスター一覧表 */
0004.00 /* */
0005.00 /* 2020/04/01 作成 */
0006.00 /*-------------------------------------------------------------------*/
0007.00 DCL VAR(&MSG) TYPE(*CHAR) LEN(132)
0008.00 DCL VAR(&MSGID) TYPE(*CHAR) LEN(7)
0009.00 DCL VAR(&MSGF) TYPE(*CHAR) LEN(10)
0010.00 DCL VAR(&MSGFLIB) TYPE(*CHAR) LEN(10)
0011.00 DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(132)
0012.00 DCL VAR(&TYPE) TYPE(*CHAR) LEN(1)
0013.00 DCL VAR(&TOPGMQ) TYPE(*CHAR) LEN(10)
0014.00 DCL VAR(&MSGTYPE) TYPE(*CHAR) LEN(10) +
0015.00 VALUE('*ESCAPE ')
0016.00 DCL VAR(&ERR) TYPE(*CHAR) LEN(1)
0017.00 DCL VAR(&NULL4) TYPE(*CHAR) LEN(4) +
0018.00 VALUE(X'00000000')
0019.00 MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))
0020.00
0021.00 /*( 環境の取得 )*/
0022.00 RTVJOBA TYPE(&TYPE)
0023.00 IF COND(&TYPE *EQ '0') THEN(DO) /* バッチ */
0024.00 CHGVAR VAR(&TOPGMQ) VALUE('*SYSOPR ')
0025.00 ENDDO /* バッチ */
0026.00 ELSE CMD(DO) /* 対話式 */
0027.00 CHGVAR VAR(&TOPGMQ) VALUE('*TOPGMQ ')
0028.00 ENDDO /* 対話式 */
0029.00
0030.00 /*( 入力パラメータの検査 )*/
0031.00
0032.00 /*( プログラムの実行 )*/
0033.00 OVRPRTF FILE(QPRINT) HOLD(*YES) LVLCHK(*NO) +
0034.00 SECURE(*YES) OVRSCOPE(*JOB)
0035.00 CALL PGM(QTROBJ/PGM006)
0036.00 DLTOVR FILE(QPRINT) LVL(*JOB)
0037.00 SPOOLWTR/CVTSPLF SPLF(QPRINT) JOB(*) SPLNO(*LAST) +
0038.00 OUTPUT(*PDF) OPTION(*SEND) +
0039.00 TOADDRESS('192.168.1.98') +
0040.00 TOPASS('/KEIRI/%USER/QPRINT_%DATE%TOME.PDF+
0041.00 ') USER(quattro) PASSWORD(qtr1129)
0042.00 DLTSPLF FILE(QPRINT) JOB(*) SPLNBR(*LAST)
0043.00 RETURN
0044.00
0045.00 ERROR: RCVMSG MSGTYPE(*LAST) RMV(*NO) MSG(&MSG) +
0046.00 MSGDTA(&MSGDTA) MSGID(&MSGID) MSGF(&MSGF) +
0047.00 MSGFLIB(&MSGFLIB)
0048.00 SNDMSG: IF COND(&MSGID *EQ ' ') THEN(DO)
0049.00 SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&MSG) +
0050.00 TOMSGQ(&TOPGMQ) MSGTYPE(&MSGTYPE)
0051.00 MONMSG MSGID(CPF2400) EXEC(RETURN)
0052.00 ENDDO
0053.00 ELSE CMD(DO)
0054.00 SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
0055.00 MSGDTA(&MSGDTA) TOMSGQ(&TOPGMQ) +
0056.00 MSGTYPE(&MSGTYPE)
0057.00 MONMSG MSGID(CPF2400) EXEC(RETURN)
0058.00 ENDDO
0059.00 ENDPGM
[解説]
この例は商品マスター一覧表を印刷ファイル: QPRINT に出力してそのスプールを
PDF化して別のPCサーバーに送信するCLPです。
CVTSPLFで変換する前に
0033.00 OVRPRTF FILE(QPRINT) HOLD(*YES) LVLCHK(*NO) + 0034.00 SECURE(*YES) OVRSCOPE(*JOB)
でスプールをHOLDにして出力されないようにします。
次に
0035.00 CALL PGM(QTROBJ/PGM006) 0036.00 DLTOVR FILE(QPRINT) LVL(*JOB)
として実行がおわれば DLTOVR でオーバーライドを解除します。
0037.00 SPOOLWTR/CVTSPLF SPLF(QPRINT) JOB(*) SPLNO(*LAST) +
0038.00 OUTPUT(*PDF) OPTION(*SEND) +
0039.00 TOADDRESS('192.168.1.98') +
0040.00 TOPASS('/KEIRI/%USER/QPRINT_%DATE%TOME.PDF+
0041.00 ') USER(quattro) PASSWORD(qtr1129)
が CVTSPLF でPDF変換している部分です。
オプション(OPTION)は *SEND としてFTP送信を指示します。
PCサーバーのIPアドレス: 192.168.1.98 とそのサーバーにログインするための
ユーザー: quattro, パスワード : qtr1129 を指定して送信先のファイルとして
/KEIRI/%USER/QPRINT_%DATE%TOME.PDF
という名前を指定します。
%USER : ユーザー名、この場合は &USER の名前。
%DATE : 本日の日付
%TIME : 現在の時刻
の欄には値が自動的に入ります。
最後に
0042.00 DLTSPLF FILE(QPRINT) JOB(*) SPLNBR(*LAST)
で変換済みのスプールを削除しておきます。
次回は外字のPDF化についてご説明します。
