4.4.5 前置型のDEF_BREAKコマンドの使い方

ページの頭書きに会社番号を印字し、本体にACCOUNTSファイルの内容をレポート出力するRDMLプログラムは、例えば次のようになります。

GROUP_BY    NAME(#ACCOUNT) 
            FIELDS(#COMP #DIV #DEPT #EXPEND #REVNU)
DEF_HEAD    NAME(#HEADING) 
            FIELDS(#COMP) TRIGGER_BY(#COMP *OVERFLOW)
DEF_LINE    NAME(#DETAILS) 
            FIELDS(#DIV #DEPT #EXPEND #REVNU)

SELECT      FIELDS(#ACCOUNT) FROM_FILE(ACCOUNTS)
PRINT       LINE(#DETAILS)
ENDSELECT
ENDPRINT

 

これを実行すると次のようなレポートが作成されます。

 

       会社 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             

 

 

 

レポート内容を部門番号ごとにグループ分けする、「前置型(LEADING)」のDEF_BREAKコマンドを使うことにより、レポートはもっと見やすくなります。次のようになります。

GROUP_BY    NAME(#ACCOUNT) 
            FIELDS(#COMP #DIV #DEPT #EXPEND #REVNU)
DEF_HEAD    NAME(#HEADING) FIELDS(#COMP) 
            TRIGGER_BY(#COMP *OVERFLOW)
DEF_BREAK   NAME(#BREAK01) FIELDS(#DIV) 
            TRIGGER_BY(#COMP #DIV) TYPE(*LEADING)
DEF_LINE    NAME(#DETAILS) FIELDS(#DEPT #EXPEND #REVNU)

SELECT      FIELDS(#ACCOUNT) FROM_FILE(ACCOUNTS)
PRINT       LINE(#DETAILS)
ENDSELECT
ENDPRINT

 

DEF_BREAKコマンドは、#COMPまたは#DIVの値が変わったときに、#DIVフィールドを印字する旨を表しています。

その結果作成されるレポートは次のようになります。

 

       会社 01                                                

                                                                 

              課               支出     収入                    

       部門 1                                                

              ADM              400       576                     

              MKT              678        56                     

              SAL              123      6784                     

       部門 2                                                

              ADM               46        52                     

              SAL              978       456                     

       部門 3                                                

              ACC              456       678                     

              SAL              123       679                     

 

 

 

 

       会社 02                                                

                                                                 

              課               支出     収入                    

       部門 1                                                

              ACC              843       400                     

              MKT               23         0                     

              SAL              876        10                     

       部門 2                                                

              ACC                0        43