MF 

WAIT 文

WAIT 文は、対象となるスレッドの実行が終了するまで現在のスレッドの実行を中断し、必要に応じて対象となるスレッドの実行から返される値を取得する。

WAIT 文は、イベントが TRUE になるまで実行を中断する。

書き方 1 の一般形式 (スレッド)



書き方 2 の一般形式 (イベント)



書き方 1 の構文規則 (スレッド)

  1. thread-pointer-1 は USAGE THREAD-POINTER として定義する。
  2. identifier-1 は、USAGE POINTER として定義するか、サイズを 4 バイトにしなければならない。これは関数一意名であってはならない。
  3. identifier-2 は、長さが 4 桁以上の整数データ項目として定義する。

書き方 2 の構文規則 (イベント)

  1. event-pointer-1 は USAGE EVENT-POINTER として定義する。

書き方 1 の一般規則 (スレッド)

  1. thread-pointer-1 は、IDENTIFIED BY 指定がある START 文から、または CBL_THREAD_ ライブラリ ルーチンから返されるスレッド ハンドルを含まなければならない。
  2. 正常な WAIT 文は、thread-pointer-1 に含まれるスレッド ハンドルによって参照されるスレッドの終了まで現在のスレッドの実行を中断する。
  3. RETURNING 指定が記述されている場合、正常な WAIT 文は identifier-1 に値を返す。
  4. WAIT 文が正常に実行された後、thread-pointer-1 に含まれるスレッド ハンドルは無効になる。
  5. STATUS 指定が記述されている場合、WAIT 文の実行により、CBL_THREAD_ ライブラリ ルーチンに対して指定された戻りコードのいずれかが identifier-4 に格納される。
  6. WAIT 文が失敗した場合、CBL_THREAD_ ライブラリ ルーチンに指定した戻りコードのいずれかが identifier-2 に格納され (指定した場合)、以下の処理のいずれかが実行される。
    1. ON EXCEPTION を指定した場合、制御が imperative-statement-1 に移る。その後、imperative-statement-1 で指定した各文に関する規則に従って、処理が継続する。制御を明示的に移す手続き分岐文または条件文を実行すると、その文の規則に従って制御が移る。それ以外の場合で、imperative-statement-1 の実行が完了すると、制御は WAIT 文の末尾に移り、NOT ON EXCEPTION は指定されていても無視される。
    2. それ以外の場合で、NOT ON EXCEPTION または STATUS が指定されていると、制御は WAIT 文の末尾に移り、NOT ON EXCEPTION は指定されていても無視される。
    3. それ以外の場合は、実行単位は実行時システム エラーで終了する。
  7. WAIT 動詞が成功した場合は、以下の処理が指定された順に実行される。
    1. STATUS を指定した場合、ゼロが identifier-2 に格納される。
    2. NOT ON EXCEPTION を指定した場合、制御が imperative-statement-2 に移る。その後、imperative-statement-2 で指定した各文に関する規則に従って、処理が継続する。制御を明示的に移す手続き分岐文または条件文を実行すると、その文の規則に従って制御が移る。それ以外の場合で、imperative-statement-2 の実行が完了すると、制御は WAIT 文の末尾に移り、ON EXCEPTION は指定されていても無視される。

書き方 2 の一般規則 (イベント)

  1. 正常な WAIT 文は、event-pointer-1 によって参照されるイベントが TRUE になるまで実行を中断する。
    注: 文の実行時に event-pointer-1 によって参照されるイベントが TRUE である場合は、実行が直ちに再開される。
  2. WAIT 文が失敗すると、実行単位は実行時システム エラーで終了する。