$T[EST] は、最後の IF の引数の評価、または、タイムアウトで最後の操作の結果で指定されている真偽値を含みます。もし最後の操作がタイムアウトした場合、$TESTはFALSE(0)が含まれ;それ以外の場合はTRUE(1)が含まれます。
$TESTは、暗黙的なELSEコマンドの引数と引数なしIFコマンドとして提供します。
外部関数の呼び出しと引数なしDOを実行する時に、Mは$TESTをスタックします。これらの操作が暗黙的または明示的なQUITで完了した後、Mは対応するスタックされた値を復元します。なぜなら、これら2つの例外で、$TESTは、プロセス全体で、最後の引数なしIF、または、タイムアウトの結果を反映します。最後にそれを更新した操作の直近でのみ $EST を使用してください。
$SELECT() と条件付き後の式は$TESTを変更しません。
Mルーチンは、SETコマンドを使用して、$TESTを変更することはできません。
例:
IF x=+x DO ^WORK ELSE SET x=0
ELSE文は、行の残りの部分を実行するかどうかを決定するために$TESTの値を使用するためにMを引き起こします。ルチンワークのコードでは、IFとタイムアウトを使用することがあるため、$TESTのこの使用は推奨されません。
例:
SET MYFLG=x=+x IF MYFLG DO ^WORK IF 'MYFLG SET x=0
この例では、以前の例の問題に対処するためにローカル変数フラグが導入されています。なお、その動作は、以前の例とは反対の$TESTの値の結果を生じることに、注意してください。
例:
IF x=+x DO ^WORK IF 1 ELSE SET x=0
この例では、ELSEがIFと反対の動作をすることを確認するために、IF 1 を使用しています。