COBOLのセクションとパラグラフ分割ルールを徹底解説!構造化の基本
生徒
「COBOLのプログラムを見ていると、SECTIONとか名前がついた塊があるのですが、これには決まりがあるんですか?」
先生
「はい、とても重要な決まりがあります。COBOLではプログラムを整理するために、セクションやパラグラフという単位で分割して書くルールがあるんですよ。」
生徒
「初心者がバラバラに書くと動かなくなっちゃいますか?」
先生
「そうですね。正しい順序や書き方を守らないとエラーになってしまいます。今日はその分割ルールをやさしく解説しますね!」
1. COBOLのプログラム構造とは?
COBOL(コボル)というプログラミング言語は、事務処理や銀行のシステムなどで長く使われている非常に歴史のある言語です。この言語の最大の特徴は、英語の文章に近い形式で書けることですが、その一方で「書き方の型」が厳格に決まっています。
プログラム全体を大きな「本」に例えると分かりやすいでしょう。本には「章」があり、その中に「節」があり、さらに「段落」がありますよね。COBOLもこれと同じように、階層構造を持っています。この階層のなかで、特に処理の中身を整理するために使われるのがセクション(節)とパラグラフ(段落)です。
プログラミング未経験の方にとって、最初は「なぜ自由に書けないの?」と不思議に思うかもしれません。しかし、このルールがあるおかげで、数千行、数万行という長いプログラムになっても、どこに何が書いてあるのかを他の人が見つけやすくなっています。この構造化の技術を身につけることが、COBOLエンジニアへの第一歩となります。
2. セクション(SECTION)の役割と書き方
セクションは、プログラムの中で関連する処理をひとまとめにする「大きな区切り」です。日本語では「節」と訳されます。COBOLのプログラムには最初から決められているセクション(構成節や入力出力節など)もありますが、自分で名前をつけて作るセクションもあります。
セクションを定義するときは、名前のあとに SECTION というキーワードを書き、最後にピリオドを打ちます。例えば、計算処理をまとめるなら KEISAN-SECTION. といった具合です。セクションは、後述するパラグラフをいくつか中に含むことができます。会社で例えるなら、「営業部」や「総務部」といった部署のようなイメージですね。部署(セクション)の中に、それぞれの担当業務(パラグラフ)があるという構造です。
初心者が注意すべき点は、セクション名は必ずA領域(8列目から11列目の間)から書き始めるというルールです。パソコンの操作に慣れていない方は、この「列」という考え方が難しく感じるかもしれませんが、文字を書き始める位置が決まっていると覚えておいてください。
3. パラグラフ(段落)の基本ルール
パラグラフは、セクションよりもさらに小さな単位で、具体的な処理の集まりを指します。日本語では「段落」と呼ばれます。COBOLでは、このパラグラフの中に、実際の命令文(足し算をしろ、画面に表示しろ、など)を書いていきます。
パラグラフの名前は、開発者が自由に決めることができます。ただし、数字だけで始めてはいけない、記号はハイフン以外使えないといった細かな命名規則があります。パラグラフもセクションと同様に、名前の最後に必ずピリオド . を書く必要があります。このピリオドを忘れると、プログラムは「どこで段落が終わったのか」が分からなくなり、エラーが発生してしまいます。
パラグラフを分ける最大のメリットは、PERFORM(パフォーム)という命令を使って、特定のパラグラフだけを呼び出して実行できることです。これにより、同じ処理を何度も書く必要がなくなり、スッキリとした読みやすいコードになります。
PROCEDURE DIVISION.
MAIN-LOGIC SECTION.
DISPLAY-START.
DISPLAY "プログラムを開始します".
CALC-PROCESS.
DISPLAY "計算を実行中です...".
PROGRAM-END.
DISPLAY "プログラムを終了します".
STOP RUN.
4. 領域のルール(A領域とB領域)
ここで、パソコンを触ったことがない方にとって最大の壁となる「領域」について解説します。昔のCOBOLは、パンチカードという紙に穴を開けてプログラムを入力していました。その名残で、現在でも「どの位置に文字を書くか」が厳密に決まっています。
A領域(8列目から11列目)には、セクション名やパラグラフ名、見出しなどを書きます。一方で、具体的な命令文(DISPLAYやMOVEなど)は、B領域(12列目から72列目)に書かなければなりません。もし、命令文をA領域から書き始めてしまうと、コンピューターはそれを「パラグラフの名前だ」と勘違いしてしまい、正しく動作しません。
最初はスペースキーを使って位置を調整するのが大変かもしれませんが、これはCOBOLにおける絶対的なマナーです。現代のエディタでは、この列が分かりやすく表示されるようになっていますので、ガイドラインに合わせて書く練習をしましょう。
5. パラグラフ分割の具体例:計算プログラム
実際に、セクションとパラグラフを使って、簡単な計算を行うプログラムの構造を見てみましょう。ここでは、数値を入力して合計を表示する流れを想定します。
PROCEDURE DIVISION.
COMPUTE-SERVICE SECTION.
INPUT-PARA.
DISPLAY "数値を入力してください".
ACCEPT NUM-INPUT.
CALC-PARA.
ADD 10 TO NUM-INPUT GIVING RESULT-VAL.
OUTPUT-PARA.
DISPLAY "計算結果は " RESULT-VAL " です".
STOP RUN.
この例では、COMPUTE-SERVICE というセクションの中に、入力担当の INPUT-PARA、計算担当の CALC-PARA、出力担当の OUTPUT-PARA という3つのパラグラフがあります。このように役割ごとに分割することで、もし計算方法を変えたくなったら CALC-PARA だけを見れば良いという状態になります。これが「保守性(メンテナンスのしやすさ)」につながります。
6. 階層構造を守ることの重要性
COBOLには4つの「部(DIVISION)」があります。その中でも、今回説明しているセクションやパラグラフが登場するのは、主に PROCEDURE DIVISION(手続き部)です。手続き部の中にセクションがあり、セクションの中にパラグラフがあり、パラグラフの中に命令文(文や句)があるという入れ子構造を意識しましょう。
この順番を無視して、例えばセクションの外に直接命令を書いたりすることはできません。また、一度セクションを使い始めたら、その後の処理もセクションで区切るのが一般的なコーディング規約(プログラミングのルールのこと)です。規約を守ることで、チームで開発をするときに「誰が書いても同じような構造」になり、バグを見つけやすくなります。プログラミングは一人で黙々と書くイメージがあるかもしれませんが、実はコミュニケーションツールとしての側面も強いのです。
7. PERFORM命令を使った分割処理の呼び出し
セクションやパラグラフを分割する本当の力は、PERFORM 命令を使ったときに発揮されます。これは、指定したパラグラフへ「ちょっと行ってきて処理をして、終わったら戻ってきて」とお願いする命令です。
PROCEDURE DIVISION.
MAIN-PROCESS SECTION.
PERFORM OPENING-PARA.
PERFORM DATA-CHECK-PARA.
PERFORM CLOSING-PARA.
STOP RUN.
OPENING-PARA.
DISPLAY "ようこそ!処理を開始します".
DATA-CHECK-PARA.
DISPLAY "データをチェックしています...".
CLOSING-PARA.
DISPLAY "すべての処理が完了しました".
この書き方をすると、MAIN-PROCESS を読むだけで、このプログラムがどのような順番で何をするのかが一目でわかります。詳細な処理内容はそれぞれのパラグラフに隠されているため、全体の流れを把握するのが非常に楽になります。これをプログラミング用語で「構造化プログラミング」と呼びます。初心者の方は、まずメインとなる流れを作り、細かい作業は別のパラグラフに任せる、という考え方を大切にしてください。
8. コーディング規約でよくあるパラグラフの命名ルール
実際の現場では、パラグラフの名前に独自のルール(規約)を設けていることが多いです。例えば、「100-INITIALIZE」や「200-MAIN-LOOP」のように、先頭に数字をつけるルールがあります。これは、プログラムの上から下へと番号を振ることで、目的の場所を探しやすくするための工夫です。
また、セクション名には「S-」をつけ、パラグラフ名には「P-」をつけるといったプロジェクトもあります。これらは言語自体のルールではありませんが、プロの現場で働くためには、その場所ごとのローカルルールを守る柔軟性も求められます。未経験の方は、「名前は何でもいいけれど、意味がわかる名前にする」ことと、「プロジェクトのルールに従う」ことの2点を覚えておきましょう。
PROCEDURE DIVISION.
S100-START SECTION.
P100-INIT.
MOVE 0 TO TOTAL-COUNT.
DISPLAY "初期化完了".
P200-PROCESS.
ADD 1 TO TOTAL-COUNT.
DISPLAY "現在のカウント: " TOTAL-COUNT.
このように数字を使うと、後から「150番の処理を追加しよう」といった相談がしやすくなります。パソコンのファイル名に日付や番号をつけるのと似た感覚ですね。
9. 初心者が間違いやすいピリオドの打ち方
COBOLの学習で最も多くの人がつまずくのが、ピリオドの位置です。パラグラフの終わりには必ずピリオドが必要ですが、命令文の途中に余計なピリオドを打ってしまうと、そこでパラグラフが終了したとみなされてしまいます。
例えば、IF 文(条件分岐)を使っている最中にピリオドを打つと、その IF 文はそこで強制終了されます。パラグラフ名やセクション名の直後には必ずピリオドを打ち、パラグラフ内の命令文の最後にも適切にピリオドを配置する。この「句読点」の感覚は、文章を書くのと非常によく似ています。パソコンのキーボードでピリオド(るのキー)は小さいので見落としがちですが、一文字の違いでプログラムが動かなくなる厳格さを知っておきましょう。
10. 分割ルールをマスターするための練習方法
最後に、セクションとパラグラフの分割を身につけるためのステップを紹介します。まずは、自分の日常の行動をパラグラフに分けて書き出してみることです。例えば「朝の準備」というセクションを作り、「顔を洗うパラグラフ」「朝食を食べるパラグラフ」「着替えるパラグラフ」といった具合に設計図を書いてみてください。
実際のコードを書くときは、まず空のセクションとパラグラフだけを書いてしまい、その後に中身の命令を埋めていく方法がおすすめです。最初から細部を書こうとすると、A領域やB領域のルールが混ざって混乱してしまいます。大きな枠組み(セクション)を作ってから、中身(パラグラフ)を整える。この手順を守れば、初心者の方でも複雑なプログラムを整理して書けるようになります。焦らず、一歩ずつ構造化のコツを掴んでいきましょう。