[ |../../index.htm#lansa/l4wdev05_0215.htm]
現在地:
4.4.6 後置型のDEF_BREAKコマンドの使い方
「後置型(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
--- ---
[ |../../index.htm#lansa/l4wdev05_0215.htm]