$TEST
Synopsis
$TEST $T
説明
$TEST は、タイムアウトを使用した最後のコマンドの結果である真理値 (0 または1) を含みます。$TEST は、プログラマ・モードから入ったか、ルーチン・コードにあったかに関係なく、以下のコマンドによって設定されます。
-
時間制限付き JOB は、時間内に新規のジョブの開始が成功すると $TEST を 1 に設定します。時間内に成功しなければ、$TEST を 0 に設定します。
-
時間制限付き LOCK は、時間内にロックが成功すると $TEST を 1 に設定します。時間内に成功しなければ、$TEST を 0 に設定します。
-
時間制限付き OPEN は、時間内にオープンが成功すると $TEST を 1 に設定します。時間内に成功しなければ、$TEST を 0 に設定します。
-
時間制限付き READ は、時間内に読み取りが終了すると $TEST を 1 に設定します。時間内に成功しなければ、$TEST を 0 に設定します。
これらのコマンドをタイムアウトなしで発行した場合は、$TEST は設定されません。
$TEST はまた、IF コマンドの従来のバージョンで設定することもできます。現在のブロック構造化された IF コマンドでは、設定もチェックもされません。従来の IF コマンドの評価式が評価されると、$TEST は結果の真理値と同じ値に設定されます。つまり、IF 式が True のときは $TEST が 1 に、真理値が False のとき $TEST は 0 に設定されます。
$TEST の設定
SET コマンドを使用して、$TEST にブーリアン値を設定することができます。値が 1 または 0 以外の任意の数値の場合は、$TEST=1 に設定されます。値が 0 または非数値の文字列値の場合は、$TEST=0 に設定されます。
$TEST は、論理条件を返すことができる任意のコマンドまたは関数によって設定できます。
$TEST の保持
タイムアウトを指定していなかった JOB、LOCK、OPEN、または READ コマンドが正常に実行された場合は、$TEST の既存値は変更されません。
DO コマンドは、プロシージャの呼び出し時には $TEST の値を保持しますが、サブルーチンの呼び出し時にはこの値を保持しません。詳細は、"DO" コマンドを参照してください。
ZBREAK コマンドは、execute_code の呼び出し時に $TEST の値を保持します。詳細は、"ZBREAK" をコマンドを参照してください。
例
次のコードでは時間制限付きの読み取りが実行され、$TEST を使用して読み取りの完了がテストされます。
READ !,"Type a letter: ",a#1:10
IF $TEST { DO Success(a) }
ELSE { DO TimedOut }
Success(val)
WRITE !,"Received data: ",val
TimedOut()
WRITE !,"Timed out"
メモ
$TEST を設定しない処理
JOB、LOCK、OPEN、および READ の各コマンドで時間制限のない場合は、$TEST に影響を与えません。後置条件式も、$TEST に影響を与えません。
ブロック型 IF コマンド ( { } 括弧で囲むことで、コード・ブロックを定義する) は、いかなる方法でも $TEST を使用しません。以下の従来の IF コマンドの呼び出しでも $TEST は使用されません。従来の引数なしの IF コマンドおよび ELSE コマンドは、$TEST に何の影響も及ぼしません。
時間制限付きの処理の失敗
Caché は、時間制限付き処理が失敗した後は、エラー・メッセージを作成しません。アプリケーションは、$TEST を確認してから適切なメッセージを作成する必要があります。
関連項目
-
JOB コマンド
-
LOCK コマンド
-
OPEN コマンド
-
READ コマンド
-
IF (従来のバージョン) コマンド