RPG

513. AFP用印刷ファイルの作成方法

IBM マニュアルやDDS解説書には AFPキー・ワードは書かれていても
AFP用の印刷ファイルの具体的な作成方法の解説はほとんど見られないので
AFP用の印刷ファイルの作成方法を初めてここに紹介する。
_

[ QPRTAFP ] AFP印刷ファイル

ソースはこちらから

0001.00      A***************************************************************            
0002.00      A*    PGM007P      :   商品マスター明細表                                   
0003.00      A*     ソース      :  QTRSRC/QPRTSRC(PGM007P)                               
0004.00      A*     使用目的    :   照会 (*INQUIRY)                                      
0005.00      A*     作成日      :  2024/10/26          6:52:00                           
0006.00      A*     作成者      :  QTR                                                   
0007.00      A*     コンパイル  :                                                        
0008.00      A*       CRTPRTF FILE(QTROBJ/QPRTAFP) SRCFILE(QTRSRC/QPRTSRC)               
0009.00      A*       DEVTYPE(*AFPDS) CDEFNT(QFNT61/X0N16V) IGCDTA(*YES)                 
0010.00      A*       IGCCDEFNT(QFNT61/X0M32F) LVLCHK(*NO) AUT(*ALL)                     
0011.00      A*                                                                          
0012.00      A***************************************************************            
0013.00      A*( 見出行 )                                                                
0014.00       *    ---------------------------                                           
0015.00      A          R PRTHEAD                                                        
0016.00       *    ---------------------------                                           
0017.00      A                                      SKIPB(03)                            
0018.00      A                                     1'PRTAFP'                             
0019.00      A                                    66' 商品マスター明細表 '               
0020.00      A                                      IGCCDEFNT(QFNT61/X0M32F +            
0021.00      A                                      (*POINTSIZE 20))                     
0022.00      A                                   120'PAGE.'                              
0023.00      A                                    +1PAGNBR                               
0024.00      A                                      EDTCDE(Z)                
0025.00      A                                      SPACEA(1)                
0026.00      A            SYSNAM         8A      120TEXT(' システム名 ')     
0027.00      A                                      CDEFNT(QFNT61/X0N16V +   
0028.00      A                                      (*POINTSIZE 20))         
0029.00      A                                      COLOR(BLU)               
0030.00      A                                      SPACEA(1)                
0031.00      A                                   120DATE EDTCDE(Y)           
0032.00      A                                      SPACEA(1)                
0033.00      A                                   120TIME                     
0034.00      A                                      SPACEA(1)                
0035.00      A                                     1' コード '               
0036.00      A                                    14' 商品名 '               
0037.00      A                                    38' 単価 '                 
0038.00      A                                    45' 品種コード '           
0039.00      A                                      SPACEA(1)                
0040.00      A*( 明細行 )                                                    
0041.00       *    ---------------------------                               
0042.00      A          R DETAIL                                             
0043.00       *    ---------------------------                               
0044.00      A            SHCODE        10A        1TEXT(' 商品コード ')     
0045.00      A            SHNAME        24O       11TEXT(' 商品名 ')         
0046.00      A            SHTANK         7S 0     35TEXT(' 単価 ')           
0047.00      A                                      EDTCDE(J)                
0048.00      A            SHSCOD         4A       45TEXT(' 品種コード ')                  
0049.00      A            HNSNAM        14O       50TEXT(' 品種名 ')                      
0050.00      A                                      SPACEA(2)                             
0051.00      A*( 小計行 )                                                                 
0052.00       *    ---------------------------                                            
0053.00      A          R SUMMRY                                                          
0054.00       *    ---------------------------                                            
0055.00      A                                    11'*  小計 *'                           
0056.00      A            SHOKEI         9S 0     33TEXT(' 小計 ')                        
0057.00      A                                      EDTCDE(J)                             
0058.00      A                                      SPACEA(2)                             
0059.00      A*( 最終行 )                                                                 
0060.00      A          R ENDPRT                                                          
0061.00      A                                    11'** 合計 **'                          
0062.00      A            GOKEI          9S 0     33TEXT(' 合計 ')                        
0063.00      A                                      EDTCDE(J)                             
0064.00      A                                      SPACEA(2)                             
0065.00      A                                    32'*  *  *  *  *'                       
0066.00      A                                    +1' 報  告  書  の  終  り '  
0067.00      A                                    +1' *  *  *  *  *'                      
0068.00      A                                      SPACEA(1)                             


                          

[コンパイル]

CRTPRTF FILE(QTROBJ/QPRTAFP) SRCFILE(QTRSRC/QPRTSRC)
DEVTYPE(*AFPDS) CDEFNT(QFNT61/X0N16V) IGCDTA(*YES)
IGCCDEFNT(QFNT61/X0M32F) LVLCHK(*NO) AUT(*ALL)
_

[注意]

X0N16V, X0M32F の Xに続く文字はO(=オー)ではなく 0(=ゼロ)である。
ライブラリー: QFNT61 とはAFP日本語フォントのライブラリーであり
X0N16Vはその中のAFP日本語フォントである。
AFPを導入していないIBM iではライブラリー: QFNT61も X0N16V も
存在していなくてもコンパイル・エラーにはならない。
さらに実行時エラーにもならない。
しかしCDEFNTと IGCDTA, IGCCDEFNTのパラメータを指定して印刷ファイルを
作成しておかないと実行時に日本語は文字化けして正しく表示されない。
逆にこれらさえ指定しておけばAFP日本語フォントが導入されていなくても
日本語は正しく表示される。

     もうひとつの注意は各フィールド・タイプ(A,S, O…)は
漢字のフィールドはタイプOまたはJで定義しておかないと
日本語漢字は文字化けしてしまって表示されない。
*SCSの場合はタイプA のフィールドであっても漢字が出力されていれば
漢字として表示されるが*AFPDSの場合はタイプAに漢字を出力しても
漢字は表示されない。

■ [解説]

AFP のキー・ワードとして

0019.00      A                                    66' 商品マスター明細表 '               
0020.00      A                                      IGCCDEFNT(QFNT61/X0M32F +            
0021.00      A                                      (*POINTSIZE 20))

で表題を大きく表示している。

0026.00      A            SYSNAM         8A      120TEXT(' システム名 ')     
0027.00      A                                      CDEFNT(QFNT61/X0N16V +   
0028.00      A                                      (*POINTSIZE 20))         
0029.00      A                                      COLOR(BLU) 

ではシステム名を大きくすると青色で表示している。

_

■ AFP環境の導入についての注意

AFPはIBM によって無償プロダクトに変更されたがAFP環境の導入はやさしくは
ないのでそれなりの知識と経験のあるアドバイザーの指導を受けることをお奨めする。