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
)に格納され、次の処理に進みます。
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つのステップが必要です。
- コンパイル (Compile): 人間が読めるCOBOLのソースコード(
.cob
や.cbl
といった拡張子が多い)を、コンピュータが実行できる形式(機械語や中間コード)に変換します。この変換を行うプログラムを「コンパイラ」と呼びます。GnuCOBOL (旧OpenCOBOL) などのコンパイラを使用します。 - 実行 (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プログラミングの中核です。基本的な命令を覚えたら、次は条件分岐や繰り返しなど、より複雑な処理を記述する方法を学んでいきましょう!