COBOL言語の「PERFORM文」とは。実行制御について解説! | 用語辞典
COBOL(コボル)言語の予約語PERFORMを使ったサブルーチンの実行とは
COBOL(コボル)言語のPERFORM文とは?
PERFORM(英語)は、日本語に訳すると、「実行する」という意味です。
COBOL(コボル)言語のPERFORM文は、サブルーチンを実行したり、サブルーチンを繰り返し実行したりします。サブルーチンとは、手続き部に記述されたサブルーチン名からEXITまでの1連の処理群です。
PREFORM文の形式1 ~サブルーチンを実行する~
サブルーチンを1度だけ実行する場合は、PERFORMのあとにサブルーチン名を記述します。
構文
PREFORM サブルーチン名.
使用例
PREFORM SUB-PROC-1.
PREFORM文の形式2 ~サブルーチンを一定回数実行する~
サブルーチンを一定回数実行する場合は、PREFORM サブルーチン名のあとに実行回数を指定します。
構文
PREFORM サブルーチン名. 実行回数 TIMES.
構文規則
<サブルーチン名>
実行するサブルーチン名を記述します。
<実行回数>
サブルーチンを実行する回数を整数の数値定数や、整数の数値形式のデータ項目で指定します。
使用例
PREFORM SUB-PROC-1 PROCNUM TIMES.
PREFORM文の形式3 ~サブルーチンを指定した条件になるまで実行する~
指定した条件を満たす間、サブルーチンを実行するには、UNTIL句を使います。
構文
PREFORM サブルーチン名 [ WITH TEST 確認タイミング] UNTIL 論理式.
構文規則
<サブルーチン名>
実行するサブルーチン名を記述します。
<確認タイミング>
実行するかどうかの確認をサブルーチンの実行前(BEFORE)、実行後(AFTER)で記述します。
指定しなかった場合のデフォルト値(規定値)は、BEFOREです。
<論理式>
サブルーチンを終了する条件を論理式で記述します。
論理式は、IF~THENで指定する論理式と同じ構文です。
使用例
PREFORM SUB-PROC-1 UNTIL LOOP-CNT > LOOP-MAX.
PREFORM SUB-PROC-1 WITH TEST AFTER UNTIL LOOP-CNT > LOOP-MAX.
COBOL(コボル)言語のPERFORM文を使ったプログラム例
では、実際にPREFORM文を使用したプログラム例をご紹介します。
このプログラムは、コンソールに入力を促すメッセージを表示し、数字の0から9までの1文字を入力させる処理を繰り返すプログラムです。数字の9が入力されるとプログラムを終了します。
着目してほしいのは、24行目から31行目までの繰り返しを制御している部分で、メイン処理部のIF文で制御し、GO TO文でループさせている点です。
では、プログラムを実行してみましょう。
はじめに入力を促すメッセージが表示されます。
数字の0を入力してみます。
入力を促すメッセージが繰り返し表示されます。
次に数字の8を入力してみます。
入力を促すメッセージが繰り返し表示されます。
次に数字の9を入力してみます。
プログラムが終了しました。
COBOL(コボル)言語のPERFORM文を使うときの注意点
単純にサブルーチンを実行させる場合は特に注意する必要はありませんが、UNTIL句を使う場合は、以下の注意が必要です。
間違って永久ループになりやすい
UNTIL句を使うとサブルーチンは条件になるまで実行され続けるため、バグ(プログラムの不具合)によって、永久ループになってしまうことがあります。UNTIL句には、デバッグしやすいシンプルな条件式を設定しましょう。
初期化漏れで思わぬ動作をする
UNTIL句の条件式に使う変数を初期化せずに使うと、初回の処理をする前の判定が思わぬ動作をしてしまいます。UNTIL句の条件式に使う変数は必ず初期化して使いましょう。
PERFORM文を使ったCOBOL(コボル)プログラムの活用方法
「COBOL(コボル)言語のPERFORM文を使ったプログラム例」と同じ機能を、PERFORM文のUNTIL句を使うことで、実行制御を簡略化することができます。
では、UNTIL句を使ったサンプルプログラムをご紹介します。
- ******************************************************************
- * Author:
- * Date:
- * Purpose:
- * Tectonics: cobc
- ******************************************************************
- IDENTIFICATION DIVISION.
- PROGRAM-ID. PERFORM-SUMPLE2.
- DATA DIVISION.
- FILE SECTION.
- WORKING-STORAGE SECTION.
- 01 WORKING-AREA.
- * コンソール入力バッファ
- 03 CONSOLE-INPUT PIC X(1).
- PROCEDURE DIVISION.
- *-------------------------------------------
- * 主手続
- *-------------------------------------------
- MAIN-PROCEDURE.
- * コンソール入力エリアの初期化
- MOVE SPACE TO CONSOLE-INPUT.
- * コンソール表示&入力
- PERFORM DISPLAY-INPUT-PROC UNTIL CONSOLE-INPUT = 9.
- STOP RUN.
- *-------------------------------------------
- * コンソール表示&入力処理
- *-------------------------------------------
- DISPLAY-INPUT-PROC.
- DISPLAY "数字を1文字入力してください".
- DISPLAY "0-8:CONTINUE 9:EXIT".
- ACCEPT CONSOLE-INPUT FROM CONSOLE.
- EXIT.
- END PROGRAM PERFORM-SUMPLE2.
着目してほしいのは赤字で記述したPERFORM文です。「COBOL(コボル)言語のPERFORM文を使ったプログラム例」では、5ステップかかった処理が、PERFORM文でUNTIL句を使うと、シンプルな1ステップになっています。GO TO文を使わないので、ラベルも必要ありません。
では、プログラムを実行してみましょう。
はじめに入力を促すメッセージが表示されます。
数字の0を入力してみます。
入力を促すメッセージが繰り返し表示されます。
次に数字の8を入力してみます。
入力を促すメッセージが繰り返し表示されます。
次に数字の9を入力してみます。
プログラムが終了しました。
PERFORM文にUNTIL句を使うと、「COBOL(コボル)言語のPERFORM文を使ったプログラム例」と全く同じ機能を、シンプルに実現できることがわかっていただけると思います。
シンプルなプログラムは、バグを生みません。プログラミングは「シンプル イズ ベスト」であることを心にとどめておいてください。
この記事を読んだ人は、こちらの記事も読んでいます
あなたのCOBOL技術を活かしませんか?
COBOL入門のカテゴリー
1. 優良社員が多数在籍しています
2. 即日派遣、又は請負います
3. 安心価格で請負います
4. 同時、協力会社募集中です
1. 正社員
2. 契約社員
3. 個人事業主
などの 求人情報 が閲覧できます。
目指せ!COBOLダントツ一番企業。
創業当初の話や理念が閲覧できます。
COBOLとは、どのようなプログラミング言語なのか、初心者にもわかりやすく、文法の例をあげて解説してます。
COBOL入門の人気記事
- COBOL言語とは?プログラムの書き方やルールを解説!|基礎ガイド
- 【COBOL言語】条件分岐処理の代名詞「IF文」について知ろう|用語辞典
- COBOL言語の「MOVE文」とは?転記のルールをご紹介します|用語辞典
- COBOL言語の「STRING文」とは?文字連結の基礎知識と注意点|用語辞典
- 多枝分岐ってなに?COBOL言語の「EVALUATE文」を知ろう!|用語辞典
- COBOL言語の「PICTURE句」とは?基本事項を解説します!|用語辞典
- COBOL言語で計算処理をするなら「COMPUTE文」|用語辞典
- COBOL言語の「REDEFINES句」とは?使い方を確認しよう!|用語辞典
- 覚えておけば楽ができる?COBOL言語の「COPY文」の使い方|用語辞典
- COBOL言語の文字列操作のパターンを理解しよう!|基礎ガイド
- COBOL言語の初期化処理に重宝する「INITIALIZE文」とは?|用語辞典
- COBOL言語の「LOW-VALUE」の使い方について理解しよう!|基礎ガイド
- COBOL言語の「OCCURS句」について知ろう!学ぶべき基本とは|用語辞典
- COBOL言語初心者も安心! 難解「CALL文」をスッキリ解決|用語辞典
- COBOL言語の「PERFORM文」とは。実行制御について解説!|用語辞典
- COBOL言語の繰り返し処理のパターンを理解しよう!|基礎ガイド
- COBOL言語の「定数」の種類と使い方について理解しよう!|用語辞典
- COBOLのDBアクセスパターンを学ぼう!「FETCH」|応用ガイド
- COBOL言語の「DISPLAY文」は、ディスプレイ出力の為にある|用語辞典
- COBOL言語の「VARYING句」は便利?使用方法を学びましょう|用語辞典