【COBOL学習|初心者向け】COBOL帳票作成の基本!PAGE LIMITとHEADING句で余白を美しく制御しよう

1. 導入:なぜページ制御が必要なのか

COBOLで帳票(レポート)を出力する際、避けて通れないのが「ページ制御」です。例えば、印刷用紙の端ギリギリに文字が印字されてしまったり、ページが変わるたびにヘッダーがずれてしまったりした経験はありませんか?
今回解説する『PAGE LIMIT』と『HEADING』句は、報告書の「余白」と「ヘッダーの開始位置」をシステム側で自動管理するための非常に重要な機能です。これを正しく設定することで、誰が見ても見やすい、プロフェッショナルな報告書を作成できるようになります。

2. 基礎知識:帳票制御の仕組み

COBOLの報告書作成機能(REPORT SECTION)では、紙一枚の中にどれくらいの行数があり、どこからヘッダーを表示するかを定義する必要があります。

PAGE LIMIT:1ページに印字できる「最大の行数」を指定します。これを超える行を出力しようとすると、自動的に改ページ処理(ページ送り)が行われます。
HEADING:ページヘッダー(見出し)を出力し始める「行番号」を指定します。

これらを組み合わせることで、「1ページ60行までとし、ヘッダーは1行目から表示する」といった制御が可能になります。

3. 実装と解決策

REPORT SECTIONの定義内にあるRD(Report Description)項目でこれらを記述します。
ここでのポイントは、HEADINGに指定する値は、必ずPAGE LIMITの範囲内である必要があります。また、余白を考慮して、余裕を持った行数設定を心がけるのが現場の鉄則です。

4. サンプルプログラム

以下のコードは、1ページ60行、ヘッダーを1行目から開始する基本的な定義例です。そのままコンパイルのテンプレートとして活用してください。

DATA DIVISION.
FILE SECTION.
FD REPORT-FILE.
01 PRINT-REC PIC X(132).

WORKING-STORAGE SECTION.

REPORT SECTION.
RD MY-REPORT

  • ページ全体の最大行数を60行に設定
  • ヘッダー(見出し)を1行目から開始するように指定

PAGE LIMIT 60
HEADING 1
FIRST DETAIL 5
LAST DETAIL 55.

01 PAGE-HEADER TYPE PAGE HEADING.
05 LINE 1 COLUMN 1 PIC X(20) VALUE “— 売上報告書 —“.

01 DETAIL-LINE TYPE DETAIL.
05 LINE 1 COLUMN 1 PIC X(10) VALUE “データ出力”.

PROCEDURE DIVISION.

  • 実際のプログラムでは、INITIATEやGENERATEを使用して
  • 報告書作成処理を制御します。

EXIT PROGRAM.

5. 応用・注意点

現場でよくある失敗は、「ヘッダーの行数」と「DETAIL行の開始位置」の整合性が取れていないことです。
HEADINGで指定した行数と、実際にヘッダー項目で記述するLINE句の行番号が矛盾していると、意図しない場所で改行が発生したり、エラーになったりします。

また、プリンターの物理的なマージン(上下左右の余白)はハードウェアに依存します。システム上のPAGE LIMITを60に設定しても、実際の印刷物では下の数行が切れてしまうこともあります。現場では、余裕を持って「55行程度」を実質的な限界値として運用するのが、トラブルを避けるコツですよ。

ぜひ、この設定を活用して、読みやすい報告書プログラムを構築してくださいね!

コメント

タイトルとURLをコピーしました