[COBOLのはじめ方] Part8: PROCEDURE DIVISIONの記述と実行

“`html

COBOLプログラムの心臓部!処理内容を記述しよう

IDENTIFICATION DIVISION、ENVIRONMENT DIVISION、DATA DIVISIONと学んできましたね。いよいよCOBOLプログラムの「処理」そのものを記述するPROCEDURE DIVISIONの登場です!🎉 ここでは、プログラムが実際に行う具体的な手順を書いていきます。

このステップでは、PROCEDURE DIVISIONの基本的な書き方と、簡単な命令を使ったプログラムの実行方法を学びます。


Warning: Undefined array key “is_admin” in /home/c2261046/public_html/omomuki-tech.com/wp-content/themes/sango-theme/library/gutenberg/dist/classes/Toc.php on line 113

Warning: Undefined array key “is_category_top” in /home/c2261046/public_html/omomuki-tech.com/wp-content/themes/sango-theme/library/gutenberg/dist/classes/Toc.php on line 118

Warning: Undefined array key “is_top” in /home/c2261046/public_html/omomuki-tech.com/wp-content/themes/sango-theme/library/gutenberg/dist/classes/Toc.php on line 124

PROCEDURE DIVISIONの基本的な構造

PROCEDURE DIVISIONは、COBOLプログラムの4つのDIVISIONの中で最後に記述され、プログラムの実行ロジックを含みます。


IDENTIFICATION DIVISION.
PROGRAM-ID. YOUR-PROGRAM-NAME.

ENVIRONMENT DIVISION.
* (必要に応じて記述)

DATA DIVISION.
* (必要に応じて記述)

PROCEDURE DIVISION.
* ここにプログラムの処理を記述します。
    DISPLAY 'Hello, PROCEDURE DIVISION!'.
    STOP RUN.
      

PROCEDURE DIVISIONはPROCEDURE DIVISION.という行で始まり、プログラムの最後のSTOP RUN.文などで処理が終了します。

段落 (Paragraph)

PROCEDURE DIVISION内の処理は、段落 (Paragraph) という単位でまとめることができます。段落は、ユーザー定義の単語(段落名)とピリオド.で始まり、その段落に属する文(Sentence)が続きます。


PROCEDURE DIVISION.
MAIN-PROCEDURE.
    DISPLAY 'This is the main procedure.'.
    PERFORM SUB-PROCEDURE. *> SUB-PROCEDUREを実行する
    STOP RUN.

SUB-PROCEDURE.
    DISPLAY 'This is the sub procedure.'.
* (ここに他の処理を記述)
      

必須ではありませんが、処理の流れを分かりやすくするために、段落で処理を分割することが一般的です。段落名は、英数字とハイフンで構成され、先頭は英字である必要があります。

💡 ポイント: 段落を使うことで、PERFORM文などで特定の処理ブロックを呼び出すことができ、プログラムの構造化に役立ちます。

基本的な命令を使ってみよう

PROCEDURE DIVISIONでは様々な命令(動詞)を使って処理を記述します。まずは、最も基本的な3つの命令を見ていきましょう。

1. DISPLAY文: 画面への出力

DISPLAY文は、コンソール(実行画面)に文字や変数の内容を表示するための命令です。文字列を表示する場合は、シングルクォーテーション'またはダブルクォーテーション"で囲みます。


PROCEDURE DIVISION.
    DISPLAY 'こんにちは、COBOLの世界へ!'.
    DISPLAY "現在の時刻は... (表示されません)". *> 例です
    STOP RUN.
      

DATA DIVISIONで定義した変数の内容を表示することもできます。


DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-MESSAGE PIC X(20) VALUE 'Hello from variable!'.

PROCEDURE DIVISION.
    DISPLAY WS-MESSAGE. *> 変数 WS-MESSAGE の内容が表示される
    STOP RUN.
      

2. ACCEPT文: 画面からの入力

ACCEPT文は、コンソールからユーザーの入力を受け取り、指定した変数に格納するための命令です。


DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-USER-INPUT PIC X(10). *> ユーザー入力を格納する変数 (10文字)

PROCEDURE DIVISION.
    DISPLAY '何か入力してください (最大10文字):'.
    ACCEPT WS-USER-INPUT. *> 入力を待機し、WS-USER-INPUTに格納
    DISPLAY '入力された内容: ' WS-USER-INPUT.
    STOP RUN.
      

ACCEPT文が実行されると、プログラムはユーザーの入力を待ち状態になります。ユーザーが何か入力してEnterキーを押すと、その内容が指定された変数(この例ではWS-USER-INPUT)に格納され、次の処理に進みます。

⚠️ 注意

ACCEPTで受け取る変数のPIC句で定義されたサイズを超える入力があった場合、超過分は切り捨てられたり、予期せぬ動作を引き起こす可能性があります。入力されるデータ長を考慮して変数を定義しましょう。

3. STOP RUN文: プログラムの終了

STOP RUN文は、COBOLプログラムの実行を完全に終了させるための命令です。通常、プログラムのメイン処理の最後に記述されます。


PROCEDURE DIVISION.
    DISPLAY 'プログラムを開始します。'.
    * (ここに様々な処理)
    DISPLAY 'プログラムを終了します。'.
    STOP RUN. *> ここでプログラムの実行が終了する
      

この命令が実行されると、制御はオペレーティングシステム(OS)に戻ります。

簡単なプログラム例:挨拶プログラム

これまでに学んだことを使って、ユーザーに名前を尋ねて挨拶する簡単なプログラムを作成してみましょう。


IDENTIFICATION DIVISION.
PROGRAM-ID. GREETING-PROGRAM.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-USER-NAME PIC X(20). *> ユーザー名を格納する変数

PROCEDURE DIVISION.
MAIN-ROUTINE.
    DISPLAY 'こんにちは!お名前を入力してください:'.
    ACCEPT WS-USER-NAME.

    DISPLAY 'ようこそ、' WS-USER-NAME 'さん!'.
    DISPLAY 'COBOLの世界へようこそ!🚀'.

    STOP RUN.
      

このプログラムは、まず挨拶を表示し、ユーザーに名前の入力を促します。入力された名前はWS-USER-NAME変数に格納され、その名前を使って再度挨拶を表示してから終了します。

COBOLプログラムの実行方法

作成したCOBOLプログラムを実行するには、通常、以下の2つのステップが必要です。

  1. コンパイル (Compile): 人間が読めるCOBOLのソースコード(.cob.cblといった拡張子が多い)を、コンピュータが実行できる形式(機械語や中間コード)に変換します。この変換を行うプログラムを「コンパイラ」と呼びます。GnuCOBOL (旧OpenCOBOL) などのコンパイラを使用します。
  2. 実行 (Run): コンパイルによって生成された実行可能ファイルを実行します。

具体的なコマンドは、使用しているOS(Windows, macOS, Linux)やCOBOL開発環境(GnuCOBOL, Micro Focus COBOLなど)によって異なります。

例えば、GnuCOBOLを使用している場合、LinuxやmacOSのターミナルでは以下のようなコマンドでコンパイル・実行できる場合があります。(環境によって異なります)


# コンパイル (ソースファイル名が greeting.cob の場合)
cobc -x -o greeting greeting.cob

# 実行
./greeting
      

開発環境の構築ステップで設定した方法に従って、コンパイルと実行を試してみてください。エラーが出た場合は、メッセージをよく読んでソースコードを修正しましょう。デバッグもプログラミングの重要なスキルです💪。

まとめ ✨

今回は、COBOLプログラムの処理内容を記述するPROCEDURE DIVISIONの基本を学びました。

  • PROCEDURE DIVISIONはプログラムの実行ロジックを担当する。
  • DISPLAY文で画面に情報を出力できる。
  • ACCEPT文でユーザーからの入力を受け取れる。
  • STOP RUN文でプログラムを終了する。
  • プログラムは「コンパイル」してから「実行」する。

PROCEDURE DIVISIONはCOBOLプログラミングの中核です。基本的な命令を覚えたら、次は条件分岐や繰り返しなど、より複雑な処理を記述する方法を学んでいきましょう!