Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

$ZNSPACE

現在のネームスペース名を含みます。

Synopsis

$ZNSPACE

概要

$ZNSPACE は、現在のネームスペース名を含みます。$ZNSPACE の設定で、現在のネームスペースを変更できます。

以下のように現在のネームスペース名を取得します。

   WRITE $ZNSPACE

また、以下のように %SYSTEM.SYSOpens in a new tab クラスの NameSpace()Opens in a new tab メソッドを呼び出すことで、現在のネームスペース名を取得することもできます。

   WRITE $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 システムでは、コマンド行スタートアップ・オプションを使用して設定できます。

ネームスペース名は、大文字と小文字を区別しません。Caché は常に、明示的なネームスペース名をすべて大文字、暗黙のネームスペース名をすべて小文字で表示します。

指定プロセスのネームスペース名を取得するには、以下の例に示すように %SYS.ProcessQueryOpens in a new tab クラスのメソッドを使用します。

    WRITE ##class(%SYS.ProcessQuery).%OpenId($JOB).NameSpaceGet()

現在のネームスペースの設定

ZNSPACE コマンド、SET $NAMESPACE、または SET $ZNSPACE を使用して、現在のネームスペースを変更することができます。SET $ZNSPACE は、ZNSPACE コマンドと機能的には同じです。

Note:

現在のネームスペースを一時的に変更する場合、処理を実行してから前のネームスペースに戻し、SET $ZNSPACE でなく SET $NAMESPACE を使用します。$NAMESPACENEW $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_CACHESYS ロールおよび %DB_USER ロールを割り当てている必要があります。

関連項目

FeedbackOpens in a new tab