拡張グローバル参照
現在のネームスペース以外のネームスペースに格納されているグローバルの参照も可能です。これを拡張グローバル参照、または省略して拡張参照と呼びます。
グローバル参照の最大長に関する規則は、拡張グローバル参照にも、より一般的なグローバル参照にも同様に適用されます。
拡張グローバル参照の形式
拡張参照には以下の 2 つの形式があります。
-
明示的なネームスペース参照 — グローバル参照構文の中で、グローバルを格納するネームスペース名を指定します。
-
暗黙のネームスペース参照 — グローバル参照構文の中でディレクトリを指定し、さらに必要に応じてシステム名を指定します。この場合、物理データセット (ディレクトリとシステム) がグローバル参照の一部として割り当てられるため、グローバル・マッピングは適応されません。
明示的なネームスペースを優先的に使用します。これにより、必要に応じて、アプリケーション・コードを変更せずに外部的に論理マッピングを再定義できます。
InterSystems IRIS は、以下の 2 つの拡張参照の構文をサポートします。
-
ブラケット構文 - 角括弧 ([ ]) で拡張参照を囲みます。
-
環境構文 - 垂直バー (| |) で拡張参照を囲みます。
以下に示す例では、Windows のディレクトリ構造を使用しています。実用面では、このような参照の形式は、使用するオペレーティング・システムで決まります。
ブラケット構文
ブラケット構文を使用して、明示的あるいは暗黙のネームスペースで拡張グローバル参照を指定できます。
明示的なネームスペース
^[nspace]glob
暗黙ネームスペース
^[dir,sys]glob
明示的なネームスペース参照にある nspace は、現在、グローバル glob のマップ先にも複製先にもなっていない定義済みのネームスペースです。また、暗黙のネームスペース参照において、dir はディレクトリ (ディレクトリ名の最後には円記号 \ を追加)、sys はシステム、glob はディレクトリ内のグローバルです。nspace または dir がキャレット (^) で指定されている場合、プロセス・プライベート・グローバルへの参照です。
ディレクトリとシステム名またはネームスペース名は、変数として指定しない限り引用符で囲みます。ディレクトリとシステムは共に暗黙のネームスペースを構成します。また、暗黙のネームスペースは以下のいずれかを参照できます。
-
指定されたシステムの指定ディレクトリ
-
参照でシステム名を指定していない場合、ローカル・システムで指定したディレクトリ。システム名を暗黙のネームスペース参照から削除する場合、ディレクトリ参照内に二重キャレット文字 (^^) を置き、削除したシステム名であることを示す必要があります。
以下はリモート・システムに暗黙のネームスペースを指定します。
["dir","sys"]
以下はローカル・システムに暗黙のネームスペースを指定します。
["^^dir"]
例えば、以下は SALES というマシンの C:\BUSINESS\ ディレクトリにあるグローバル SAMPLE にアクセスします。
Set x = ^["C:\BUSINESS\","SALES"]SAMPLE
以下は、ローカル・マシンの C:\BUSINESS\ ディレクトリにあるグローバル SAMPLE にアクセスします。
Set x = ^["^^C:\BUSINESS\"]SAMPLE
MARKETING として定義済みのネームスペースでグローバル SAMPLE にアクセスします。
Set x = ^["MARKETING"]SAMPLE
プロセス・プライベート・グローバル SAMPLE にアクセスするには:
Set x = ^["^"]SAMPLE
データベースへの参照を持つブラケット構文
InterSystems IRIS には、拡張参照内でデータベースを表す特殊なブラケット構文が用意されています。
CPF ファイルで指定されているように、データベース名を含む拡張参照を作成できます。:ds:DB_name の形式を使用します。以下に例を示します。
["^^:ds:MYDATABASE"]
同様の構文がミラー上のデータベースを参照する拡張参照で利用できます。:mirror:mirror_name:mirror_DB_name の形式を使用します。例えば、ミラー CORPMIR に含まれる mirdb1 というミラー・データベース名のデータベースを参照する場合は、以下に示すように暗黙の参照を作成できます。
["^^:mirror:CORPMIR:mirdb1"]
ミラーリングされるデータベースのパスは、ローカル・データベースとリモート・データベースの両方に使用できます。
環境構文
環境構文は以下のように定義されます。
^|"env"|global
"env" は、次の 5 つの形式のうちのいずれかです。
-
NULL 文字列 ("") — ローカル・システムの現在のネームスペース。
-
"namespace" — global が現在マップされていない定義済みのネームスペース。ネームスペース名は、大文字と小文字を区別しません。namespace が "^" の特殊値である場合、これはプロセス・プライベート・グローバルとなります。
-
"^^dir" — 暗黙のネームスペースであり、既定のディレクトリはローカル・システムの指定ディレクトリです。dir の最後には円記号 (\) を追加します。
-
"^system^dir" — 暗黙のネームスペースであり、既定のディレクトリは指定リモート・システムの指定ディレクトリです。dir の最後には円記号 (\) を追加します。
-
省略 — "env" がまったくない場合、これはプロセス・プライベート・グローバルです。
SAMPLE にマッピングが定義されていない場合、以下の構文を使用し、現システムのネームスペースでグローバル SAMPLE にアクセスします。
Set x = ^|""|SAMPLE
これは、単純グローバル参照と同じです。
Set x = ^SAMPLE
MARKETING として定義済みのネームスペースにマップされたグローバル SAMPLE にアクセスします。
Set x = ^|"MARKETING"|SAMPLE
暗黙のネームスペースを使用して、ローカル・システムの C:\BUSINESS\ ディレクトリにあるグローバル SAMPLE にアクセスします。
Set x = ^|"^^C:\BUSINESS\"|SAMPLE
暗黙のネームスペースを使用して、SALES というリモート・システムの C:\BUSINESS ディレクトリにあるグローバル SAMPLE にアクセスします。
Set x = ^|"^SALES^C:\BUSINESS\"|SAMPLE
プロセス・プライベート・グローバル SAMPLE にアクセスするには:
Set x = ^||SAMPLE
Set x=^|"^"|SAMPLE