COBOL言語の「GOBACK文」とは?使用例などを解説します! | 用語辞典

COBOL2002規格により追加されたCOBOL(コボル)言語の予約語GOBACKとは

辞典・辞書-GOBACK-イメージ

COBOL(コボル)言語のGOBACK文とは?

GO BACK(英語)は、日本語に訳すると「~へ戻る」、または「回帰する」という意味です。

COBOL(コボル)言語のGOBACK文は、プログラムの実行を終了し、制御を呼び出し元のプログラムに戻します。

GOBACK文の形式:GOBACK

GOBACKは、プログラムの実行を終了し、CALLで呼び出したプログラムに制御を戻します。使われ方としては、主プログラムから副プログラムを実行する場合の、副プログラム側の終了命令として使われます。

■書式

 GOBACK

■使用例

 実際にGOBACKを使用したプログラム例をご紹介します。

辞典・辞書-GOBACK-使用例

このプログラムは、「こんにちは」とういうメッセージを表示するプログラムです。19行目を見てください。「STOP RUN」ではなく、「GOBACK」でプログラムを終了しています。

■実行結果

辞典・辞書-GOBACK-実行結果

「STOP RUN」でプログラムを終了させたときと同じように、特に問題なくプログラムが終了しました。

GOBACK文のCOBOL(コボル)言語における基本事項やルールについて

GOBACK文は、プログラムの実行を終了させ、呼び出し元のプログラムに制御を返す命令です。GOBACK文のあとに命令を書いても、実行されません。

COBOL(コボル)言語のGOBACK文を使うときの注意点

GOBACK文をプログラムのたくさんの場所に書くと、山盛りのスパゲティのように、プログラムの開始と終了がわかりにくいプログラムになってしまいます。GOBACK文はできるだけ1カ所にしましょう。

GOBACK文を使ったCOBOL(コボル)プログラムの活用方法

COBOL2002規格では、GOBACK文にGIVING句を与えると、リターンコードを呼び出し元のプログラムに返却することができます。呼び出し元の主プログラムはRETURNING句によって、副プログラムのリターンコードを受け取ることができます。

では、GIVING句とRETURNING句を使って副プログラムのリターンコードを主プログラムに返却するプログラム例をご紹介します。

プログラム例では、副プログラムは入力された値で10を割り算し、結果を表示します。副プログラムに入力できる値は0、2、5の3つで、0、2、5以外を入力すると、エラーメッセージを表示し、再入力をうながします。主プログラムは、副プログラムを呼び出し、副プログラムからのリターンコードを表示します。

■主プログラム

   
  1. ******************************************************************
  2. * Author:
  3. * Date:
  4. * Purpose:
  5. * Tectonics: cobc
  6. ******************************************************************
  7. IDENTIFICATION DIVISION.
  8. PROGRAM-ID. GOBACK_SUMPLE2.
  9. DATA DIVISION.
  10. FILE SECTION.
  11. WORKING-STORAGE SECTION.
  12. 01 WORKING-AREA.
  13. 03 DISPLAY-BUF PIC X(30).
  14. 03 RET PIC 9(1).
  15.  
  16. PROCEDURE DIVISION.
  17.  
  18. *-------------------------------------------
  19. * 主手続
  20. *-------------------------------------------
  21. MAIN-PROCEDURE.
  22. MOVE SPACE TO DISPLAY-BUF.
  23. MOVE ZERO TO RET.
  24.  
  25. CALL "GOBACK_SUMPLE3" RETURNING RET.
  26. STRING "戻り値=" RET DELIMITED BY SPACE INTO DISPLAY-BUF.
  27. DISPLAY DISPLAY-BUF.
  28.  
  29. STOP RUN.
  30. END PROGRAM GOBACK_SUMPLE2.

■副プログラム

   
  1. ******************************************************************
  2. * Author:
  3. * Date:
  4. * Purpose:
  5. * Tectonics: cobc
  6. ******************************************************************
  7. IDENTIFICATION DIVISION.
  8. PROGRAM-ID. GOBACK_SUMPLE3.
  9. DATA DIVISION.
  10. FILE SECTION.
  11. WORKING-STORAGE SECTION.
  12. 01 WORKING-AREA.
  13. 03 CONSOLE-INPUT PIC 9(1).
  14. 03 RESULT PIC 9(1).
  15. 03 DISPLAY-BUF PIC X(30).
  16.  
  17. PROCEDURE DIVISION.
  18.  
  19. *-------------------------------------------
  20. * 主手続
  21. *-------------------------------------------
  22. MAIN-PROCEDURE.
  23. * コンソール入力エリアの初期化
  24. MOVE ZERO TO CONSOLE-INPUT.
  25. MOVE SPACE TO DISPLAY-BUF.
  26.  
  27. EXEC-DISPLAY-INPUT-PROC.
  28. * コンソール表示&入力
  29. DISPLAY "0、2、5 のいずれかの値を入力してください".
  30. ACCEPT CONSOLE-INPUT FROM CONSOLE.
  31.  
  32. * 0、2、5以外が入力された場合、コンソール表示&入力を繰り返す
  33. IF (CONSOLE-INPUT = 0) OR
  34. (CONSOLE-INPUT = 2) OR
  35. (CONSOLE-INPUT = 5) THEN
  36. COMPUTE RESULT = 10 / CONSOLE-INPUT
  37. STRING "結果=" RESULT DELIMITED BY SPACE
  38. INTO DISPLAY-BUF
  39. DISPLAY DISPLAY-BUF
  40. ELSE
  41. DISPLAY "入力値が誤っています"
  42. GO TO EXEC-DISPLAY-INPUT-PROC
  43. END-IF.
  44.  
  45. GOBACK GIVING RESULT.
  46. END PROGRAM GOBACK_SUMPLE3.

はじめに0、2、5の入力を促すメッセージが表示されます。

辞典・辞書-GOBACK-入力例1

数字の5を入力してみます。

辞典・辞書-GOBACK-入力例2

割り算の結果と戻り値に2が表示され、プログラムが終了しました。

GOBACK文はプログラムの実行を終了するだけでなく、CALL文と組み合わせることにより、リターンコードを返却することができ、呼び出し先の副プログラムの処理の結果を、呼び出し元の主プログラムに返却することができます。GOBACK文を上手く使うことで、副プログラムの処理結果により、主プログラムの実行制御を変えるなど、プログラミングの幅が広がります。

この記事を読んだ人は、こちらの記事も読んでいます

【未経験者歓迎】COBOLプログラマー・システムエンジニアの募集

株式会社COBOLの求人・転職・募集情報を見る

COBOL入門のカテゴリー

取引企業様 募集中
COBOL技術者 募集
COBOL魂
読者採用
COBOL入門