Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

ページの頭書きに会社番号を印字し、本体に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