$ZNSPACE (ObjectScript)
構文
$ZNSPACE
概要
$ZNSPACE は、現在のネームスペース名を含みます。$ZNSPACE の設定で、現在のネームスペースを変更できます。
以下のように現在のネームスペース名を取得します。
SET ns=$ZNSPACE
WRITE ns
また、以下のように %SYSTEM.SYSOpens in a new tab クラスの NameSpace()Opens in a new tab メソッドを呼び出すことで、現在のネームスペース名を取得することもできます。
SET ns=$SYSTEM.SYS.NameSpace()
以下のように、%SYS.NamespaceOpens in a new tab クラスの Exists()Opens in a new tab メソッドを使用して、ネームスペースが定義されているかどうかをテストすることができます。
WRITE ##class(%SYS.Namespace).Exists("USER"),! ; an existing namespace
WRITE ##class(%SYS.Namespace).Exists("LOSER") ; a non-existent namespace
これらのメソッドは、"インターシステムズ・クラス・リファレンス" を参照してください。
UNIX® システムでは、既定のネームスペースはシステム構成オプションとして設定されます。Windows システムでは、コマンド行スタートアップ・オプションを使用して設定できます。
ネームスペース名は、大文字と小文字を区別しません。InterSystems IRIS は常に、明示的なネームスペース名をすべて大文字、暗黙のネームスペース名をすべて小文字で表示します。
指定プロセスのネームスペース名を取得するには、以下の例に示すように %SYS.ProcessQueryOpens in a new tab クラスのメソッドを使用します。
WRITE ##class(%SYS.ProcessQuery).%OpenId($JOB).NameSpaceGet()
現在のネームスペースの設定
ZNSPACE コマンド、SET $NAMESPACE、SET $ZNSPACE、または %CD ユーティリティを使用して、現在のネームスペースを変更することができます。
-
ネームスペースを変更するお勧めの方法は、ターミナル・コマンド・プロンプトから、ZNSPACE コマンドを使用することです。SET $ZNSPACE は、ZNSPACE コマンドと機能的には同じです。
-
コード・ルーチン内で、現在のネームスペースを変更するお勧めの方法は、NEW $NAMESPACE に続けて SET $NAMESPACE=namespace を使用することです。NEW $NAMESPACE および SET $NAMESPACE を使用することによって、メソッドが終わったときまたは予期しないエラーが発生したときに前のネームスペースに自動的に戻すネームスペース・コンテキストを確立します。詳細は、"$NAMESPACE" 特殊変数を参照してください。
SET $ZNSPACE を使用して、プロセスの現在のネームスペースを変更できます。文字列リテラル、または引用符付き文字列に評価される変数や式として新しいネームスペースを指定します。明示的ネームスペース ("namespace")、あるいは暗黙のネームスペース ("^system^dir" や "^^dir") を指定することができます。
現在のネームスペースを指定した場合、SET $ZNSPACE は処理を実行せず、エラーも返しません未定義のネームスペースを指定した場合、SET $ZNSPACE は <NAMESPACE> エラーを生成します。
NEW を使用して、$ZNSPACE 特殊変数をリセットすることはできません。
例
次の例では、現在のネームスペースが USER でない場合、SET $ZNSPACE コマンドによって現在のネームスペースが USER に変更されます。IF テストのため、ネームスペースはすべて大文字で指定される必要があることに注意してください。
SET ns="USER"
IF $ZNSPACE=ns {
WRITE !,"Namespace already was ",$ZNSPACE }
ELSEIF 1=##class(%SYS.Namespace).Exists(ns) {
WRITE !,"Namespace was ",$ZNSPACE
SET $ZNSPACE=ns
WRITE !,"Set namespace to ",$ZNSPACE }
ELSE { WRITE !,ns," is not a defined namespace" }
QUIT
この例では、UnknownUser が %DB_IRISSYS ロールおよび %DB_USER ロールを割り当てている必要があります。
関連項目
-
SET コマンド
-
ZNSPACE コマンド
-
$NAMESPACE 特殊変数