【COBOL学習|豆知識】【COBOL帳票作成術】TYPE IS PAGE HEADINGでページヘッダーを自動制御する

導入:帳票出力の定型作業を自動化する

COBOLで帳票プログラムを組む際、最も頭を悩ませるのが「改ページ時のヘッダー出力」です。手動でカウンタを監視し、行数を数えて改ページを制御するコードを全プログラムに書くのは、非効率なだけでなくバグの温床にもなります。そこで登場するのが、REPORT WRITER機能のTYPE IS PAGE HEADING (PH)です。これを使えば、ページあふれ時のヘッダー出力をシステム側に任せることができ、保守性の高いコードを書くことが可能になります。

基礎知識:PHとは何か?

REPORT WRITER機能において、報告書の構成要素は「タイプ」で定義されます。PH (PAGE HEADING)は、その名の通り「各ページの最上部」に出力される内容を指します。
ここで定義した内容は、REPORT WRITERが自動的にページあふれを検知した際に、自動的に印字されます。自分でWRITE命令を叩く必要がないため、行数管理のロジックを簡素化できるのが最大のメリットです。

実装・解決策

REPORT SECTION内で、01レベルの項目に対してTYPE IS PAGE HEADINGを指定します。このグループ項目配下に、印字したい見出しや日付、ページ番号などを定義します。

サンプルプログラム

以下は、ページヘッダーを定義する基本的な例です。

01 REPORT-HEADER TYPE IS PAGE HEADING.
05 LINE 1.
10 COLUMN 1 PIC X(10) VALUE ‘発行日付 :’.
10 COLUMN 12 PIC X(10) FROM WS-CURRENT-DATE.
10 COLUMN 50 PIC X(10) VALUE ‘売上報告書’.
05 LINE 2.
10 COLUMN 1 PIC X(06) VALUE ‘ページ :’.
10 COLUMN 8 PIC Z9 SOURCE PAGE-COUNTER.
05 LINE 3.
10 COLUMN 1 PIC X(80) VALUE ALL ‘-‘.

  • 上記のように定義することで、改ページ毎に自動的にこのレイアウトが出力されます。

応用・注意点:現場でのテクニック

1. PAGE-COUNTERの活用: COBOLには予約語としてPAGE-COUNTERが用意されています。これをそのままソースに記述するだけで、システムが自動的にページ番号をカウントアップしてくれます。
2. 改ページタイミングの制御: PHは、原則として「改ページが発生した直後」に実行されます。もし1ページ目から強制的に出力したい場合は、REPORT開始時に明示的に呼び出すか、処理の順序に注意が必要です。
3. バグ回避: 陥りやすいミスとして、PHで定義した行数(LINE句)と、メインボディ(DETAIL)の開始行の重なりがあります。PHで5行使用しているなら、DETAILの出力開始位置は6行目以降にするなど、設計段階でレイアウトを明確にしておくことが重要です。

REPORT WRITERは一見レガシーな機能に思えますが、帳票出力がメインの基幹システムにおいては、今なお強力な武器となります。ぜひ活用してください。

コメント

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