「4.4.1 DEF_LINEコマンドの使い方」で挙げた例を修正して、会社番号を先頭に置き、会社が変わるごとに改ページを挿入するようにしてみましょう。
GROUP_BY NAME(#ACCOUNT) FIELDS(#COMP #DIV
#DEPT #EXPEND #REVNU)
DEF_HEAD NAME(#HEADING) FIELDS(#COMP)
TRIGGER_BY(#COMP)
DEF_LINE NAME(#DETAILS) FIELDS(#DIV #DEPT
#EXPEND #REVNU)
SELECT FIELDS(#ACCOUNT) FROM_FILE(ACCOUNTS)
PRINT LINE(#DETAILS)
ENDSELECT
ENDPRINT
すると次のような2ページのレポートが作成されます。
会社 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
DEF_HEADコマンドにより、レポートの頭書き部分に#COMPを印字すること、#COMPの値が変わるごとに改ページを挿入することを指示しています。つまり、会社番号が変わるごとに新しいページとなります。
しかし実際には、この場合TRIGGER_BYパラメータは適切ではありません。会社番号01が1ページを超える記録を持つときは次のような結果になるので、あまり適切とは言えません。
会社 01 ページ 1
部門 課 支出 収入
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
ページ 2
部門 課 支出 収入
4 ADM 400 576
4 MKT 678 56
4 SAL 123 6784
5 ADM 46 52
5 SAL 978 456
5 ACC 456 678
5 SAL 123 679
会社 02 ページ 3
部門 課 支出 収入
1 ACC 843 400
1 MKT 23 0
1 SAL 876 10
2 ACC 0 43
2ページ目の先頭に会社番号が印字されていないことに注意してください。これは、レコードの会社番号が変わった場合にのみDEF_HEADラインにトリガーがかかるからです。1ページから2ページに移るところでは、会社番号は変わっていないので、DEF_HEADコマンドは起動されないのです。これに対し、DEF_HEADコマンドを次のように記述したとしましょう。
DEF_HEAD NAME(#HEADING) FIELDS(#COMP)
TRIGGER_BY(#COMP *OVERFLOW)
こうすると、会社番号が変わったときまたは、1ページに納まり切らなくなった場合にもDEF_HEADコマンドが起動されるので、2ページ目にも「会社番号 01」と印字されます。