SpoolライターVer5.0

63. 複写式伝票をオーバーレイ印刷するサンブル

従来の5577プリンターで複写式の伝票であった印刷を
SpoolライターVer5.0のオーバーレイ印刷に移行することができる。

つまりこれまで

・売上伝票
・納品書
・受領書
・出荷指図書

の4部構成で複写式用紙で印刷していた出力を
これまでと同じように1回の印刷実行だけでPDFを4部作成する方法である。

 ・印刷出力は1回だけ
・PDFにオーバーレイで重ね合せにする書式をJPG画像で4種類用意しておく。
・印刷プログラムには一切変更したり手を加える必要はない。
・印刷ファイル(PRTF)のDDSソースも変更しないしDDSも必要ない。

[コマンド MLTOVL ]

ソースはこちらから

0001.00              CMD        PROMPT(' 複写式伝票をオーバーレイ印刷 ') 


   

[コンパイル]

CRTCMD QTROBJ/MLTOVL SRCFILE(QTRSRC/QCMDSRC) AUT(*ALL)

[実行画面]

 MLTOVL               オーバーレイ印刷 (DDS)                   日付  2023/03/05
                                                                             
                                                                               
             これは複写式伝票を 1 回の実行だけで                               
            4 枚の PDF に変換するサンプルです。                                
                                                                               
                 ・売上伝票                                                    
                 ・納品書                                                      
                 ・受領書                                                      
                 ・出荷指図書                                                  
                                                                               
             の 4 部の PDF を 1 回の実行だけで                                 
             出力することができます。                                          
                                                                               
                                                                               
               実行キーを押して印刷を開始してください。                        
                                                                             
                                                                               
 F3= 終了                                                                      

[DSPF : MLTOVLFM ]

ソースはこちらから

0001.00      A*%%TS  SD  20230228  114933  QTR         REL-V6R1M0  5761-WDS              
0002.00      A*%%EC                                                                      
0003.00      A                                      DSPSIZ(24 80 *DS3)                   
0004.00      A                                      MSGLOC(24)                           
0005.00      A                                      PRINT                                
0006.00      A          R DSPHEAD                                                        
0007.00      A*%%TS  SD  20230228  114933  QTR         REL-V6R1M0  5761-WDS              
0008.00      A                                      TEXT(' 初期画面 ')                   
0009.00      A                                      CF03(03 ' 終了 ')                    
0010.00      A                                      ROLLUP(07)                           
0011.00      A                                      ROLLDOWN(08)                         
0012.00      A                                      BLINK                                
0013.00      A                                      INZRCD                               
0014.00      A                                  1  2'MLTOVL'                             
0015.00      A                                  1 22' オーバーレイ印刷 (DDS)'            
0016.00      A                                      DSPATR(HI)                           
0017.00      A                                  1 63' 日付 '                             
0018.00      A            DATE           8Y 0O  1 70EDTCDE(W)                            
0019.00      A                                  6 13' これは複写式伝票を 1 回の実行だ +  
0020.00      A                                       けで '                              
0021.00      A                                  7 13'4 枚の PDF に変換するサンプルです + 
0022.00      A                                       。 '                                
0023.00      A                                  9 17' ・売上伝票 '                       
0024.00      A                                 10 17' ・納品書 '                        
0025.00      A                                 11 17' ・受領書 '                        
0026.00      A                                 12 14'    ・出荷指図書                  -
0027.00      A                                        '                                 
0028.00      A                                      DSPATR(UL)                          
0029.00      A                                 14 13' の 4 部の PDF を 1 回の実行だけ + 
0030.00      A                                       で '                               
0031.00      A                                 15 13' 出力することができます。 '        
0032.00      A                                 18 15' 実行キーを押して印刷を開始してく +
0033.00      A                                       ださい。 '                         
0034.00      A                                      DSPATR(HI)                          
0035.00      A                                 23  2'F3= 終了 '                         
0036.00      A                                      COLOR(BLU)                          
0037.00      A                                  8 14'                                  -
0038.00      A                                        '                                 
0039.00      A                                      DSPATR(UL)     


                        

