本文へスキップ
BecomeCoder

COBOLコース · 第5章 繰り返しと構造化 ― PERFORM · レッスン25

PERFORM基本 ― 段落(paragraph)を呼び出す

ブラウザで完結

導入

これまでPROCEDURE DIVISIONの中身は上から下へ一直線に実行してきましたが、COBOLにも「処理をひとまとまりの単位に分けて、呼び出す」仕組みがあります。その単位が 段落(paragraph) で、呼び出す命令が PERFORM です。

説明

段落とは、PROCEDURE DIVISIONの中に付けた「名前付きのまとまり」です。

       PROCEDURE DIVISION.
       MAIN-PROCESS.
           DISPLAY "処理を開始します".
           PERFORM PRINT-HEADER.
           PERFORM PRINT-BODY.
           DISPLAY "処理を終了します".
           STOP RUN.

       PRINT-HEADER.
           DISPLAY "===== レポート =====".

       PRINT-BODY.
           DISPLAY "ここに本文が入ります".
  • MAIN-PROCESS. / PRINT-HEADER. / PRINT-BODY. … それぞれが段落名です。8列目(Area A)から書き、末尾にピリオドを付けます。段落名の次の行から、次の段落名が出てくるまでが、その段落の中身になります。
  • PERFORM PRINT-HEADER.PRINT-HEADER 段落の処理を実行し、終わったら呼び出した場所に戻ってくる。多くの言語での関数呼び出しに近い動きです。
  • プログラムの実行は、最初に書かれた段落(この例では MAIN-PROCESS)から始まります。

実行結果は次のようになります。

処理を開始します
===== レポート =====
ここに本文が入ります
処理を終了します

大事な注意点があります。COBOLの段落は、他の言語の「関数」と違って 引数を取りません(引数を渡したい場合の仕組みは第9章のサブプログラムで学びます)。段落同士でデータをやり取りするときは、WORKING-STORAGE SECTIONで宣言した変数を共有します——つまりすべての段落から同じ変数が見える、という点が特徴です。

段落をいくつかまとめた SECTION(節)という、もう一段大きな単位もありますが、まずは「段落=PERFORMで呼び出せる処理のまとまり」という基本を押さえておきましょう。

試すには

MAIN-PROCESS から3つの段落(PRINT-HEADERPRINT-BODYPRINT-FOOTER)をPERFORMで呼び出す簡単なプログラムを書いて、呼び出した順番どおりに表示されることを確認してみましょう。

実際に動かしてみよう

下のエディタにCOBOLを書いて「実行」を押すと、学習用シミュレータが DISPLAY の出力を表示します(本物のGnuCOBOLではなく、教材の範囲を再現した軽量エンジンです)。PICTURE句の桁数・ゼロ詰め・切り捨てなどCOBOLらしい挙動もそのまま体験できます。本文の例を書き換えて動かしてみましょう(ファイル処理やCALLなど一部の機能は対象外です)。

COBOL — ブラウザ内で実行(学習用シミュレータ)

COBOLの教材サブセットを動かす学習用シミュレータを読み込みます(本物のGnuCOBOLではなく、動きを再現した軽量な自作エンジンです)。
スクロールして表示された時点でも自動で読み込まれます。