^$GLOBAL
Synopsis
^$|nspace|GLOBAL(global_name) ^$|nspace|G(global_name)
パラメータ
|nspace| または [nspace] |
オプション — 拡張 SSVN 参照。明示的ネームスペース名か、暗黙のネームスペースのいずれかです。角括弧 (["nspace"])、または垂直バー (|"nspace"|) で囲まれた、引用符付きの文字列に評価されなければなりません。ネームスペース名は、大文字と小文字を区別しません。ネームスペース名はすべて大文字で格納および表示されます。 ^||$GLOBAL または ^|"^"|$GLOBAL として、^$GLOBAL をプロセス・プライベート・グローバルとして指定することもできます。 |
global_name | 添え字なしのグローバル名を含む文字列に評価される式。 |
概要
^$GLOBAL を $DATA 関数、$ORDER 関数、および $QUERY 関数に対する引数として使用し、現在のネームスペース (既定)、あるいは指定したネームスペースにグローバル変数が存在するか否かに関する情報を取得することができます。
^$GLOBAL は、global_name をプロセス・プライベート・グローバルとしてサポートしません。global_name をプロセス・プライベート・グローバルとして指定しようとすると、<NAME> エラーが返されます。
グローバル変数の詳細情報は、"Caché グローバルの使用法" の "Caché 多次元ストレージの使用法" を参照してください。
パラメータ
nspace
このオプションのパラメータでは、拡張 SSVN 参照を使用することで他のネームスペースの構造化システム変数を指定できます。ネームスペースは、引用符付きの文字列リテラルまたは変数として、明示的にネームスペース名を指定するか、もしくは暗黙のネームスペースを指定します。ネームスペース名は、大文字と小文字を区別しません。括弧付き構文 ["USER"] か、環境構文 |"USER"| のいずれかを使用します。nspace 区切り文字の前後にスペースを使用することはできません。
以下のメソッドを使用して、ネームスペースが定義されているかどうかをテストすることができます。
WRITE ##class(%SYS.Namespace).Exists("USER"),! ; an existing namespace
WRITE ##class(%SYS.Namespace).Exists("LOSER") ; a non-existent namespace
$NAMESPACE 特殊変数を使用して現在のネームスペースを決定し、ZNSPACE コマンドを使用して現在のネームスペースを変更することができます。
global_name
添え字なしのグローバル名を含む文字列に評価される式。
例
以下の例は $DATA、$ORDER、$QUERY 関数に対して、^$GLOBAL を引数として使用する方法を表しています。
$DATA に対する引数としての ^$GLOBAL
^$GLOBAL は $DATA に対する引数として、指定するグローバル名が ^$GLOBAL ノードとし存在するか否かを示す整数値を返します。以下のテーブルは、$DATA が返すことができる整数値を示しています。
値 | 意味 |
---|---|
0 | グローバル名が存在しない |
1 | グローバル名は下位ノードを持たない、データを持つ既存のノード |
10 | グローバル名は下位ノードを持つ、データなしの既存のノード |
11 | グローバル名は下位ノードを持つ、データを持つ既存のノード |
以下の例は、ユーザの既定のネームスペースにあるグローバル変数の存在についてテストしています。
KILL ^GBL
WRITE $DATA(^$GLOBAL("^GBL"))
これは、0 を返します。
以下の例は、SAMPLES ネームスペースにあるグローバル変数の存在についてテストしています。
SET ^GBL(1)="TEST"
WRITE $DATA(^$|"SAMPLES"|GLOBAL("^GBL"))
これは、10 を返します。
SET ^GBL(1)="TEST"
WRITE $DATA(^$||GLOBAL("^GBL"))
$ORDER に対する引数としての ^$GLOBAL
$ORDER(^$|nspace|GLOBAL( global_name),direction)
^$GLOBAL は $ORDER に対する引数として、指定したグローバル名に対する照合順序で、次または前のグローバル名を返します。そのようなグローバル名ノードが ^$GLOBAL に存在しない場合は、$ORDER は NULL 文字列を返します。
direction 引数は、次のグローバル名を返すか、前のグローバル名を返すかを指定します。direction 引数を指定しない場合、Caché は、指定したグローバル名に対する照合順序で、次のグローバル名を返します。詳細は、"$ORDER" 関数を参照してください。
以下のサブルーチンは、ユーザの既定のネームスペースを検索し、GLOBAL というローカル配列にあるグローバル名を格納します。
GLOB
SET NAME=""
WRITE !,"The following globals are in ",$ZNSPACE
FOR I=1:1 {
SET NAME=$ORDER(^$GLOBAL(NAME))
WRITE !,NAME
QUIT:NAME=""
SET GLOBAL(I)=NAME
}
WRITE !,"All done"
QUIT
$QUERY に対する引数としての ^$GLOBAL
^$GLOBAL は $QUERY に対する引数として、指定したグローバル名に対する照合順序で、次のグローバル名を返します。そのようなグローバル名が ^$GLOBAL のノードとして存在しなければ、$QUERY は NULL 文字列を返します。
以下の例では、3 つのグローバル (^GBL1、^GBL2、^GBL3) が、USER ネームスペースに存在します。
NEW $NAMESPACE
SET $NAMESPACE="USER"
SET (^GBL1,^GBL2,^GBL3)="TEST"
NEW $NAMESPACE
SET $NAMESPACE="%SYS"
WRITE $QUERY(^$|"USER"|GLOBAL("^GBL1")),!
WRITE $QUERY(^$|"USER"|GLOBAL("^GBL2"))
NEW $NAMESPACE
SET $NAMESPACE="USER"
KILL ^GBL1,^GBL2,^GBL3
最初の WRITE は ^$|"USER"|GLOBAL("^GBL2") を返します。
2 番目の WRITE は ^$|"USER"|GLOBAL("^GBL3") を返します。
関連項目
-
$DATA 関数
-
$ORDER 関数
-
$QUERY 関数
-
ZNSPACE コマンド
-
$NAMESPACE 特殊変数
-
"Caché システム管理ガイド" の "ネームスペースの構成"