1. 導入:なぜLINE NUMBER句が重要なのか
COBOLの報告書作成機能(Report Writer)を使用する際、帳票のレイアウト定義は非常に重要です。特に、ページヘッダーや定型フォーマットにおいて、「特定の行に必ず印字したい」という要件は頻繁に発生します。LINE NUMBER句(絶対指定)を使えば、改行コードの制御を意識することなく、指定した行位置まで自動的に空行を挿入して印字位置を調整できます。これにより、複雑なカウンタ管理から解放され、コードの可読性が格段に向上します。
2. 基礎知識:LINE NUMBER句とは
報告書作成機能におけるLINE NUMBER句は、印字行の位置を制御するためのものです。大きく分けて「相対指定(PLUS n)」と「絶対指定(IS n)」がありますが、今回は後者の「絶対指定」に焦点を当てます。
絶対指定は、「ページ内の何行目に印字するか」を直接定義します。例えば「LINE NUMBER IS 5」と記述すれば、その行は必ずページの5行目に印字されます。もし前の印字が3行目で終わっていれば、自動的に1行分の空行が挿入され、5行目に配置される仕組みです。
3. 実装のポイント
絶対指定を使用する際の最大のポイントは、報告書記述項(Report Description Entry)のレイアウト順序です。通常、ページヘッダーや定型的な見出し項目に対して使用します。
・指定した行番号が、前回の印字行より小さい場合は、自動的に改ページ(NEXT PAGE)が発生します。
・絶対指定が混在する場合、報告書記述項内で昇順に指定する必要があります。
4. サンプルプログラム
以下のコードは、ページ上部の固定位置にタイトルを出力する例です。
01 REPORT-HEADER.
05 LINE NUMBER IS 1.
10 COLUMN 20 PIC X(20) VALUE ‘売上管理表’.
05 LINE NUMBER IS 3.
10 COLUMN 1 PIC X(10) VALUE ‘日付:’.
10 COLUMN 12 PIC X(08) SOURCE WS-DATE.
05 LINE NUMBER IS 5.
10 COLUMN 1 PIC X(20) VALUE ‘——————–‘.
- 上記のように指定することで、1行目、3行目、5行目に固定で配置されます。
- 間の行(2行目や4行目)は自動的に空行として扱われます。
5. 応用・注意点
現場でよくある失敗は、絶対指定の行番号を逆順にしてしまうことです(例:LINE 5の後にLINE 3を書くなど)。これはコンパイルエラーや予期せぬ改ページの原因となります。
また、絶対指定と相対指定(PLUS句)を混在させる場合は、ロジックが複雑になりやすいため、基本的にはヘッダー部は絶対指定で固定し、明細部は相対指定で流動的に出力する、といった役割分担を明確にすることをお勧めします。この句を使いこなせば、面倒な行送り制御をコンパイラに任せることができ、保守性の高い帳票プログラムが実現できますよ。

コメント