EXIT(出口)文

EXIT(出口)文は、一連の手続きの共通の終了点を設ける。

EXIT文は、内PERFORM、段落、または節の出口とすることもできる。

EXIT PROGRAM文は、呼ばれたプログラムの論理的な終点を示す。

任意の言語で書かれた呼び出し元のランタイム要素に、値を返することもできる。

EXIT METHOD文は、起動されたメソッドの論理的な終点を示す。

EXIT FUNCTION文は、関数の実行の論理的な終点を示す。

一般形式

形式 1

形式 2

形式 3

形式 4

形式 5

形式 6

構文規則

形式 1
  1. EXIT文は、それだけで完結文を構成しなければならない。

    この規則は強制しない。

  2. EXIT文は、段落中の唯一の完結文でなければならない。

    この規則は強制しない。

形式 2
  1. 形式 2 のEXIT文は、内PERFORMの中だけで使用できる。

形式 4
  1. 完結文内の一連の無条件文の中にEXIT PROGRAM文を指定する場合、これをその最後の文としなければならない。

    この規則は強制しない。

  2. EXIT PROGRAM文を含む段落には、それ以外の完結文を含めてはならない。

    この規則は強制しない。

  3. 整数-1は符号付きでもよい。

  4. GIVING指定とRETURNING指定は同義である。

  5. ADDRESS OF句を指定しなかった場合、一意名-1のサイズは8バイトを超えてはならない。
形式 5
  1. EXIT METHOD文を指定できるのは、メソッド手続き部の中だけである。

形式 6
  1. EXIT FUNCTIONを指定できるのは、関数手続き部の中だけである。

形式 4、5 および 6
  1. 関連するUSE文中にGLOBAL指定が書かれている宣言手続中にEXIT文を指定してはならない。

一般規則

形式 1
  1. EXIT文は、手続き部中のある点に、利用者が手続き名を付けられるようにするだけである。 この形式のEXIT文には、翻訳および実行に関して、それ以外の働きはない
形式 2
  1. CYCLE指定を伴わないEXIT PERFORM文を実行すると、最も近い内PERFORM文に対応するEND-PERFORMのすぐ後ろに続く、暗黙のCONTINUE文に制御が移される。

  2. CYCLE指定を伴うEXIT PERFORM文を実行すると、最も近い内PERFORM文に対応するEND-PERFORMの直前にある、暗黙のCONTINUE文に制御が移される。

形式 3
  1. PARAGRAPH指定を伴う形式 3 のEXIT文を実行すると、段落の最後の文の直前にある、暗黙のCONTINUE文に制御が移される。

  2. SECTION指定を伴う形式 3 のEXIT文を実行すると、節の最後の段落にある最後の文の直前にある、暗黙のCONTINUE文に制御が移される。

形式 4
  1. 呼び出し側のランタイム要素の制御下にないプログラム内でEXIT PORGRAM文を実行すると、次の実行可能な文に制御が移されて、処理が続行される。

  2. 初期属性を持たない呼ばれたプログラム内でEXIT PROGRAM文を実行すると、呼んだランタイム要素の中のCALL文の次の実行可能な文に制御が移されて、処理が続行される。呼んだランタイム要素の状態はCALL文を実行したときと同じである。ただし、呼んだランタイム要素と呼ばれたランタイム要素の間で共有されるデータ項目およびデータ・ファイルの内容は変更されている可能性がある。呼ばれたプログラムの状態も変更されない。ただし、呼ばれたプログラムによって実行されたすべてのPERFORM文は、その範囲の末尾に達したものとみなされる。

  3. 初期属性をもつ呼ばれたプログラム内でEXIT PROGRAMを実行することは、上記の7の処理に加えて、そのプログラムを対象とするCANCEL文を実行することに等しい。ただし、メモリーの解放は行われない。手続き部 - ACCEPT - DIVIDEの章のCANCEL(取消し)文節を参照。)

  4. GLOBAL句が指定されている宣言手続きが実行されている最中に、EXIT PROGRAM文を実行してはならない。ただし、その宣言手続きの実行中に呼ばれたプログラム内で、EXIT PROGRAM文を実行することは構わない。

  5. 呼んだランタイム要素の制御下にあるプログラム内のEXIT PROGRAM文を実行すると、システム領域に戻り値が設定される。このシステム領域は一般にCOBOL以外のプログラムが値を返すために利用できる。そのサイズは4バイトを下回ることはなく、環境によってはそれよりも大きいことがある。

    GIVING指定を書かず、呼出し方式に特殊レジスタのRETURN-CODE(環境部の章の特殊名段落節の呼出し方式を参照)を更新するように指定した場合、オブジェクト・プログラム動作は下記のようになる。具体的には、システム領域がCOBOLの数字データ項目であり、それにUSAGE COPM-5が指定されていて、そのサイズはCOBOLシステムの外の操作環境によって決定されるものとして宣言されている状態で、RETURN-CODEを送出し側としシステム領域を受取り側として、MOVE文を実行したかのように動作する。(RETURN-CODEの詳細については、COBOL言語の概念の章の特殊レジスタ節を参照。)

    GIVING ADDRESS OF指定を書いた場合、オブジェクト・プログラム動作は下記のようになる。具体的には、システム領域がUSAGE POINTERと指定されたCOBOLのデータ項目として宣言され、「ADDRESS OF 一意名-9」を最初の作用対象としシステム領域を2番目の作用対象として、SET文を実行したかのように動作する。システム領域よりも大きな値を間接的に渡すために、ADDRESS OF指定を使用できる。

    「GIVING 一意名-1」指定を書いた場合、一意名-1はシステム領域に戻り値を収めるのに必要な長さがあり、その型と用途は呼んだランタイム要素によって期待されるのものでなければならない。一意名-1を送出し側項目とし、システム領域を受取り側項目として、MOVE文を実行したかのように、オブジェクト・プログラムは動作する。

    「GIVING 整数-1」指定を書いた場合、整数-1の値はシステム領域に保持可能なよりも大きくてはならない。オブジェクト・プログラム動作は下記のようになる。具体的には、システム領域がCOBOLの数字データ項目であり、それにUSAGE COPM-5が指定されていて、そのサイズはCOBOLシステムの外の操作環境によって決定されるものとして宣言されている状態で、整数-1を送出し側としシステム領域を受取り側として、MOVE文を実行したかのように動作する。

形式 5
  1. EXIT METHOD文を実行すると、実行中のメソッドが停止され、呼出し元の文に制御が戻される。呼出し元のメソッド定義にRETURNING指定があると、RETRUNING指定によって参照されたデータ項目中の値がそのメソッド呼出しの結果となる。
形式 6
  1. EXIT FUNCTION文を実行すると、実行中の関数が停止され、呼出し元の文に制御が戻される。親の関数に含まれるRETURNING指定により参照されるデータ項目の値が、関数呼出しの結果となる。