現在地: Visual LANSA 開発者ガイド > 4. 5250 アプリケーションの作成 > 4.4 LANSAによるレポート作成 > 4.4.2 DEF_HEADコマンドの使い方

4.4.2 DEF_HEADコマンドの使い方

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」と印字されます。