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ダントツ一番企業。
創業当初の話や理念が閲覧できます。
応募条件
※2020年5月31日を以って、締切りました。
18歳~28歳の方。
正社員採用において、北川社長の著書『祈り方が9割』を読んで感想文を事前に提出すると、無条件で最終面接まで進むことができます。
COBOLとは、どのようなプログラミング言語なのか、初心者にもわかりやすく、文法の例をあげて解説してます。
COBOL入門の人気記事
- COBOL言語で計算処理をするなら「COMPUTE文」|入門用語辞典
- COBOL言語の「ACCEPT文」の使い方を分かり易く解説|入門用語辞典
- COBOL言語初心者も安心! 難解「CALL文」をスッキリ解決|入門用語辞典
- 徹底解説!一歩先を行くCOBOL言語のCOPY文活用法|応用ガイド
- 一歩先を行くCOBOL言語の表操作!逐次検索と二分検索|応用ガイド
- COBOL言語の加算処理の基本を伝授! 命令文「ADD」とは?|入門用語辞典
- 徹底解説!一歩先を行くCOBOL言語のファイル併合処理|応用ガイド
- COBOL言語でファイルの開閉命令はOPEN文とCLOSE文!|入門用語辞典
- 徹底解説!一歩先を行くCOBOL言語のデータ共有|応用ガイド
- COBOL言語とは?プログラムの書き方やルールを解説!|基礎ガイド
- COBOL言語の歴史とこれまでの進化を知る!廃止・追加機能|基礎ガイド
- COBOL言語のオブジェクト指向について理解しよう!|基礎ガイド
- COBOL言語のディスプレイ出力とコンソール入力について|基礎ガイド
- COBOL言語が得意とする計算処理を体験してみよう!|基礎ガイド
- 一歩先を行くCOBOL言語のユーザ定義関数について|応用ガイド
- 初心者から中級者でも安心!理解できるCOBOL言語の勉強法|学習講座
- 初心者必見!COBOL言語を効率よくマスターする勉強法とは|学習講座
- COBOL初心者が犯しやすいミスとその対策について|学習講座
- COBOL初心者がやってはいけない勉強方法とは?|学習講座
- 一歩先へ行くCOBOLプログラマの知っておくべき4つのヒント|学習講座