【COBOL言語】「GO TO文」とは?使用頻度が減っている理由も解説します | 用語辞典
COBOL(コボル)言語の予約語GO TO文を使ったプログラムの流れの制御とは
COBOL(コボル)言語のGO TO文とは?
GO TO(英語)は、日本語に訳すると「~へ行く」という意味です。
COBOL(コボル)言語のGO TO文は、TOで示されるラベルにジャンプします。
GO TO文の形式
GO TO文は、TOのあとに書かれたラベルにジャンプします。
■書式
GO TO ジャンプ先ラベル
■構文規則
<ジャンプ先ラベル>
処理をジャンプさせる先のラベル名を記述します。
■使用例
実際にGO TO文を使用したプログラム例をご紹介します。
このプログラムは、コンソールに入力を促すメッセージを表示し、数字の0から9までの1文字を入力させる処理を繰り返すプログラムです。数字の9が入力されるとプログラムを終了します。
29行目のGO TO文で入力値のチェック処理にジャンプし、入力値のチェック処理では、入力値により、GO TO文での処理の戻り先が、「END-PROC」と「EXEC-DISPLAY-INPUT-PROC」の2カ所に分かれています。
■実行結果
はじめに入力を促すメッセージが表示されます。
数字の0を入力してみます。
入力を促すメッセージが繰り返し表示されます。
次に数字の8を入力してみます。
入力を促すメッセージが繰り返し表示されます。
次に英字のAを入力してみます。
エラーメッセージが表示され、入力を促すメッセージが表示されます。
次に数字の9を入力してみます。
終了メッセージが表示され、プログラムが終了しました。
GO TO文のCOBOL(コボル)言語における基本事項やルールについて
GO TO文は処理を制御するための単純なジャンプ命令です。
処理をジャンプさせると、ジャンプ元のソースコードを見たときに、どこに処理が戻ってくるのか、またジャンプ先で処理がどこに行ってしまうのか理解しにくく、よく考えてジャンプさせないと、山盛りのスパゲティのように、処理の開始と終了がわからないソースコードになり、デバッグや改修が難しいプログラムになってしまいます。
このため、構造化プログラミングが主流となった現在のCOBOLプログラミングではGO TO文はほとんど使われず、サブルーチンを呼び出すPERFORM文や、別処理を呼び出すCALL文が使われています。
しかし、古いソースコードを読むと、まれにGO TO文が使われていることがありますので、参考として使い方を覚えておくといいでしょう。
COBOL(コボル)言語のGO TO文を使うときの注意点
現在の構造化されたCOBOLプログラミングでは、GO TO文を使うことがほとんどありませんが、どうしてもGO TO文を使う場合は、ジャンプ先から戻ってくるラベルを1カ所に統一するなど、処理の流れが明確にわかるようにしてください。
また、GO TO文を使う場合は、エラー処理などの例外処理などに限定しましょう。
GO TO文を使ったCOBOL(コボル)プログラムの活用方法
「COBOL(コボル)言語のGO TO文とは」でご紹介したサンプルプログラムは、ジャンプ先からの戻り先が複数あり、山盛りのスパゲティのように処理の開始と終了がわかりにくいソースコードでした。
しかし、大きくジャンプする箇所をエラー処理へのジャンプに限定し、繰り返し用のジャンプを1カ所に集約することによって、GO TO文を使っていても、比較的読みやすいソースコードにすることができます。
「COBOL(コボル)言語のGO TO文とは」のサンプルプログラムと同じ機能を、読みやすいソースコードにしたプログラムを、活用例としてご紹介します。
- ******************************************************************
- * Author:
- * Date:
- * Purpose:
- * Tectonics: cobc
- ******************************************************************
- IDENTIFICATION DIVISION.
- PROGRAM-ID. GOTO-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.
- EXEC-DISPLAY-INPUT-PROC.
- * コンソール表示&入力
- DISPLAY "数字を1文字入力してください".
- DISPLAY "0-8:CONTINUE 9:EXIT".
- ACCEPT CONSOLE-INPUT FROM CONSOLE.
- IF CONSOLE-INPUT = 9
- GO TO END-PROC
- ELSE IF (CONSOLE-INPUT <= 8) AND
- (CONSOLE-INPUT >= 0) THEN
- CONTINUE
- ELSE
- GO TO DISPLAY-ERROR-MSG-PROC
- END-IF
- END-IF.
- LOOP-LABEL.
- GO TO EXEC-DISPLAY-INPUT-PROC.
- END-PROC.
- DISPLAY "プログラムを終了します"
- STOP RUN.
- *-------------------------------------------
- * エラーメッセージ表示処理
- *-------------------------------------------
- DISPLAY-ERROR-MSG-PROC.
- DISPLAY "入力値が数字ではありません"
- GO TO LOOP-LABEL.
- END PROGRAM GOTO-SUMPLE2.
■実行結果
はじめに入力を促すメッセージが表示されます。
数字の0を入力してみます。
入力を促すメッセージが繰り返し表示されます。
次に数字の8を入力してみます。
入力を促すメッセージが繰り返し表示されます。
次に英字のAを入力してみます。
エラーメッセージが表示され、入力を促すメッセージが表示されます。
次に数字の9を入力してみます。
終了メッセージが表示され、プログラムが終了しました。
現代のCOBOL言語において、GO TO文は死語といっていいでしょう。
プログラムの改修する場合や、新規にプログラムを作る場合は、GO TO文を使用せず、PERFORM文やCALL文で必要な機能を実現できるように、きれいに構造化した設計をすることが大切です。
この記事を読んだ人は、こちらの記事も読んでいます
あなたのCOBOL技術を活かしませんか?
COBOL入門のカテゴリー
1. 優良社員が多数在籍しています
2. 即日派遣、又は請負います
3. 安心価格で請負います
4. 同時、協力会社募集中です
1. 正社員
2. 契約社員
3. 個人事業主
などの
求人情報
が閲覧できます。
目指せ!COBOLダントツ一番企業。
創業当初の話や理念が閲覧できます。
応募条件
※2020年5月31日を以って、締切りました。
18歳~28歳の方。
正社員採用において、北川社長の著書『祈り方が9割』を読んで感想文を事前に提出すると、無条件で最終面接まで進むことができます。
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句」は便利?使用方法を学びましょう|用語辞典