「後置型(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 ---- ----