[CLP: MLTOVLCL ]

ソースはこちらから

0001.00              PGM                                                       
0002.00 /*-------------------------------------------------------------------*/
0003.00 /*   MLTOVLCL  :   複写式伝票をオーバーレイ印刷                      */
0004.00 /*                                                                   */
0005.00 /*   2023/02/28  作成                                                */
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(&APIERR) TYPE(*CHAR) LEN(116) +            
0017.00                           VALUE(X'000074') /* 2 進数  */               
0018.00              DCL        VAR(&NULL4) TYPE(*CHAR) LEN(4) +               
0019.00                           VALUE(X'00000000')                           
0020.00              DCLF       FILE(QTROBJ/MLTOVLFM)                          
0021.00              DCL        VAR(&DATE6) TYPE(*CHAR) LEN(6)                 
0022.00              DCL        VAR(&DATE8) TYPE(*CHAR) LEN(8)                 
0023.00       /*( PDF 出力に必要な変数 )*/                                     
0024.00              DCL        VAR(&USER) TYPE(*CHAR) LEN(10) +       
0025.00                           VALUE('QTMHHTTP  ')                  
0026.00              DCL        VAR(&JOB) TYPE(*CHAR) LEN(10) +        
0027.00                           VALUE('AURORA_EGN')                  
0028.00              DCL        VAR(&JOBNBR) TYPE(*CHAR) LEN(6)        
0029.00              DCL        VAR(&PDF_FILE) TYPE(*CHAR) LEN(48)     
0030.00              DCL        VAR(&PCCMD) TYPE(*CHAR) LEN(123)       
0031.00              DCL        VAR(&IPADR) TYPE(*CHAR) LEN(15)        
0032.00       /*( IFS の削除に必要な変数 )*/                           
0033.00              DCL        VAR(&PDF_LINK) TYPE(*CHAR) LEN(128)    
0034.00              DCL        VAR(&DATEC) TYPE(*CHAR) LEN(6)         
0035.00              DCL        VAR(&TIME) TYPE(*CHAR) LEN(6)          
0036.00              DCL        VAR(&HH) TYPE(*DEC) LEN(2 0)           
0037.00              DCL        VAR(&HHC) TYPE(*CHAR) LEN(2)           
0038.00              DCL        VAR(&MM) TYPE(*DEC) LEN(2 0)           
0039.00              DCL        VAR(&MMC) TYPE(*CHAR) LEN(2)           
0040.00              DCL        VAR(&SS) TYPE(*DEC) LEN(2 0)           
0041.00              DCL        VAR(&SSC) TYPE(*CHAR) LEN(2)           
0042.00              MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))
0043.00                                                                
0044.00 /*( 環境の取得 )*/                                             
0045.00              RTVSYSVAL  SYSVAL(QDATE) RTNVAR(&DATEC)           
0046.00              RTVSYSVAL  SYSVAL(QTIME) RTNVAR(&TIME)            
0047.00              RTVJOBA    TYPE(&TYPE) DATE(&DATE6)               
0048.00              IF         COND(&TYPE *EQ '0') THEN(DO) /*  バッチ  */     
0049.00              CHGVAR     VAR(&TOPGMQ) VALUE('*SYSOPR   ')                
0050.00              ENDDO      /*  バッチ  */                                  
0051.00              ELSE       CMD(DO) /*  対話式  */                          
0052.00              CHGVAR     VAR(&TOPGMQ) VALUE('*TOPGMQ   ')                
0053.00              ENDDO      /*  対話式  */                                  
0054.00              CHGVAR     VAR(&DATE8) VALUE('20' *CAT &DATE6)             
0055.00              CHGVAR     VAR(&DATE) VALUE(&DATE8)                        
0056.00                                                                         
0057.00 /*( プロンプト表示 )*/                                                  
0058.00              SNDRCVF    RCDFMT(DSPHEAD)                                 
0059.00              IF         COND(&IN03 *EQ '1') THEN(RETURN)                
0060.00                                                                         
0061.00 /*( 実行 )*/                                                            
0062.00              OVRPRTF    FILE(URIDEN) HOLD(*YES) SECURE(*YES) +          
0063.00                           OVRSCOPE(*JOB)                                
0064.00              CALL       PGM(QTROBJ/MLTOVL)                              
0065.00              DLTOVR     FILE(URIDEN) LVL(*JOB)                          
0066.00 /*-------------------------------------------------------------------*/ 
0067.00 /* (1)  売上伝票                                                     */ 
0068.00 /*-------------------------------------------------------------------*/ 
0069.00              CHGVAR     VAR(&PDF_FILE) +                                
0070.00                           VALUE('URIAGE.PDF')                           
0071.00              SPOOLWTR/CVTSPLF SPLF(URIDEN) JOB(*) SPLNO(*LAST) +        
0072.00                           OUTPUT(*PDF) OPTION(*IFS) PAGESIZE(*A4 +       
0073.00                           *PORTRAIT) TOSTMF(&PDF_FILE) +                 
0074.00                           TODIR('/AS400-NET.USR/TEMP') +                 
0075.00                           FRONTOVL(('/SPOOLWTR/URIAGE.JPG'))             
0076.00              CALLSUBR   SUBR(DSPLY)                                      
0077.00           /* GOTO       DLTSPL */                                        
0078.00 /*-------------------------------------------------------------------*/  
0079.00 /* (2)  納品書                                                       */  
0080.00 /*-------------------------------------------------------------------*/  
0081.00              CHGVAR     VAR(&PDF_FILE) +                                 
0082.00                           VALUE('NOHIN.PDF')                             
0083.00              SPOOLWTR/CVTSPLF SPLF(URIDEN) JOB(*) SPLNO(*LAST) +         
0084.00                           OUTPUT(*PDF) OPTION(*IFS) PAGESIZE(*A4 +       
0085.00                           *PORTRAIT) TOSTMF(&PDF_FILE) +                 
0086.00                           TODIR('/AS400-NET.USR/TEMP') +                 
0087.00                           FRONTOVL(('/SPOOLWTR/NOHIN.JPG'))              
0088.00              CALLSUBR   SUBR(DSPLY)                                      
0089.00 /*-------------------------------------------------------------------*/  
0090.00 /* (3)  受領書                                                       */  
0091.00 /*-------------------------------------------------------------------*/  
0092.00              CHGVAR     VAR(&PDF_FILE) +                                 
0093.00                           VALUE('JURYO.PDF')                             
0094.00              SPOOLWTR/CVTSPLF SPLF(URIDEN) JOB(*) SPLNO(*LAST) +         
0095.00                           OUTPUT(*PDF) OPTION(*IFS) PAGESIZE(*A4 +       
0096.00                           *PORTRAIT) TOSTMF(&PDF_FILE) +               
0097.00                           TODIR('/AS400-NET.USR/TEMP') +               
0098.00                           FRONTOVL(('/SPOOLWTR/JURYO.JPG'))            
0099.00              CALLSUBR   SUBR(DSPLY)                                    
0100.00 /*-------------------------------------------------------------------*/
0101.00 /* (4)  出荷指示                                                     */
0102.00 /*-------------------------------------------------------------------*/
0103.00              SPOOLWTR/RMVSPLCHR SPLF(URIDEN) JOB(*) SPLNO(*LAST) +     
0104.00                           STRING((26 105 26 113) (28 105 28 113) +     
0105.00                           (30 105 30 113) (54 105 54 113) (56 105 +    
0106.00                           56 113) (57 105 57 113))                     
0107.00              CHGVAR     VAR(&PDF_FILE) +                               
0108.00                           VALUE('SHUKA.PDF')                           
0109.00              SPOOLWTR/CVTSPLF SPLF(URIDEN) JOB(*) SPLNO(*LAST) +       
0110.00                           OUTPUT(*PDF) OPTION(*IFS) PAGESIZE(*A4 +     
0111.00                           *PORTRAIT) TOSTMF(&PDF_FILE) +               
0112.00                           TODIR('/AS400-NET.USR/TEMP') +               
0113.00                           FRONTOVL(('/SPOOLWTR/SHUKA.JPG'))            
0114.00              CALLSUBR   SUBR(DSPLY)                                    
0115.00 /*-------------------------------------------------------------------*/
0116.00 /*   処理したスプールを削除                                          */
0117.00 /*-------------------------------------------------------------------*/
0118.00  DLTSPL:     DLTSPLF    FILE(URIDEN) JOB(*) SPLNBR(*LAST)              
0119.00              CHGVAR     VAR(&MSG) +                                    
0120.00                           VALUE(' 売上伝票を発行しました。 ')                 
0121.00              GOTO       SNDMSG                                                
0122.00              RETURN                                                           
0123.00                                                                               
0124.00  ERROR:      RCVMSG     MSGTYPE(*LAST) RMV(*NO) MSG(&MSG) +                   
0125.00                           MSGDTA(&MSGDTA) MSGID(&MSGID) MSGF(&MSGF) +         
0126.00                           MSGFLIB(&MSGFLIB)                                   
0127.00  SNDMSG:     IF         COND(&MSGID *EQ ' ') THEN(DO)                         
0128.00              SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&MSG) +           
0129.00                           TOMSGQ(&TOPGMQ) MSGTYPE(&MSGTYPE)                   
0130.00              ENDDO                                                            
0131.00              ELSE       CMD(DO)                                               
0132.00              SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +                  
0133.00                           MSGDTA(&MSGDTA) TOMSGQ(&TOPGMQ) +                   
0134.00                           MSGTYPE(&MSGTYPE)                                   
0135.00              ENDDO                                                            
0136.00          /******************************/                                     
0137.00              SUBR       SUBR(DSPLY)                                           
0138.00          /******************************/                                     
0139.00 /*( IFS に保存された PDF を表示する )*/                                       
0140.00              RTVDTAARA  DTAARA(ASNET.USR/HTTPSVR (1 15)) RTNVAR(&IPADR)       
0141.00              CHGVAR     VAR(&PCCMD) VALUE('START HTTP://' *CAT +              
0142.00                           &IPADR *TCAT '/AS400-NET.USR/TEMP/' *CAT &PDF_FILE) 
0143.00              CHGVAR     VAR(&PCCMD) VALUE(&PCCMD *TCAT ' *PRINT')             
0144.00              STRPCO     PCTA(*NO)                                     
0145.00              MONMSG     MSGID(IWS4010)                                
0146.00              STRPCCMD   PCCMD(&PCCMD) PAUSE(*NO)                      
0147.00              CALLSUBR   SUBR(DLT_IFS)                                 
0148.00              ENDSUBR                                                  
0149.00          /******************************/                             
0150.00              SUBR       SUBR(DLT_IFS)                                 
0151.00          /******************************/                             
0152.00 /*( 10 分後に一時ファイルを消す )*/                                   
0153.00              RTVSYSVAL  SYSVAL(QDATE) RTNVAR(&DATEC)                  
0154.00              RTVSYSVAL  SYSVAL(QTIME) RTNVAR(&TIME)                   
0155.00              CHGVAR     VAR(&HH) VALUE(%SST(&TIME 1 2))               
0156.00              CHGVAR     VAR(&MM) VALUE(%SST(&TIME 3 2))               
0157.00              CHGVAR     VAR(&SS) VALUE(%SST(&TIME 5 2))               
0158.00              CHGVAR     VAR(&MM) VALUE(&MM + 10)                      
0159.00              IF         COND(&MM >= 60) THEN(DO)                      
0160.00              CHGVAR     VAR(&HH) VALUE(&HH + 1)                       
0161.00              CHGVAR     VAR(&MM) VALUE(1)                             
0162.00              ENDDO                                                    
0163.00              CHGVAR     VAR(&HHC) VALUE(&HH)                          
0164.00              CHGVAR     VAR(&MMC) VALUE(&MM)                          
0165.00              CHGVAR     VAR(&SSC) VALUE(&SS)                          
0166.00              CHGVAR     VAR(&TIME) VALUE(&HHC *CAT &MMC *CAT &SSC)    
0167.00              CHGVAR     VAR(&PDF_LINK) +                              
0168.00                           VALUE('AS400-NET.USR/TEMP/' *CAT +        
0169.00                           &PDF_FILE)                                
0170.00              SBMJOB     CMD(RMVLNK OBJLNK(&PDF_LINK)) JOB(DLTIFS) + 
0171.00                           SCDDATE(&DATEC) SCDTIME(&TIME) MSGQ(*NONE)
0172.00              ENDSUBR                                                
0173.00              ENDPGM  


                                                  

