R P G 出 力 仕 様 書
前ページ 次ページ 目次へ



出力仕様書は印刷ファイルを使用しないで、出力仕様をプログラム記述するときの仕様書です。
本来は、RPGサイクルを使用する場合によく使用されますが、ここでは、RPGサイクルの出力で
はなく、サイクル外の出力を行う場合の出力仕様について紹介します。




サイクル外出力命令

RPGサイクルを使用しない形のコーディングであっても、実際は1回目だけのRPGサイクルの一部で
繰返しをしながら、処理を行っていることになります。
RPGサイクルの立場からみれば、RPGサイクル本来の出力を除く、それ以外の出力は、全て
サイクル外出力ということになります。
サイクル外出力は、いわば、RPGサイクルの立場からすれば、例外(EXCEPTな)の出力と
いうことになります。サイクル外の出力を行うRPGの命令はEXCPTです。


出力仕様書の規則

サイクル外のための出力仕様書は、大きく、レコードレベルの記述とフィールドレベルの記述に
わかれます。

1.レコードレベルの指定タイプのとき
桁位置 入力内容
6桁 仕様書コードOを入力します。
7〜14桁 ファイル名を入力します。
15桁 サイクル外の出力を行うとき、Eをセットします。
17桁 印刷前の改行数
18桁 印刷後の改行数
19〜20桁 印刷前の改ページと位置付けの行番号
21〜22桁 印刷後の改ページと位置付けの行番号
32〜37桁 レコード様式名


2.フィールド指定のとき
桁位置 入力内容
6桁 仕様書コードOを入力します。
32〜37桁 フィールド名
38桁 編集コード
40〜43桁 フィールドの終りの桁位置を指定します。(注)
45〜70桁 固定情報 / 編集語をセットします。
注:印刷文字が、前のフィールドと重なると重ね印刷になり、きれいに表示されないか、あるいは、
まったく表示されないことがあります。


例:出力仕様書コーディングの例
     O*. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 
     O* 印刷前に改ページし、2行目に位置付けします。 
     O*            
     OQPRINT  E 1  2           HDR01
     O*          
     O*  さらに1回改行します。                               
     O                                   70 ' 営業担当別売上実績表 '   
     O                         UDATE Y  101                            
     O* 印刷前に3回改行します。 
     O*         
     O        E 3              HDR01                                   
     O                                  101 'PAGE.'
     O                         PAGE     111                            
     O* 印刷前に1回改行します。                                       
     O*         
     O        E 1              HDR01                                   
     O                                   10 ' 得意先 '               
     O                                   20 ' 得意先名 '               
     O                                   63 ' 読みカナ '               
     O                                   85 ' TEL '                 
     O                                   99 ' 担当営業 '               
     O                                  111 ' 売上実績 '               

この例では、出力ファイル名は標準のQPRINT、印刷前に改ページし、2行目に位置づけし、
更に1回改行します。(つまりタイトルの’営業担当別・・・’は3行目に印字される)
ついで、ページは印刷前に3回改行して後行われます。(すなわち6行目)
更に1回改行して見出しが印刷されます。(7行目)

     O*. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 
     O* 印刷前に2回改行します。                                   
     O*         ↓
     O        E 2              DTL01                               
     O*                            フィールドはDBのフィールド名と同じ
     O                         TKTKNO     6                        
     O                         TKNMKJ    50                        
     O                         TKNMKN    72                        
     O                         TKTEL     87                        
     O                         TKSLNO    97                        
     O                         TKURJSK  114         

出力仕様書のフィールドに編集元と同じフィールドを使用すると、MOVELやZ−ADDなどの、出力
フィールドへの移送処理は必要なくなります。


ページオーバーフロー標識

プログラム記述のプリンターファイルを使用する場合は、ページオーバーフロー標識を使用できます。
この標識は、OA〜OGまでとOVです。サンプルではOVを使用しています。

      F*. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 
      F* 標準の印刷ファイルです。                                     
      FQPRINT  O   F     132     OV     PRINTER                         
      C*                         ページオーバーフロー用標識           

プログラムの中では明細を出力するまえに標識OVの状態をみて、オンであれば、見出しHDR01を
印字しています。見出しを印字すると、標識OVは自動的にオフになります。

     C* オーバーフロー標識(*INOV)は自動的にオン(*ON)になります。           
     C* さらに見出し印刷で、自動的にオフになります。                  
 +---C           *INOV     IFEQ *ON                                   
 |   C                     EXCPTHDR01                                   
 +---C                     ENDIF                                      
     C                     EXCPTDTL01                                 

QPRINT
予め用意されている標準の印刷ファイルでQGPLの中にあります。
ページ巾132桁、ページ行66、オーバーフロー行60、1インチ当り文字数10です。
DSPFDコマンドで見てみるとその属性がわかります。

