4.4.1 DEF_LINEコマンドの使い方」で挙げた例を修正して、会社番号を先頭に置き、会社が変わるごとに改ページを挿入するようにしてみましょう。

     GROUP_BY    NAME(#ACCOUNT) FIELDS(#COMP #DIV 
            #DEPT #EXPEND #REVNU)
DEF_HEAD    NAME(#HEADING) FIELDS(#COMP)
            TRIGGER_BY(#COMP)
DEF_LINE    NAME(#DETAILS) FIELDS(#DIV #DEPT
            #EXPEND #REVNU)
 
SELECT      FIELDS(#ACCOUNT) FROM_FILE(ACCOUNTS)
PRINT       LINE(#DETAILS)
ENDSELECT
ENDPRINT

 すると次のような2ページのレポートが作成されます。
 
       会社 01                                                
                                                                 
         部門         課              支出       収入            
          1           ADM              400       576             
          1           MKT              678        56             
          1           SAL              123      6784             
          2           ADM               46        52             
          2           SAL              978       456             
          3           ACC              456       678             
          3           SAL              123       679             
 
       会社 02                                                                                                                
         部門         課              支出       収入             
          1           ACC              843       400             
          1           MKT               23         0             
          1           SAL              876        10             
          2           ACC                0        43             
 
DEF_HEADコマンドにより、レポートの頭書き部分に#COMPを印字すること、#COMPの値が変わるごとに改ページを挿入することを指示しています。つまり、会社番号が変わるごとに新しいページとなります。

しかし実際には、この場合TRIGGER_BYパラメータは適切ではありません。会社番号01が1ページを超える記録を持つときは次のような結果になるので、あまり適切とは言えません。
 
  会社 01                                   ページ 1
                                                                 
      部門         課              支出       収入            
       1           ADM              400       576             
       1           MKT              678        56             
       1           SAL              123      6784             
       2           ADM               46        52             
       2           SAL              978       456             
       3           ACC              456       678             
       3           SAL              123       679             
 
                                              ページ 2
 
      部門         課              支出       収入            
       4           ADM              400       576             
       4           MKT              678        56             
       4           SAL              123      6784             
       5           ADM               46        52             
       5           SAL              978       456             
       5           ACC              456       678             
       5           SAL              123       679             
 
  会社 02                                   ページ 3
                                                                 
      部門         課              支出       収入            
       1           ACC              843       400             
       1           MKT               23         0             
       1           SAL              876        10             
       2           ACC                0        43             
 

2ページ目の先頭に会社番号が印字されていないことに注意してください。これは、レコードの会社番号が変わった場合にのみDEF_HEADラインにトリガーがかかるからです。1ページから2ページに移るところでは、会社番号は変わっていないので、DEF_HEADコマンドは起動されないのです。これに対し、DEF_HEADコマンドを次のように記述したとしましょう。

     DEF_HEAD    NAME(#HEADING) FIELDS(#COMP) 
            TRIGGER_BY(#COMP *OVERFLOW)

こうすると、会社番号が変わったときまたは、1ページに納まり切らなくなった場合にもDEF_HEADコマンドが起動されるので、2ページ目にも「会社番号 01」と印字されます。

  • No labels