Tools

37. 印刷ファイルの属性を調べる RTVPRTFA

印刷ファイル( PRTF ) の属性を調べるコマンド( RTVPRTFA = Retrieve PRTF Attribute ) を
紹介する。
画面装置ファイルの属性を取得する API ( QDFRTVFD ) や データ・ベース・ファイルの
属性を取得する API ( QDBRTVFD ) は存在しているが、印刷ファイル( PRTF ) の属性を
取得する API ( QDFRPRTA ) が登場するのは OS:Ver6.1 になってからのことである。
しかも残念ながら、この API もまだ完全には正しく動作していないのと、
古い OS リリースでは、この API は存在していない。
( API の場合は公開されていなくても古いリリースでも存在している場合がある。)

印刷 ファイル(PRTF) の属性を調べるコマンド( RTVPRTFA ) は実はライブラリーQUSRTOOL の中で
サンプルとして提供されていたのだが V3R6M0 で廃止されてしまっていて今では
入手することはできない。
米国の BBS でも「誰か RTVPRTFA のソースを持っていませんか ?」の呼びかけがあるが
応答は依然としてない。
RTVPRTFA コマンドを実際に作ろうと思えば

DSPFD FILE(QGPL/QPRINT) TYPE(*ATR) OUTPUT(*OUTFILE) FILEATR(*PRTF) OUTFILE((QTEMP/DSPFD)

のようにして PRTF の属性を QTEMP に出力して、このファイルを解析する、という単純な手法で
実現できることは容易に想像はつくものの数多くの面倒な作業が待っているので
誰もやりたがらない、というのが現実だろう。
そこで、ここでは敢えてこの方法で 印刷ファイル(PRTF) の属性を取得するコマンド: RTVPRTFA
この方法で記述したものを紹介する。

【 コマンド: RTVPRTFA 】
----------------------------------------------------------------------------------
0001.00              CMD        PROMPT(' 印刷ファイル属性の検索 ')                      
0002.00              PARM       KWD(PRTF) TYPE(PRTF) +                                  
0003.00                           PROMPT(' 印刷ファイル ')                              
0004.00  PRTF:       QUAL       TYPE(*NAME) LEN(10) MIN(1)                              
0005.00              QUAL       TYPE(*NAME) LEN(10) DFT(*LIBL) +                        
0006.00                           SPCVAL((*LIBL) (*CURLIB)) +                           
0007.00                           PROMPT(' ライブラリー ')                              
0008.00              PARM       KWD(RTNLIB) TYPE(*CHAR) LEN(10) RTNVAL(*YES) +          
0009.00                           PROMPT(' ライブラリー ')                              
0010.00              PARM       KWD(WAITFILE) TYPE(*CHAR) LEN(6) +                      
0011.00                           RTNVAL(*YES) PROMPT(' 最大ファイル待機時間 ')         
0012.00              PARM       KWD(SHARE) TYPE(*CHAR) LEN(4) RTNVAL(*YES) +            
0013.00                           PROMPT(' オープン・データ・パス共用 ')                
0014.00              PARM       KWD(LVLCHK) TYPE(*CHAR) LEN(4) RTNVAL(*YES) +           
0015.00                           PROMPT(' レコード様式レベルの検査 ')                  
0016.00              PARM       KWD(CRTDAT) TYPE(*CHAR) LEN(6) RTNVAL(*YES) +           
0017.00                           PROMPT(' 作成日 ')                                    
0018.00              PARM       KWD(CRTTIM) TYPE(*CHAR) LEN(6) RTNVAL(*YES) +           
0019.00                           PROMPT(' 作成時刻 ')                                  
0020.00              PARM       KWD(NBRFMTS) TYPE(*DEC) LEN(5 0) +                      
0021.00                           RTNVAL(*YES) PROMPT(' レコード様式の数 ')             
0022.00              PARM       KWD(FLDLVL) TYPE(*CHAR) LEN(1) RTNVAL(*YES) +           
0023.00                           PROMPT(' フィールド・レベル ')                        
024.00              PARM       KWD(DEV) TYPE(*CHAR) LEN(10) RTNVAL(*YES) +            
025.00                           PROMPT(' 装置 ')                                     
026.00              PARM       KWD(MAXDEV) TYPE(*DEC) LEN(3 0) RTNVAL(*YES) +         
027.00                           PROMPT(' 装置の最大数 ')                             
028.00              PARM       KWD(SPOOL) TYPE(*CHAR) LEN(4) RTNVAL(*YES) +           
029.00                           PROMPT(' データのスプール ')                         
030.00              PARM       KWD(FOLD) TYPE(*CHAR) LEN(4) RTNVAL(*YES) +            
031.00                           PROMPT(' レコードの折り返し ')                       
032.00              PARM       KWD(RPLUNPRT) TYPE(*CHAR) LEN(4) +                     
033.00                           RTNVAL(*YES) PROMPT(' 印刷不能文字の処置 ')          
034.00              PARM       KWD(RPLUNPRTC) TYPE(*CHAR) LEN(2) +                    
035.00                           RTNVAL(*YES) PROMPT(' 置換え文字 ')                  
036.00              PARM       KWD(CPI) TYPE(*DEC) LEN(3 1) RTNVAL(*YES) +            
037.00                           PROMPT('1 インチ当たりの文字数 ')                    
038.00              PARM       KWD(LPI) TYPE(*DEC) LEN(3 1) RTNVAL(*YES) +            
039.00                           PROMPT(' 行/インチ ')                               
040.00              PARM       KWD(ALIGN) TYPE(*CHAR) LEN(4) RTNVAL(*YES) +           
041.00                           PROMPT(' ページの位置合わせ ')                       
042.00              PARM       KWD(DEVTYPE) TYPE(*CHAR) LEN(10) +                     
043.00                           RTNVAL(*YES) PROMPT(' 印刷装置タイプ ')              
044.00              PARM       KWD(PAGLEN) TYPE(*DEC) LEN(3 0) RTNVAL(*YES) +         
045.00                           PROMPT(' 長さ -- 1 ページ当たりの行数 ')             
046.00              PARM       KWD(PAGWTH) TYPE(*DEC) LEN(3 0) RTNVAL(*YES) +         
047.00                           PROMPT(' 幅 -- 1 行当たりの文字数 ')                 
0048.00              PARM       KWD(OVERFLOW) TYPE(*DEC) LEN(3 0) +                      
0049.00                           RTNVAL(*YES) PROMPT(' オーバーフロー行番号 ')          
0050.00              PARM       KWD(PAGRTT) TYPE(*CHAR) LEN(5) RTNVAL(*YES) +            
0051.00                           PROMPT(' ページ回転度数 ')                             
0052.00              PARM       KWD(PRTTXT) TYPE(*CHAR) LEN(30) RTNVAL(*YES) +           
0053.00                           PROMPT(' 印刷テキスト ')                               
0054.00              PARM       KWD(JUSTIFY) TYPE(*CHAR) LEN(3) RTNVAL(*YES) +           
0055.00                           PROMPT(' ハードウェア位置調整 ')                       
0056.00              PARM       KWD(CTLCHAR) TYPE(*CHAR) LEN(5) RTNVAL(*YES) +           
0057.00                           PROMPT(' 制御文字 ')                                   
0058.00              PARM       KWD(PRTQLTY) TYPE(*CHAR) LEN(6) RTNVAL(*YES) +           
0059.00                           PROMPT(' 印刷品質 ')                                   
0060.00              PARM       KWD(FORMFEED) TYPE(*CHAR) LEN(8) +                       
0061.00                           RTNVAL(*YES) PROMPT(' 用紙送り ')                      
0062.00              PARM       KWD(DRAWER) TYPE(*CHAR) LEN(8) RTNVAL(*YES) +            
0063.00                           PROMPT(' ソース用紙入れ ')                             
0064.00              PARM       KWD(FONT) TYPE(*CHAR) LEN(10) RTNVAL(*YES) +             
0065.00                           PROMPT(' フォント ')                                   
0066.00              PARM       KWD(GRPCHRSET) TYPE(*CHAR) LEN(10) +                     
0067.00                           RTNVAL(*YES) PROMPT(' グラフ文字セット ')              
0068.00              PARM       KWD(CODEPAGE) TYPE(*CHAR) LEN(10) +                      
0069.00                           RTNVAL(*YES) PROMPT(' コード・ページ ')                
0070.00              PARM       KWD(DUPLEX) TYPE(*CHAR) LEN(7) RTNVAL(*YES) +            
0071.00                           PROMPT(' 両面印刷 ')                                   
0072.00              PARM       KWD(MULTIUP) TYPE(*DEC) LEN(2 0) +                      
0073.00                           RTNVAL(*YES) PROMPT(' 面当たりページ数 ')             
0074.00              PARM       KWD(UOM) TYPE(*CHAR) LEN(5) RTNVAL(*YES) +              
0075.00                           PROMPT(' 単位 ')                                      
0076.00              PARM       KWD(DECFMT) TYPE(*CHAR) LEN(5) RTNVAL(*YES) +           
0077.00                           PROMPT('10 進数形式 ')                                
0078.00              PARM       KWD(REDUCE) TYPE(*CHAR) LEN(5) RTNVAL(*YES) +           
0079.00                           PROMPT(' 出力の減少 ')                                
0080.00              PARM       KWD(TBLREFCHR) TYPE(*CHAR) LEN(4) +                     
0081.00                           RTNVAL(*YES) PROMPT(' テーブル参照文字 ')             
0082.00              PARM       KWD(CCSID) TYPE(*DEC) LEN(5 0) RTNVAL(*YES) +           
0083.00                           PROMPT(CCSID)                                         
0084.00              PARM       KWD(TEXT) TYPE(*CHAR) LEN(50) RTNVAL(*YES) +            
0085.00                           PROMPT(' テキスト ')                                  
----------------------------------------------------------------------------------
【 コンパイル 】
CRTCMD CMD(MYLIB/RTVPRTFA) PGM(MYLIB/RTVPRTFACL) SRCFILE(PGMRLIB/QCMDSRC)
       ALLOW(*BPGM *IPGM) AUT(*ALL)
【 実行 CLP: RTVPRTFACL 】
------------------------------------------------------------------------------------
0001.00              PGM        PARM(&PRTFFLIB &RTNLIB &WAITFILE &SHARE +              
0002.00                           &LVLCHK &CRTDAT &CRTTIM &NBRFMTS &FLDLVL +           
0003.00                           &DEV &MAXDEV &SPOOL &FOLD &RPLUNPRT +                
0004.00                           &RPLUNPRTC &CPI &LPI &ALIGN &DEVTYPE +               
0005.00                           &PAGLEN &PAGWTH &OVERFLOW &PAGRTT &PRTTXE +          
0006.00                           &JUSTIFY &CTLCHAR &PRTQLTY &FORMFEED +               
0007.00                           &DRAWER &FONT &GRPCHRSET &CODEPAGE +                 
0008.00                           &DUPLEX &MULTIUP &UOM &DECFMT &REDUCE +              
0009.00                           &TBLREFCHR &CCSID &TEXT)                             
0010.00 /*---------------------------------------------------------*/                  
0011.00 /*   RTVPRTFA  :   印刷ファイル属性の検索                  */                  
0012.00 /*---------------------------------------------------------*/                  
0013.00              DCL        VAR(&PRTFFLIB) TYPE(*CHAR) LEN(20)                     
0014.00              DCL        VAR(&PRTF) TYPE(*CHAR) LEN(10)                         
0015.00              DCL        VAR(&PRTFLIB) TYPE(*CHAR) LEN(10)                      
0016.00              DCL        VAR(&RTNLIB) TYPE(*CHAR) LEN(10)                       
0017.00              DCL        VAR(&RTBLIB) TYPE(*CHAR) LEN(10)                       
0018.00              DCL        VAR(&WAITFILE) TYPE(*DEC) LEN(5 0)                     
0019.00              DCL        VAR(&SHARE) TYPE(*CHAR) LEN(4)                         
0020.00              DCL        VAR(&LVLCHK) TYPE(*CHAR) LEN(4)                        
0021.00              DCL        VAR(&CRTDAT) TYPE(*CHAR) LEN(6)                        
0022.00              DCL        VAR(&CRTTIM) TYPE(*CHAR) LEN(6)                        
0023.00              DCL        VAR(&NBRFMTS) TYPE(*DEC) LEN(5 0)                      
0024.00              DCL        VAR(&FLDLVL) TYPE(*CHAR) LEN(1)                    
0025.00              DCL        VAR(&DEV) TYPE(*CHAR) LEN(10)                      
0026.00              DCL        VAR(&MAXDEV) TYPE(*DEC) LEN(3 0)                   
0027.00              DCL        VAR(&SPOOL) TYPE(*CHAR) LEN(4)                     
0028.00              DCL        VAR(&FOLD) TYPE(*CHAR) LEN(4)                      
0029.00              DCL        VAR(&RPLUNPRT) TYPE(*CHAR) LEN(4)                  
0030.00              DCL        VAR(&RPLUNPRTC) TYPE(*CHAR) LEN(2)                 
0031.00              DCL        VAR(&CPI) TYPE(*DEC) LEN(3 1)                      
0032.00              DCL        VAR(&LPI) TYPE(*DEC) LEN(3 1)                      
0033.00              DCL        VAR(&ALIGN) TYPE(*CHAR) LEN(4)                     
0034.00              DCL        VAR(&DEVTYPE) TYPE(*CHAR) LEN(10)                  
0035.00              DCL        VAR(&PAGLEN) TYPE(*DEC) LEN(3 0)                   
0036.00              DCL        VAR(&PAGWTH) TYPE(*DEC) LEN(3 0)                   
0037.00              DCL        VAR(&OVERFLOW) TYPE(*DEC) LEN(3 0)                 
0038.00              DCL        VAR(&PAGRTT) TYPE(*CHAR) LEN(5)                    
0039.00              DCL        VAR(&PRTTXE) TYPE(*CHAR) LEN(30)                   
0040.00              DCL        VAR(&JUSTIFY) TYPE(*CHAR) LEN(3)                   
0041.00              DCL        VAR(&CTLCHAR) TYPE(*CHAR) LEN(5)                   
0042.00              DCL        VAR(&PRTQLTY) TYPE(*CHAR) LEN(5)                   
0043.00              DCL        VAR(&FORMFEED) TYPE(*CHAR) LEN(8)                  
0044.00              DCL        VAR(&DRAWER) TYPE(*CHAR) LEN(8)                    
0045.00              DCL        VAR(&FONT) TYPE(*CHAR) LEN(10)                     
0046.00              DCL        VAR(&GRPCHRSET) TYPE(*CHAR) LEN(10)                
0047.00              DCL        VAR(&CODEPAGE) TYPE(*CHAR) LEN(10)                 
0048.00              DCL        VAR(&DUPLEX) TYPE(*CHAR) LEN(7)                    
0049.00              DCL        VAR(&MULTIUP) TYPE(*DEC) LEN(2 0)                  
0050.00              DCL        VAR(&UOM) TYPE(*CHAR) LEN(5)                       
0051.00              DCL        VAR(&DECFMT) TYPE(*CHAR) LEN(5)                    
0052.00              DCL        VAR(&REDUCE) TYPE(*CHAR) LEN(5)                    
0053.00              DCL        VAR(&TBLREFCHR) TYPE(*CHAR) LEN(4)                 
0054.00              DCL        VAR(&TEXT) TYPE(*CHAR) LEN(50)                     
0055.00              DCL        VAR(&TYPE) TYPE(*CHAR) LEN(1)                      
0056.00              DCL        VAR(&MSG) TYPE(*CHAR) LEN(80)                      
0057.00              DCL        VAR(&MSGID) TYPE(*CHAR) LEN(7)                     
0058.00              DCL        VAR(&MSGF) TYPE(*CHAR) LEN(10)                     
0059.00              DCL        VAR(&MSGFLIB) TYPE(*CHAR) LEN(10)                  
0060.00              DCL        VAR(&MSGDTA) TYPE(*CHAR) LEN(132)                  
0061.00              DCL        VAR(&MSGKEY) TYPE(*CHAR) LEN(4)                    
0062.00              DCL        VAR(&CCSID) TYPE(*DEC) LEN(5 0)                    
0063.00              DCL        VAR(&PRDFMT) TYPE(*CHAR) LEN(1)                    
0064.00              DCL        VAR(&PRCSID) TYPE(*DEC) LEN(5 0)                   
0065.00              DCLF       FILE(QTEMP/DSPFD)                                  
0066.00              MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))            
0067.00              MONMSG     MSGID(MCH3601)                                     
0068.00                                                                            
0069.00              RTVJOBA    TYPE(&TYPE)                                        
0070.00              CHGVAR     VAR(&PRTF) VALUE(%SST(&PRTFFLIB 01 10))            
0071.00              CHGVAR     VAR(&PRTFLIB) VALUE(%SST(&PRTFFLIB 11 10))         
0072.00              DSPFD      FILE(&PRTFLIB/&PRTF) TYPE(*ATR) +                         
0073.00                           OUTPUT(*OUTFILE) FILEATR(*PRTF) +                       
0074.00                           OUTFILE(QTEMP/DSPFD) OUTMBR(*FIRST *REPLACE)            
0075.00              RCVF       RCDFMT(QWHFDPRT)                                          
0076.00              MONMSG     MSGID(CPF0684) EXEC(GOTO CMDLBL(ERROR))                   
0077.00              CHGVAR     VAR(&RTNLIB) VALUE(&PRLIB)                                
0078.00              CHGVAR     VAR(&WAITFILE) VALUE(&PRWAIT)                             
0079.00              IF         COND(&PRSHAR = 'Y') THEN(CHGVAR VAR(&SHARE) +             
0080.00                           VALUE('*YES'))                                          
0081.00              ELSE       CMD(CHGVAR VAR(&SHARE) VALUE('*NO '))                     
0082.00              IF         COND(&PRLVLC = 'Y') THEN(CHGVAR VAR(&LVLCHK) +            
0083.00                           VALUE('*YES'))                                          
0084.00              ELSE       CMD(CHGVAR VAR(&LVLCHK) VALUE('*NO '))                    
0085.00              CHGVAR     VAR(&CRTDAT) VALUE(&PRRDAT)                               
0086.00              CHGVAR     VAR(&CRTTIM) VALUE(&PRRTIM)                               
0087.00              CHGVAR     VAR(&NBRFMTS) VALUE(&PRNOFM)                              
0088.00              CHGVAR     VAR(&DEV) VALUE(&PRAQDV)                                  
0089.00              CHGVAR     VAR(&MAXDEV) VALUE(&PRMXDV)                               
0090.00              CHGVAR     VAR(&FLDLVL) VALUE(&PRFLS)                                
0091.00              IF         COND(&PRSPOL = 'Y') THEN(CHGVAR VAR(&SPOOL) +             
0092.00                           VALUE('*YES'))                                          
0093.00              ELSE       CMD(CHGVAR VAR(&SPOOL) VALUE('*NO '))                     
0094.00              IF         COND(&PRFOLD = 'Y') THEN(CHGVAR VAR(&FOLD) +              
0095.00                           VALUE('*YES'))                                          
0096.00              ELSE       CMD(CHGVAR VAR(&FOLD) VALUE('*NO '))                
0097.00              IF         COND(&PRRPLU = 'Y') THEN(CHGVAR +                   
0098.00                           VAR(&RPLUNPRT) VALUE('*YES'))                     
0099.00              ELSE       CMD(CHGVAR VAR(&RPLUNPRT) VALUE('*NO '))            
0100.00              CHGVAR     VAR(&RPLUNPRTC) VALUE(&PRRPUC)                      
0101.00              CHGVAR     VAR(&CPI) VALUE(&PRCPI)                             
0102.00              CHGVAR     VAR(&LPI) VALUE(&PRLPI)                             
0103.00              IF         COND(&PRALGN = 'Y') THEN(CHGVAR VAR(&ALIGN) +       
0104.00                           VALUE('*YES'))                                    
0105.00              ELSE       CMD(CHGVAR VAR(&ALIGN) VALUE('*NO '))               
0106.00              IF         COND(&PRDEVT = '0') THEN(CHGVAR +                   
0107.00                           VAR(&DEVTYPE) VALUE('*DEVD     '))                
0108.00              ELSE       CMD(IF COND(&PRDEVT = '1') THEN(CHGVAR +            
0109.00                           VAR(&DEVTYPE) VALUE('*COR      ')))               
0110.00              ELSE       CMD(IF COND(&PRDEVT = '2') THEN(CHGVAR +            
0111.00                           VAR(&DEVTYPE) VALUE('*AUT      ')))               
0112.00              CHGVAR     VAR(&PAGLEN) VALUE(&PRFSZL)                         
0113.00              CHGVAR     VAR(&PAGWTH) VALUE(&PRFSZW)                         
0114.00              CHGVAR     VAR(&OVERFLOW) VALUE(&PROVRF)                       
0115.00              CHGVAR     VAR(&PAGRTT) VALUE(&PRPGRT)                         
0116.00              CHGVAR     VAR(&PRTTXE) VALUE(&PRTXT)                          
0117.00              CHGVAR     VAR(&JUSTIFY) VALUE(&PRJUST)                        
0118.00              IF         COND(&PRCTLC = 'N') THEN(CHGVAR +                   
0119.00                           VAR(&CTLCHAR) VALUE('*NONE'))                     
0120.00              ELSE       CMD(IF COND(&PRCTLC = 'F') THEN(CHGVAR +            
0121.00                           VAR(&CTLCHAR) VALUE('*FCFC')))                    
0122.00              ELSE       CMD(IF COND(&PRCTLC = 'M') THEN(CHGVAR +            
0123.00                           VAR(&CTLCHAR) VALUE('*MACH')))                    
0124.00              IF         COND(&PRQLTY = 'S') THEN(CHGVAR +                   
0125.00                           VAR(&PRTQLTY) VALUE('*STD  '))                    
0126.00              ELSE       CMD(IF COND(&PRQLTY = 'D') THEN(CHGVAR +            
0127.00                           VAR(&PRTQLTY) VALUE('*DRAFT')))                   
0128.00              ELSE       CMD(IF COND(&PRQLTY = 'N') THEN(CHGVAR +            
0129.00                           VAR(&PRTQLTY) VALUE('*NLQ  ')))                   
0130.00              ELSE       CMD(IF COND(&PRQLTY = 'F') THEN(CHGVAR +            
0131.00                           VAR(&PRTQLTY) VALUE('*FSTDR')))                   
0132.00              CHGVAR     VAR(&FORMFEED) VALUE(&PRFMFD)                       
0133.00              CHGVAR     VAR(&DRAWER) VALUE(&PRDRAW)                         
0134.00              CHGVAR     VAR(&FONT) VALUE(&PRFCHS)                           
0135.00              IF         COND(&PRCHST = 0) THEN(CHGVAR +                     
0136.00                           VAR(&GRPCHRSET) VALUE('*DEVD     '))              
0137.00              ELSE       CMD(IF COND(&PRCHST = 1) THEN(CHGVAR +              
0138.00                           VAR(&GRPCHRSET) VALUE('*SYSVAL   ')))             
0139.00              ELSE       CMD(IF COND(&PRCHST = 2) THEN(CHGVAR +              
0140.00                           VAR(&GRPCHRSET) VALUE('*JOBCCSID ')))             
0141.00              ELSE       CMD(IF COND(&PRCHST = 3) THEN(CHGVAR +              
0142.00                           VAR(&GRPCHRSET) VALUE('*CHRIDCTL ')))             
0143.00              IF         COND(&PRCDPG = 0) THEN(CHGVAR VAR(&CODEPAGE) +      
0144.00                           VALUE('*DEVD     '))                                    
0145.00              ELSE       CMD(IF COND(&PRCDPG = 1) THEN(CHGVAR +                    
0146.00                           VAR(&CODEPAGE) VALUE('*SYSVAL   ')))                    
0147.00              ELSE       CMD(IF COND(&PRCDPG = 2) THEN(CHGVAR +                    
0148.00                           VAR(&CODEPAGE) VALUE('*JOBCCSID ')))                    
0149.00              ELSE       CMD(IF COND(&PRCDPG = 3) THEN(CHGVAR +                    
0150.00                           VAR(&CODEPAGE) VALUE('*CHRIDCTL ')))                    
0151.00              IF         COND(&PRDPLX = 'Y') THEN(CHGVAR VAR(&DUPLEX) +            
0152.00                           VALUE('*YES   '))                                       
0153.00              ELSE       CMD(CHGVAR VAR(&DUPLEX) VALUE('*NO    '))                 
0154.00              IF         COND(&PRUNIT = 'I') THEN(CHGVAR VAR(&UOM) +               
0155.00                           VALUE('*INCH'))                                         
0156.00              ELSE       CMD(IF COND(&PRUNIT = 'C') THEN(CHGVAR +                  
0157.00                           VAR(&UOM) VALUE('*CM  ')))                              
0158.00              IF         COND(&PRDFMT = 'J') THEN(CHGVAR VAR(&DECFMT) +            
0159.00                           VALUE('*JOB '))                                         
0160.00              ELSE       CMD(IF COND(&PRDFMT = 'F') THEN(CHGVAR +                  
0161.00                           VAR(&DECFMT) VALUE('*FILE')))                           
0162.00              CHGVAR     VAR(&MULTIUP) VALUE(&PRMULT)                              
0163.00              IF         COND(&PRREDUC = 'T') THEN(CHGVAR +                        
0164.00                           VAR(&REDUCE) VALUE('*TEXT'))                            
0165.00              ELSE       CMD(IF COND(&PRREDUC = 'N') THEN(CHGVAR +                 
0166.00                           VAR(&REDUCE) VALUE('*NONE')))                           
0167.00              IF         COND(&PRTBRF = 'Y') THEN(CHGVAR +                         
0168.00                           VAR(&TBLREFCHR) VALUE('*YES'))                    
0169.00              ELSE       CMD(CHGVAR VAR(&TBLREFCHR) VALUE('*NO '))           
0170.00              CHGVAR     VAR(&CCSID) VALUE(&PRCSID)                          
0171.00              CHGVAR     VAR(&TEXT) VALUE(&PRTXT)                            
0172.00              RETURN                                                         
0173.00                                                                             
0174.00  ERROR:      RCVMSG     MSGTYPE(*LAST) RMV(*NO) MSG(&MSG) +                 
0175.00                           MSGDTA(&MSGDTA) MSGID(&MSGID) MSGF(&MSGF) +       
0176.00                           MSGFLIB(&MSGFLIB)                                 
0177.00  SNDMSG:                                                                    
0178.00              IF         COND(&MSGID *EQ ' ') THEN(DO)                       
0179.00              SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&MSG) +         
0180.00                           TOMSGQ(*TOPGMQ) MSGTYPE(*ESCAPE)                  
0181.00              ENDDO                                                          
0182.00              ELSE       CMD(DO)                                             
0183.00              SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +                
0184.00                           MSGDTA(&MSGDTA) TOMSGQ(*TOPGMQ) +                 
0185.00                           MSGTYPE(*ESCAPE)                                  
0186.00              ENDDO                                                          
0187.00              ENDPGM                                                         
---------------------------------------------------------------------------------------------------
【 解説 】
0065.00              DCLF       FILE(QTEMP/DSPFD)  

