指定した変数のデータ値を返します。
Synopsis
$GET(variable,default)
$G(variable,default)
$GET は、指定した変数のデータ値を返します。未定義の変数の処理は、
default パラメータを指定しているか否かによって異なります。
-
$GET(
variable) は指定した変数値か、または変数が定義されていない場合は、NULL 文字列を返します。
variable パラメータは、添え字付き配列要素 (ローカルあるいはグローバル) を含む、任意の変数の名前です。
-
データ値が返される変数。添え字付きあるいは添え字なしのローカル変数やグローバル変数のいずれかです。変数は、定義済み変数である必要はありませんが、定義することも、NULL 文字列 ("") に設定することもできます。グローバル変数の場合は、
拡張グローバル参照を含めることができます。添え字付きグローバル変数の場合は、
ネイキッド・グローバル参照を使用して指定できます。未定義の添え字付きグローバル変数を参照するときでも、
variable はネイキッド・インジケータをリセットするので、以下で説明されているように、今後のネイキッド・グローバル参照に影響が及びます。
variable が未定義の場合に返されるデータ値。添え字付き、または添え字なしのローカル変数やグローバル変数を含む、任意の式です。変数の場合は、定義済みの変数でなければなりません。
default が未定義の変数の場合、
variable が定義済みであっても、
$GET は <UNDEFINED> エラーを返します。グローバル変数の場合は、
拡張グローバル参照を含めることができます。添え字付きグローバル変数の場合は、
ネイキッド・グローバル参照を使用して指定できます。存在する場合、
default はネイキッド・インジケータをリセットするので、以下で説明されているように、今後のネイキッド・グローバル参照に影響が及びます。
以下の例では、変数
test は定義済みで、変数
xtest は未定義です (ZWRITE コマンドは、明示的に NULL 文字列値を返すので使用されます)。
KILL xtest
SET test="banana"
SET tdef=$GET(test),tundef=$GET(xtest)
ZWRITE tdef ; $GET returned value of test
ZWRITE tundef ; $GET returned null string for xtest
WRITE !,$GET(xtest,"none")
; $GET returns default of "none" for undefined variable
$GET は、
$DATA に未定義の変数 ($DATA = 0) とデータ ($DATA = 10) なしの下位ポインタである配列ノードの代わりを提供しています。variable が未定義であるかデータのないポインタ配列ノードのときは、
$GET は未定義のエラーなしで NULL 文字列 ("") を返します。例えば、以下の行を再度コード化します。
IF $DATA(^client(i))=10 {
WRITE !!,"Name: No Data"
GOTO Level1+3
}
IF $GET(^client(i))="" {
WRITE !!,"Name: No Data"
GOTO Level1+3
}
$DATA テストは、未定義要素と下位ポインタのみの要素を識別するので、
$GET テストと比べてより多くの情報を提供します。以下の行で例を示します。
IF $DATA(^client(i))=0 { QUIT }
ELSEIF $DATA(^client(i))=10 {
WRITE !!,"Name: No Data"
GOTO Level1+3
}
IF $GET(^client(i))="" { QUIT }
ELSEIF $GET(^client(i))="" {
WRITE !!,"Name: No Data"
GOTO Level1+3
}
2 行は、配列要素が未定義あるいはデータなしの下位ポインタのどちらであるかによって異なる動作をします。
$GET がここで使用されると、最初の動作 (QUIT) のみが実行されます。
$DATA を最初のテストで使用し、
$GET を 2 番目に使用することができますが、その逆 (最初のテストに
$GET、2 番目に
$DATA を使用すること) はできません。
$GET は、
指定された 変数が未定義の場合の振る舞いを定義します。指定の変数が未定義の場合、
$GET の返す基本的な形式は NULL 文字列 ("") です。
$DATA は、指定された変数が定義済みかどうかテストします。変数が未定義の場合は 0 を返します。