[コンパイル]

CRTCLPGM PGM(QTROBJ/MLTOVLCL) SRCFILE(QTRSRC/QCLSRC) OPTION(*SRCDBG) AUT(*ALL)

[解説]

印刷出力しているのは

0061.00 /*( 実行 )*/                                                            
0062.00              OVRPRTF    FILE(URIDEN) HOLD(*YES) SECURE(*YES) +          
0063.00                           OVRSCOPE(*JOB)                                
0064.00              CALL       PGM(QTROBJ/MLTOVL)                              
0065.00              DLTOVR     FILE(URIDEN) LVL(*JOB) 

の部分の1回だけである。
続いて

0066.00 /*-------------------------------------------------------------------*/ 
0067.00 /* (1)  売上伝票                                                     */ 
0068.00 /*-------------------------------------------------------------------*/ 
0069.00              CHGVAR     VAR(&PDF_FILE) +                                
0070.00                           VALUE('URIAGE.PDF')                           
0071.00              SPOOLWTR/CVTSPLF SPLF(URIDEN) JOB(*) SPLNO(*LAST) +        
0072.00                           OUTPUT(*PDF) OPTION(*IFS) PAGESIZE(*A4 +       
0073.00                           *PORTRAIT) TOSTMF(&PDF_FILE) +                 
0074.00                           TODIR('/AS400-NET.USR/TEMP') +                 
0075.00                           FRONTOVL(('/SPOOLWTR/URIAGE.JPG'))             
0076.00              CALLSUBR   SUBR(DSPLY)                                      
0077.00           /* GOTO       DLTSPL */ 

