STOP(停止)文

STOP(停止)文は、実行単位の実行を、永久的にまたは一時的に停止させる。

「STOP定数」文は、ANSI'85標準では廃要素に分類されており、ANSI標準の次回の全面改訂の際に、削除される予定である。

この構文は、Micro Focus COBOL に組み込まれているすべての方言で全面的に使用できる。FLAGSTD指令を使用すると、この構文が使われているすべての箇所を見つけ出すことができる。

標準COBOL定義の一部を構成するにもかかわらず、X/OpenのCOBOL言語定義では、「STOP定数」の書き方は明示的に除外されている。したがって、X/OpenのCOBOLに準拠する原始プログラム内ではこの文を使用するべきではない。

一般形式

形式 1

形式 2

構文規則

  1. 定数-1は語ALLで始まる表意定数であってはならない。

  2. 定数-1が数字定数の場合、符号なしの整数とする。

    符号付きの整数を使用できる。

  3. 整数-1は 符号を付けてもよい。

  4. 完結文の中の一連の無条件文の中にSTOP RUN文を書く場合、その中の最後の文にする。

    必ずしも、一連の無条件文の最後にSTOP RUN文を書かなくてもよい。しかし、一連の文の中でSTOP RUN文よりも後ろにあるものは実行されない。

  5. GIVING と RETURNING は同義語であり、どちらを書いてもよい。

  6. 一意名-1は8バイト以下のサイズとする。.

  7. STOP RUN GIVING文が、START文により作成され(形式 3 スレッド)たスレッド内で実行され、ADDRESS指定が使用されない場合、一意名-1は、USAGE POINTERまたはサイズが4バイトのデータ項目として定義しなければならない。一意名-1の定義は、START文中のRETURNING項目の定義により異なる。 一意名-1は、USAGE POINTER項目として定義された場合に関数一意名であってはならない。

一般規則

  1. RUN指定を書くと、実行単位の実行が停止され、制御はオペレーティングシステムに移される。

  2. STOP RUN文を実行中に、実行単位内の開かれている各ファイルに関して、選択指定の何もないCLOSE文が暗黙的に実行される。それらのファイルに関連するUSE手続きがあっても、実行されない。

  3. STOP RUN文の実行により、戻り値がシステム領域で設定される。COBOL以外のランタイム要素は通常、このシステム領域を使用して戻り値を返す。オペレーティングシステムが、動作するプログラムからオペレーティングシステムへ値を返す機能をサポートしている場合、値はシステム領域から返される。

    GIVING指定を書かないと、実行単位の動作は下記のようになる。具体的には、システム領域がCOBOLの数字データ項目であり、それにUSAGE COPM-5が指定されていて、そのサイズはCOBOLシステムの外の操作環境によって決められているものとして宣言されている状態で、RETURN-CODEを送出し側としシステム領域を受取り側として、MOVE文を実行したかのように動作する。(RETURN-CODE詳細については、COBOL言語の概念の章の特殊レジスタ節を参照。)

    「GIVING 一意名-1」指定を書いた場合、一意名-1はシステム領域に戻り値を収めるのにちょうど必要な長さであり、オペレーティング・システムによって期待される型と用途のものでなければならない。通常、一意名-1はPIC S9 (9) USAGE COMP-5を明示的または暗黙的に指定して宣言する必要がある。一意名-1を送出し側項目とし、システム領域を受取り側項目として、MOVE文を実行したかのように、実行単位は動作する。

    「GIVING 整数-1」指定を指定した場合、整数-1の値はシステム領域に保持できるよりも大きくてはならない。実行単位は、整数-1を送出し側としそのシステム領域を受取り側として、MOVE文を実行したかのように動作する。

  4. 「STOP定数-1」を指定すると、操作員に定数-1が通知される。実行用プログラムの再開が行われると、次の実行文から処理が継続される。実行キーまたはそれと機能的に等しいキーを押すと、実行が再開される。

  5. START文またはCBL_CREATE_THREAD登録集ルーチンで作成されたスレッド中で実行されると、STOP RUN GIVING文は実行単位を終了しない。単に、戻り値を返し、スレッドを終了させる。 以下の文と同じである。

    CALL 'CBL_THREAD_EXIT' USING BY VALUE ADDRESS OF スレッドパーム

  6. START文またはCBL_THREAD_CREATE登録集ルーチンにより作成されていないスレッド(つまり、主なスレッドまたは別のプログラム言語で書かれたプログラムによる作成されたスレッド)中のSTOP RUNは、実行中のCBL_THREAD_CREATEすべてが終了するのを待ち、その後、実行単位を終了する。