とファイル定義されているのでコンパイルの前には

DSPFD FILE(QGPL/QPRINT) TYPE(*ATR) OUTPUT(*OUTFILE) FILEATR(*PRTF) OUTFILE((QTEMP/DSPFD)

のようにして QTEMP/DSPFD を作成しておく必要がある。
その後で

CRTCLPGM PGM(MYLIB/PRTFACL) SRCFILE(PGMRLIB/QCLSRC) AUT(*ALL)

のようにしてコンバイルする。
コマンド RTVPRTFA は、次のように印刷ファイルの任意の属性を取得することができる。

コマンド RTVPRTFA

例えば RTVPRTFA WAITFILE(&WAITFILE) のようにして待ち時間だけを取得することもできる。
しかし CLP: RTVPRTFACL の中では WAITFILE だけでなく他の多くのパラメータも処理しているが
エラーにならないのは、RTVPRTFACL での

0067.00              MONMSG     MSGID(MCH3601)

の記述である。これは上位のプログラムが RTVPRTFA コマンドの参照していないパラメータを
CLP: RTVPRTFACL が処理しようとすると MCH3601 のポインター・エラーが発生する。
MONMSG MSGID(MCH3601)MCH3601 のエラーが発生しても、無視して次のステップの処理に
進むことを意味している。
この MONMSG 記述によって任意のパラメータだけを指示することができるようになっているのである。
これもコマンドのひとつのテクニックとして覚えておいて頂きたい。

RTVPRTFA コマンドは Spoolライター Ver5.0 に実装を予定している。