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

“`html

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

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

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

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です