もし変数が値を持っていれば、ローカルまたはグローバル変数の値を返します。もし変数に値がない場合、この関数は、オプションの第2引数で指定された値を返し、そうでなければ空の文字列を返します。
$GET関数のフォーマット:
$G[ET](glvn[,expr])
添字または添字なしのグローバルまたはローカル変数名は、$GETが返す値のためのノードを指定します。
もしグローバルまたはローカル変数にデータ値がある場合、$GET() は、変数の中の値を返します。
もしグローバルまたはローカル変数にデータ値がない場合、$GET()はオプションの式の値(第2引数)を返し、または、式が指定されていない場合は、空の文字列を返します。
Mは$GET(x,y)と同等のものとして以下を定義します:
$Select($Data(x)[0:y,1:x)
そして$GET(x)と同等のものとして:
$GET(x,"")
$GET() は、変数の分かれての初期化を排除するツールを提供しています。非存在オプション情報を他の状態で保持するノードを排除することによって、散在グローバル配列の密度を高めるために使用される時に、このテクニックは、パフォーマンス上の利点を提供できます。一方、一つの$GET()の引数のいくつかの用途は、ロジック上の問題を隠すことができます。
GT.Mは、一つの$GET()の引数を引数であるかのように、すべての変数参照を扱う操作である "NOUNDEF" モードを持ちます。VIEWコマンドは、"NOUNDEF" モードを制御します。
例:
setstatus; if '$data(^PNT(NAME,TSTR)) set STATUS="NEW TEST" else if ^PNT(NAME,TSTR)="" set STATUS="WAITING FOR RESULT" else set STATUS=^PNT(NAME,TSTR)
この例は、次の例に示すように、$GET()を使用して、コードの2行に減らすことができます。しかし、$GETを使用することによって、その1つの引数の形で、未定義変数とnull値を持つ1つとの区別が失われます。
set STATUS=$get(^PNT(NAME,TSTR)) if STATUS="" set STATUS="WAITING FOR RESULT"
これは、$GET() の2つの引数の形式を使用することによって解決されます。
set STATUS=$get(^PNT(NAME,TSTR),"NEW TEST") if STATUS="" set STATUS="WAITING FOR RESULT"