STOP 文

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

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

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

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

書き方 1 の一般形式


*
MF 

書き方 2 の一般形式


*
NETJVM 

書き方 3 の一般形式

構文規則

  1. 定数-1 は語 ALL で始まる表意定数であってはならない。
  2. 定数-1 が数字定数の場合、符号なしの整数とする。

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

  3. MF 整数-1 は 符号を付けてもよい。
  4. 完結文の中の一連の無条件文の中に STOP RUN 文を書く場合、その中の最後の文にする。

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

  5. MF GIVING と RETURNING は同義語であり、どちらを書いてもよい。
  6. MF 一意名-1 は 8 バイト以下のサイズとする。
  7. MF STOP RUN GIVING 文が、START 文で作成されたスレッド (書き方 3 のスレッド) 内で実行され、ADDRESS OF 指定が使用されない場合、一意名-1 は USAGE POINTER またはサイズが 4 バイトのデータ項目として定義しなければならない。この定義は、START 文中の RETURNING 項目の定義により異なる。一意名-1 を USAGE POINTER 項目として定義する場合、関数一意名であってはならない。
  8. NETJVM STOP ITERATOR は反復子の文でのみ指定できる。「Iterator-ID」を参照。

一般規則

  1. RUN 指定を書くと、実行単位の実行が停止され、制御はオペレーティング システムに移される。
  2. STOP RUN 文を実行中に、実行単位内の開かれている各ファイルに関して、選択指定の何もない CLOSE 文が暗黙的に実行される。それらのファイルに関連する USE 手続きがあっても、実行されない。
  3. MF 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 を明示的または暗黙的に指定して宣言する必要がある。この宣言は RTNCODE-SIZE コンパイラ指令の値に依存する。実行単位は、一意名-1 を送り出し側としシステム領域を受け取り側として、MOVE 文を実行したかのように動作する。

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

  4. 「STOP 定数-1」を指定すると、実行単位の実行が中断され、オペレーターに定数-1 が通知される。実行単位の実行が再開されると、次の実行文から処理が継続される。実行キーまたはそれと機能的に等しいキーを押すと実行が再開される。
    注: この動作は JCL バッチ ジョブから開始された場合はサポートされず、オペレーターの介入なしで処理が継続される。JCL での実行で同様の効果を得るには、代わりに ACCEPT FROM CONSOLE 構文を使用する。
  5. START 文または CBL_THREAD_CREATE ライブラリ ルーチンで作成されたスレッド中で実行されると、STOP RUN GIVING 文は実行単位を終了しない。単に、戻り値を返し、スレッドを終了させる。以下の文と同じである。
    CALL 'CBL_THREAD_EXIT' USING BY VALUE ADDRESS OF thread-parm
  6. MF START 文または CBL_THREAD_CREATE ライブラリ ルーチンで作成されたものでないスレッド (つまり、主スレッドまたは別のプログラム言語で書かれたプログラムで作成されたスレッド) 中の STOP RUN は、実行中の CBL_THREAD_CREATE スレッドがすべて終了するまで待ち、その後に実行単位を終了する。
  7. NETJVM STOP ITERATOR 文には反復子を終了させる効果がある。