導入:なぜ帳票の「余韻」が重要なのか
帳票出力プログラムを組んでいると、必ずぶつかるのが「グループごとの改行制御」です。合計行を出力した直後に次のグループの見出しが詰まって表示されると、読み手はどこで区切りがついたのか瞬時に判断できません。この「視覚的な余韻」を制御するために、わざわざフラグを立ててIF文で改行を判定していませんか?そんな泥臭い制御をスマートに解決してくれるのが、今回紹介する「NEXT GROUP 句」です。
基礎知識:NEXT GROUP 句とは
COBOLのREPORT WRITER機能(報告書作成機能)で使用される句です。この機能を使うと、プログラム側で「何行出力したか」を厳密にカウントしなくても、指定したグループの印字が終了した直後に、自動的に指定行数の改行(または改ページ)を挿入できます。報告書の「グループの変わり目」を自動化できるため、コードの可読性が劇的に向上します。
実装・解決策
REPORT SECTION内で、コントロールフットプリント(合計行など)を定義するレベルで使用します。
「NEXT GROUP IS PLUS n」と記述することで、現在の印字位置からn行スキップします。「NEXT GROUP IS NEXT PAGE」と記述すれば、そのグループの印字が終わった瞬間に強制改ページとなります。
サンプルプログラム
以下は、部署ごとの合計を出力した後、必ず2行あけて次の部署へ進む設定例です。
01 DEPT-TOTAL-LINE TYPE IS CONTROL FOOTING DEPT-CODE
NEXT GROUP IS PLUS 2.
05 COLUMN 1 PIC X(10) VALUE “部署合計:”.
05 COLUMN 12 PIC Z(7)9 SOURCE TOTAL-SALES.
- 上記のように記述することで、この行の出力後、
- 自動的に2行の空行が挿入されます。
- プログラム側で改行用のWRITE文を別途用意する必要はありません。
応用・注意点:現場での活用と落とし穴
実務での注意点を3つ挙げます。
1. REPORT WRITERの有効化:この機能はREPORT WRITER機能の一部です。通常のWRITE文で帳票を組んでいる場合は使えません。この句を使うなら、REPORT SECTIONをフル活用する設計への切り替えが必要です。
2. 改ページとの競合:NEXT GROUP IS NEXT PAGEを指定している場合、そのグループがページ末尾付近で出力されると、不自然な空きページができることがあります。実務では、あらかじめ「PAGE LIMIT」を適切に設定し、オーバーフロー制御と組み合わせるのが定石です。
3. 視認性の向上:単なる空行ではなく、合計行のあとに「下線」を引くなど、設計段階で「NEXT GROUP」を意識したレイアウトにすると、保守時に「どこで改行しているか」がコード上で明確になり、仕様変更にも強くなります。
ベテランの知恵として、帳票の美しさは「余白」に宿ります。ぜひNEXT GROUP句を活用し、読みやすい報告書を作成してください。

コメント