【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言語で計算処理をするなら「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つのヒント|学習講座