【COBOL学習|豆知識】ベテランCOBOL技術者の豆知識: INITIATE文の二重実行で報告書を華麗にリセット!

1. 導入: なぜINITIATEの二重実行が重要なのか?

COBOLの報告書作成機能(Report Writer)は、複雑な集計や帳票出力を効率的に行うための強力なツールです。しかし、時に私たちは「一つのプログラムで、同じレイアウトの帳票を複数回、しかもそれぞれの集計を独立させて作成したい」という要求に直面します。例えば、ある期間の月次売上レポートを作成した後、続けて別の期間の月次売上レポートを作成する、といったケースです。

通常、レポートの集計値はINITIATE文で初期化され、TERMINATE文で最終処理が行われます。しかし、一つのレポートファイルをオープンしたまま、途中で集計値だけをリセットして次の集計を開始したい場合、どうすれば良いでしょうか?ここで威力を発揮するのが、TERMINATE文を実行せずにINITIATE文を再度実行するというテクニックです。これにより、これまで集計されたデータは全て破棄され、新たな集計をゼロから開始できるのです。これは、同じロジックで複数の独立したレポートを効率的に作成するための、非常にスマートな解決策となります。

2. 基礎知識: Report Writerの基本とINITIATE文

COBOLのReport Writer機能は、REPORT SECTIONに帳票のレイアウトや集計ルールを記述することで、ページヘッダ、フッタ、詳細行、集計行などを自動的に生成してくれる優れものです。この機能を使う上で重要なのが、以下の3つの手続き部動詞です。

  • INITIATE文: 報告書作成機能を開始し、全ての集計カウンタ、ページ番号、行番号などを初期化(通常はゼロクリア)します。報告書出力の準備を整える役割があります。
  • GENERATE文: REPORT SECTIONで定義した詳細行や集計行を出力するトリガーとなります。この文が実行されると、定義されたルールに基づいてデータが出力され、同時に集計対象となるフィールドの値が対応する集計カウンタに加算されます。
  • TERMINATE文: 報告書作成機能を終了させます。この文が実行されると、最終的な集計処理(例えばレポートフッタの出力など)が行われ、Report Writerが管理していたリソースが

コメント

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