グローバルについての正式な規則
ここでは、グローバルおよびグローバル参照を制御する正式な規則について説明します (拡張グローバル参照については別途説明します)。
グローバル名と制限の概要
グローバル名の基本的な規則は、以下のとおりです。
-
名前はキャレット文字 (^) で開始します。このキャレット文字は、ローカル変数とグローバルを区別します。
-
次の文字は、英字またはパーセント記号 (%) のいずれかです。
-
^% で始まる名前を持つグローバルは、すべてのネームスペースで利用できます。これらはパーセント・グローバルと呼ばれる場合もあります。
-
% を使用していない名前を持つグローバルは、グローバル・マッピングが有効でない限り、現在のネームスペースでのみ利用可能です。
-
-
上記以外のグローバル名には、英数字、またはピリオド記号 (.) を使用できます。ただし、名前の最後の文字をピリオドにすることはできません。
-
グローバル名の長さは、先頭のキャレット文字を除いて最大 31 文字とします。それ以上に長い名前を付けることも可能ですが、InterSystems IRIS でグローバル名として処理されるのは 31 文字までです。
-
グローバル名は、大文字と小文字を区別します。
-
インターシステムズのグローバルとの競合を回避するために従うべき名前付け規約があります。"回避する必要があるグローバル変数名" を参照してください。
-
InterSystems IRIS では、グローバル参照の合計の長さに制限を課しています。同様に、この制限によってあらゆる添え字の値の長さにも制限が課されます。"グローバル参照の最大長" を参照してください。
詳細は、"識別子のルールとガイドライン" を参照してください。
バリエーション
-
プロセス・プライベート・グローバルは、これを作成したプロセスによってのみアクセス可能な配列変数です。プロセス・プライベート・グローバルの名前は、1 つのキャレット (^) ではなく、^|| で開始します。詳細は、"プロセス・プライベート・グローバル" を参照してください。
-
拡張グローバル参照を使用して、他のネームスペース内のグローバルを参照できます。
グローバル・ノードと添え字の概要
グローバルは一般的に複数のノードを有しており、通常は添え字または添え字のセットにより識別されます。基本的な例は、以下のようになります。
set ^Demo(1)="Cleopatra"
この文はグローバル・ノード ^Demo(1) を参照しており、これは ^Demo グローバル内の 1 つのノードです。このノードは 1 つの添え字によって識別されます。
別の例を示します。
set ^Demo("subscript1","subscript2","subscript3")=12
この文はグローバル・ノード ^Demo("subscript1","subscript2","subscript3") を参照しており、これは同一グローバル内の別のノードです。このノードは 3 つの添え字によって識別されます。
さらに別の例を以下に示します。
set ^Demo="hello world"
この文はグローバル・ノード ^Demo を参照しており、これは添え字を使用していません。
グローバルのノードは階層構造を形成します。ObjectScript では、この構造を活用するコマンドが用意されています。例えば、ユーザは 1 つのノードを削除すること、または 1 つのノードとそのノードのすべての子を削除することができます。"多次元ストレージの使用法 (グローバル)" を参照してください。
グローバル添え字の規則
添え字には、以下の規則があります。
-
添え字の値では大文字と小文字が区別されます。
-
添え字の値はあらゆる ObjectScript の式とすることができますが、式は NULL 文字列 ("") に評価されないという条件が付きます。
値には、空白、出力不能文字、Unicode 文字など全種類の文字を使用できます。(出力不能文字は、添え字値において実用性が低いことに注意してください。)
-
グローバル参照を解決する前に、InterSystems IRIS はあらゆる他の式の評価と同じ方式で各添え字を評価します。以下の例では、^Demo グローバルの 1 つのノードを設定してから、いくつかの同等の方式にてそのノードを参照します。
SAMPLES>s ^Demo(1+2+3)="a value" SAMPLES>w ^Demo(3+3) a value SAMPLES>w ^Demo(03+03) a value SAMPLES>w ^Demo(03.0+03.0) a value SAMPLES>set x=6 SAMPLES>w ^Demo(x) a value
-
InterSystems IRIS では、グローバル参照の合計の長さに制限を課しています。同様に、この制限によってあらゆる添え字の値の長さにも制限が課されます。"グローバル参照の最大長" を参照してください。
上記の規則は、InterSystems IRIS でサポートしている照合のすべてに適用されます。“pre-ISM-6.1” など、互換性の理由から引き続き使用されている古い形式の照合については、添え字に対する規則上の制限が多くなっています。例えば、文字の添え字では先頭に制御文字を使用できず、整数の添え字に使用できる数字の桁数にも制限があります。
グローバルの照合
グローバル内で、ノードは照合 (ソート) 順序で格納されます。
アプリケーションは通常、添え字として使用する値に変換を適用して、ノードを格納する順序を制御します。例えば、SQL エンジンで文字列値に対するインデックスを生成するとき、すべての文字列値は大文字に変換され、先頭に空白が付加されます。これにより、インデックスでは大文字と小文字が区別されず、数値が文字列として格納されていても、テキストとして照合されるようになります。