DSPPFD によるQPRINTの表示(抜粋)
    0/05/02                   ファイル記述の表示                          
  DSPFD コマンドの入力                                                    
    ファイル . . . . . . . . . . . . . . . . . : FILE       QPRINT        
      ライブラリー . . . . . . . . . . . . . . :            *LIBL         
    情報のタイプ . . . . . . . . . . . . . . . : TYPE       *ALL          
    ファイル属性 . . . . . . . . . . . . . . . : FILEATR    *ALL          
    システム . . . . . . . . . . . . . . . . . : SYSTEM     *LCL          
  ファイル記述の見出し                                                    
    ファイル . . . . . . . . . . . . . . . . . : FILE       QPRINT        
    ライブラリー . . . . . . . . . . . . . . . :            QGPL          
    ファイルのタイプ . . . . . . . . . . . . . :             装置         
    装置タイプ . . . . . . . . . . . . . . . . :             印刷装置     
    補助記憶域プール ID. . . . . . . . . . . . :            01            
  装置ファイルの属性                                                      
    外部記述ファイル . . . . . . . . . . . . . :            NO            
    ファイル・レベル識別コード . . . . . . . . :            0980727122318 
    ページ・サイズ                               PAGESIZE                 
      長さ . . . . . . . . . . . . . . . . . . :                 66       
      幅 . . . . . . . . . . . . . . . . . . . :                132       
      測定方法 . . . . . . . . . . . . . . . . :            *ROWCOL       
    行/インチ . . . . . . . . . . . . . . . . : LPI        6             
    1インチ当りの文字数 . . . . . . . . . . . : CPI        10            
    フロント・マージン . . . . . . . . . . . . : FRONTMGN   *DEVD         
    バックマージン . . . . . . . . . . . . . . : BACKMGN    *FRONTMGN     
    オーバーフロー行番号 . . . . . . . . . . . : OVRFLW      60          

サンプル・プログラム

以下にサンプル・プログラムをあげます。
     **---------------------------------------------------------------
     ** ID   : LM420A
     ** NAME : 担当者別得意先一覧
     ** FUNC : パラメータであたえられた、営業担当bフ得意先を印刷します。
     **---------------------------------------------------------------
     H            Y-
     F*---------------------------------------------------------------
     FM420L02 IF  E           K        DISK
     F*↓標準の印刷ファイルです。
     FQPRINT  O   F     132     OV     PRINTER
     C*                         ↑ページオーバーフロー用標識
     C*---------------------------------------------------------------
     C           *ENTRY    PLIST
     C                     PARM           P@SLNO  4
     C*---------------------------------------------------------------
     C*初期処理
     C*最初に1回見出し印刷をします。
     C                     EXCPTHDR01
     C           P@SLNO    SETLLM420R
     C           P@SLNO    READEM420R                    99
     C*本処理
+----C           *IN99     DOWEQ*OFF
|    C* 出力仕様書のフィールドをDBと共通の名前にすることにより、
|    C* 本来必要な出力編集は必要ありません。
|    C*
|    C* オーバーフロー標識は自動的にオンになります。
|    C* さらに見出し印刷で、自動的にオフになります。
|+---C           *INOV     IFEQ *ON
||   C                     EXCPTHDR01
|+---C                     ENDIF
|    C*                     ↓ サイクル外出力命令です。
|    C                     EXCPTDTL01
|    C*
|    C           P@SLNO    READEM420R                    99
+----C                     ENDDO
     C*終了処理
     C                     SETON                     LR
     C                     RETRN
     O*---------------------------------------------------------------
     O*印刷前に改ページし、さらに1回改行します。
     O*. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 
     OQPRINT  E 1  2           HDR01
     O                                   70 '営業担当別売上実績表'
     O                         UDATE Y  101
     O*印刷前に3回改行します。
     O        E 3              HDR01
     O                                  101 'PAGE.'
     O                         PAGE     111
     O*印刷前に1回改行します。
     O        E 1              HDR01
     O                                   10 '得意先Y'
     O                                   20 '得意先名'
     O                                   68 '読みカナ'
     O                                   90 'TEL'
     O                                  104 '担当営業'
     O                                  116 '売上実績'
     O*印刷前に2回改行します。
     O        E 2              DTL01
     O*                         ↓フィールドはDBと共通です。
     O                         TKTKNO     6
     O                         TKNMKJ    55
     O                         TKNMKN    77
     O                         TKTEL     92
     O                         TKSLNO    97
     O                         TKURJSK  119






前ページ 次ページ 目次へ



(C)COPYRIGHT ISHIOKA KATSUHIDE 2000