$TEST (ObjectScript)
構文
$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 の設定
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 を全く使用しません。
時間制限付きの処理の失敗
InterSystems IRIS は、時間制限付き処理が失敗した後は、エラー・メッセージを作成しません。アプリケーションは、$TEST を確認してから適切なメッセージを作成する必要があります。