SpoolライターVer5.0

5. CVTSPLF コマンドの使用方法

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化についてご説明します。