DEF_XXXXX系のコマンドを使うと、1レコード分のデータを複数行に分けて印字することができます。例えばレポートの頭書きを次のように印字することを考えてみましょう。
印刷日付:DD/MM/YY
会社 :XXXXXXXXXX
部門 :XXXXXXXXXXXXXXXXXXXX
これは次のようにDEF_HEADコマンドを3つ並べて記述することにより実現できます。
DEF_HEAD NAME(#HEAD01) FIELDS((#DATE *L1 *C2))
DEF_HEAD NAME(#HEAD02) FIELDS((#COMP *L2 *C2))
DEF_HEAD NAME(#HEAD03) FIELDS((#DIV *L3 *C2))
あるいはこの3つをまとめて次のように記述してもかまいません。
DEF_HEAD NAME(#HEAD) FIELDS((#DATE *L1 *C2)(#COMP *L2 *C2)
(#DIV *L3 *C2))
次の理由で、後者の書き方をお勧めします。
頭書き(DEF_HEAD)や後付け行(DEF_FOOT)に関しては、可能な限り、1行のコマンドで必要な事項をすべて記述するようにしてください。
一方、明細行(DEF_LINE)やブレーク行(DEF_BREAK)については、1行にまとめるか複数に分割して記述するかによって結果が異なります。
例えば次のようなレポートを考えてみましょう。
顧客名 住所
XXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXX
郵便番号:9999
XXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXX
郵便番号:9999
XXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXX
郵便番号:9999
明細行の定義は次のようになるでしょう(行および列の詳細は省略)。
DEF_LINE NAME(#DET01) FIELDS(#CUSNAM #CUSAD1)
IDENTIFY(*COLHDG)
DEF_LINE NAME(#DET02) FIELDS(#CUSAD2) IDENTIFY(*NOID)
DEF_LINE NAME(#DET03) FIELDS(#CUSAD3) IDENTIFY(*NOID)
DEF_LINE NAME(#DET04) FIELDS(#POSTCD) IDENTIFY(*LABEL)
あるいは次のように記述することも可能です。
DEF_LINE NAME(#DETAIL) FIELDS((#CUSNAM *L1 *C2 *COLHDG)
(#CUSAD1 *L1 *C39 *COLHDG)
(#CUSAD2 *L2 *C39 *NOID )
(#CUSAD3 *L3 *C39 *NOID )
(#POSTCD *L4 *C39 *LABEL ))
細かく見ると、この2つの定義方法では、出力結果に若干の違いがあります。
単一のDEF_XXXXXコマンドでまとめて定義した場合、全体がひとつの「かたまり」と看做されるので、ページをまたがって印字されることはありません。
一方、それぞれ分割して記述した場合、次のように、途中に改ページが入ることもありえます。
XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
郵便番号:9999
最後尾
XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX ページ
1
先頭
顧客名 住所 ページ
XXXXXXXXXXXXXXXXXXXXXXXXXXXXX 2
XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
郵便番号:9999
XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
郵便番号:9999
一方、全体をひとつのコマンドで定義した場合、このようにページをまたがって出力されることはありません。4行とも同じページに納まらない場合は、全体が次のページに送られます。
レポートのレイアウト設計で、ページをまたがっても構わないとするか否かにより、いずれかの方法を選んでください。