によって CVTSPLFコマンドで FRONTOVLキー・ワードにオーバーレイ書式:
/SPOOLWTR/URIAGE.JPG を指定している。
この JPGファイルは複合機で旧の専用用紙を読取らせた画像ファイルを
IFSにFTPで保存したものである。

同様に

0078.00 /*-------------------------------------------------------------------*/  
0079.00 /* (2)  納品書                                                       */  
0080.00 /*-------------------------------------------------------------------*/
0089.00 /*-------------------------------------------------------------------*/  
0090.00 /* (3)  受領書                                                       */  
0091.00 /*-------------------------------------------------------------------*/ 

も行うのであるが

0100.00 /*-------------------------------------------------------------------*/
0101.00 /* (4)  出荷指示                                                     */
0102.00 /*-------------------------------------------------------------------*/
0103.00              SPOOLWTR/RMVSPLCHR SPLF(URIDEN) JOB(*) SPLNO(*LAST) +     
0104.00                           STRING((26 105 26 113) (28 105 28 113) +     
0105.00                           (30 105 30 113) (54 105 54 113) (56 105 +    
0106.00                           56 113) (57 105 57 113)) 

の部分は少し異なっていて金額欄をRMVSPLCHRコマンドでブランクに削除している。
このように複写式印刷を移行するときに特定の文字列だけを複写しないようにすることも
SpoolライターVer5.0では可能である。