1. 導入:なぜSECTIONが必要なのか?
COBOLのプログラムを書き進めていくと、手続き部(PROCEDURE DIVISION)が長くなり、どこで何をしているのか把握しづらくなった経験はありませんか?そんな時、プログラムを「意味のある大きな塊」に整理するのが「SECTION(節)」です。SECTIONを適切に使うことで、プログラムの全体像が掴みやすくなり、読みやすく保守性の高いコードを書くことができます。
2. 基礎知識:SECTIONとParagraphの関係
COBOLのPROCEDURE DIVISIONは、階層構造になっています。
一番小さな単位が「文(Sentence)」、それをまとめたものが「段落(Paragraph)」、そして段落をさらに大きなグループとしてまとめたものが「節(SECTION)」です。
重要なポイントは、SECTIONは「変数の有効範囲」を決めるものではなく、「処理の制御単位」であるという点です。PERFORM文を使ってSECTION名を指定すると、その中に含まれるすべての段落を順番に実行させることができます。これにより、処理のまとまりを直感的に表現できるのです。
3. 実装と解決策:SECTIONの書き方
SECTIONを定義するには、名前の後に半角スペースを空けて「SECTION.」と記述します。この節の中に、複数の段落(Paragraph)を配置します。
ポイント:
・SECTIONの中には必ず一つ以上の段落が必要です。
・PERFORM文でSECTIONを呼び出すと、その節内の先頭段落から始まり、次のSECTIONが始まる直前まで、あるいはプログラムの終わりまで実行されます。
4. サンプルプログラム
以下は、処理を「初期化」「計算」「終了」の3つのSECTIONに分けた例です。このように整理すると、処理の流れが明確になります。
IDENTIFICATION DIVISION.
PROGRAM-ID. SECTION-SAMPLE.
PROCEDURE DIVISION.
- プログラムの開始点
MAIN-LOGIC SECTION.
START-PARA.
PERFORM INIT-SECTION.
PERFORM CALC-SECTION.
PERFORM END-SECTION.
STOP RUN.
- 初期化処理をまとめた節
INIT-SECTION SECTION.
INIT-PARA.
DISPLAY “初期化処理を開始します…”.
- 計算処理をまとめた節
CALC-SECTION SECTION.
CALC-PARA.
DISPLAY “計算処理を実行中…”.
- 終了処理をまとめた節
END-SECTION SECTION.
END-PARA.
DISPLAY “プログラムを終了します.”.
5. 応用・注意点:現場でのテクニック
現場でSECTIONを使う際に注意すべき点は、「予期せぬ実行範囲」です。
前述の通り、PERFORMでSECTIONを指定すると、その中の全ての段落が実行されます。もしSECTIONの中に「途中で抜けてほしい段落」がある場合、誤って次の段落まで実行されてしまうバグが起きやすいです。これを防ぐためには、「EXITセクション(あるいはEXIT段落)」を明示的に作成し、処理の終わりを明確にするのがベテランの流儀です。
また、小規模なプログラムで全ての段落にSECTIONを付けると、かえってコードが冗長になります。機能単位で明確に分けたいときに使うのが、最も効率的な活用法と言えるでしょう。まずはこの構造を取り入れて、読みやすいコード作りを心がけてみてください。

コメント