「後置型(TRAILING)」のDEF_BREAKコマンドは通常、グループ分けしたレコードの合計値などを表す行を出力するために使います。
例えば「4.4.5 前置型のDEF_BREAKコマンドの使い方」で説明したRDMLプログラムを次のように修正し、「前置型の」ブレーク行を表示してみましょう。
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_BREAK NAME(#BREAK02) FIELDS(#DIV #DIVEXP #DIVRNU)
TRIGGER_BY(#COMP #DIV) TYPE(*TRAILING)
DEF_LINE NAME(#DETAILS) FIELDS(#DEPT #EXPEND #REVNU)
DEFINE FIELD(#DIVEXP) REFFLD(#EXPEND) LABEL('Expend')
DEFINE FIELD(#DIVRNU) REFFLD(#REVNU) LABEL('Revenue')
SELECT FIELDS(#ACCOUNT) FROM_FILE(ACCOUNTS)
KEEP_TOTAL OF_FIELD(#EXPEND) IN_FIELD(#DIVEXP)
BY_FIELD(#COMP #DIV)
KEEP_TOTAL OF_FIELD(#REVNU) IN_FIELD(#DIVRNU)
BY_FIELD(#COMP #DIV)
PRINT LINE(#DETAILS)
ENDSELECT
ENDPRINT
#COMPまたは#DIVの値が変わったときにDEF_BREAKコマンドが起動されることに注意してください。また、SELECTループにはKEEP_TOTALコマンドも追加されています。これは会社/部門ごとの合計値を自動的に保持するために使います。詳しくはKEEP_XXXXX系コマンドの項を参照してください。
明示した以外の属性は省略値のままで、実際にレポートを作成すると次のようになります。
会社 01
課 支出 収入
部門 1
ADM 400 576
MKT 678 56
SAL 123 6784
部門 1 支出 1201 収入 7416
部門 2
ADM 46 52
SAL 978 456
部門 2 支出 1024 収入 508
部門 3
ACC 456 678
SAL 123 679
部門 3 支出 579 収入 1357
会社 02
課 支出 収入
部門 1
ACC 843 400
MKT 23 0
SAL 876 10
部門 1 支出 1742 収入 410
部門 2
ACC 0 43
部門 2 支出 0 収入 43
一方、『LANSA/AD ユーザー ガイド』に説明されている「レポート設計機能」を使えば、レポート全体のレイアウトを簡単に次のように変更することができます。
会社 01
課 支出 収入
=========== 部門 1 ===========
ADM 400 576
MKT 678 56
SAL 123 6784
---- ----
1201 7416
---- ----
=========== 部門 2 ===========
ADM 46 52
SAL 978 456
---- ----
1024 508
---- ----
=========== 部門 3 ===========
ACC 456 678
SAL 123 679
---- ----
579 1357
---- ----
会社 02
課 支出 収入
=========== 部門 1 ===========
ACC 843 400
MKT 23 0
SAL 876 10
---- ----
1742 410
---- ----
=========== 部門 2 ===========
ACC 0 43
---- ----
0 43
---- ----