Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

一般的なシステム制限

このページでは、InterSystems IRIS® のシステム制限のいくつかを示します。

識別子の名前の制限については、"識別子のルールとガイドライン" を参照してください。

その他のシステム全体の制限は、"構成パラメータ・ファイル・リファレンス" を参照してください。

文字列長の制限

文字列の値の長さには、3,641,144 文字という制限があります。

Important:

“文字列” は、入出力デバイスからの読み取りの結果に限られないことを理解することが重要です。その他のコンテキストでも、文字列は出現します。例えば、結果セット (SQL クエリ、多数の項目を含む $LIST の構築、または XSLT 変換などの出力として返される) の行に含まれるデータのコンテキストにも文字列が出現します。

クラスの制限

以下の制限はクラスにのみ適用されます。

クラス継承階層

制限 : 50。1 つのクラスは最大 50 階層までのサブクラスを作成できます。

外部キー

制限 : 1 クラスあたり 400。

インデックス

制限 : 1 クラスあたり 400。

メソッド

制限 : 1 クラスあたり 2000。

パラメータ

制限 : 1 クラスあたり 1000。

プロジェクション

制限 : 1 クラスあたり 200。

プロパティ

制限 : 1 クラスあたり 1000。

クエリ

制限 : 1 クラスあたり 200。

SQL 制約

制限 : 1 クラスあたり 200。

ストレージ定義

制限 : 1 クラスあたり 10。

スーパークラス

制限 : 1 クラスあたり 127。

トリガ

制限 : 1 クラスあたり 200。

XData ブロック

制限 : 1 クラスあたり 1000。

クラスおよびルーチンの制限

以下の制限はクラスとルーチンに適用されます。

クラス・メソッド参照

制限 : 1 ルーチンまたは 1 クラスあたり 32768 の一意の参照。

以下は、メソッド名が同じでもクラス名が異なるため、2 つのクラス・メソッド参照としてカウントされます。

 Do ##class(c1).abc(), ##class(c2).abc()
クラス名参照

制限 : 1 ルーチンまたは 1 クラスあたり 32768 の一意の参照。

例えば、以下は 2 つのクラス名参照としてカウントされます。

 Do ##class(c1).abc(), ##class(c2).abc()

同様に、以下も、2 つのクラス参照としてカウントされます。これは、%FileOpens in a new tab から %Library.FileOpens in a new tab への正規化がコンパイル時ではなく実行時に行われるためです。

 Do ##class(%File).Open(x)
 Do ##class(%Library.File).Open(y)
インスタンス・メソッド参照

制限 : 1 ルーチンまたは 1 クラスあたり 32768。

XY が OREF の場合、以下は、1 つのインスタンス・メソッド参照としてカウントされます。

 Do X.abc(), Y.abc()

多次元プロパティへの参照は、インスタンス・メソッドとしてカウントされます。これはコンパイラがこれらを区別できないためです。例えば、以下の文を考えてみます。

 Set var = OREF.xyz(3)

コンパイラは、この文が xyz() メソッドを参照しているか、または多次元プロパティ xyz を参照しているかを区別できません。そのため、コンパイラはこれを、インスタンス・メソッド参照としてカウントします。

行数

制限 : 1 ルーチンあたり 65535 行 (コメント行を含む)。この制限は、INT 表現のサイズに適用されます。

リテラル (ASCII)

制限 : 1 ルーチンまたは 1 クラスあたり 65535 の ASCII リテラル。

ASCII リテラルは、どの文字も $CHAR(255) を超えない 3 つ以上の文字を含む引用符付き文字列です。

ASCII リテラルと Unicode リテラルは別々に処理され、個別の制限があります。

リテラル (Unicode)

制限 : 1 ルーチンまたは 1 クラスあたり 65535 の Unicode リテラル。

Unicode リテラルは、1 つ以上の文字が $CHAR(255) を超える引用符付き文字列です。

ASCII リテラルと Unicode リテラルは別々に処理され、個別の制限があります。

パラメータ数

制限 : サブルーチン、メソッド、またはストアド・プロシージャあたり 255 のパラメータ。

プロシージャ数

制限 : 1 ルーチンあたり 32767。

プロパティ読み取り参照

制限 : 1 ルーチンまたは 1 クラスあたり 32768。

この制限は、以下の例のように、プロパティの値の読み取りに関するものです。

 Set X = OREF.prop
プロパティ設定参照

制限 : 1 ルーチンまたは 1 クラスあたり 32768。

この制限は、以下の例のように、プロパティの値の設定に関するものです。

 Set OREF.prop = value
ルーチン参照

制限 : 1 ルーチンまたは 1 クラスあたり 65535。

この制限は、ルーチンまたはクラスの一意の参照 (^routine) の数に適用されます。

ターゲット参照

制限 : 1 ルーチンまたは 1 クラスあたり 65535。

ターゲットは label^routine (ラベルとルーチンの組み合わせ) です。

ターゲット参照はルーチン参照としてもカウントされます。例えば、以下は 2 つのルーチン参照と 3 つのターゲット参照としてカウントされます。

 Do Label1^Rtn, Label2^Rtn, Label1^Rtn2
TRY ブロック数

制限 : 1 ルーチンあたり 65535。

変数 (プライベート)

制限 (ObjectScript) : 1 プロシージャあたり 32763。

変数 (パブリック)

制限 (ObjectScript) : 1 ルーチンまたは 1 クラスあたり 65503。

変数名やその他の識別子の長さ制限の詳細は、"識別子のルールとガイドライン" を参照してください。

その他のプログラミング制限

以下のテーブルに、コードを記述する際に関連するその他の制限を示します。

%Status 値の制限

エラー・メッセージの長さ制限 : 32000 文字未満。

単一の %StatusOpens in a new tab 値に結合できる %StatusOpens in a new tab 値の最大数 : 150。

{} による入れ子

制限 : 32767 レベル。

これは、中括弧を使用するあらゆる言語要素の入れ子の最大の深さです。例 : IF { FOR { WHILE {...}}}

1 行あたりの文字数

制限 : 1 行あたり 65535 文字。

グローバル添え字、長さ

"グローバルの使用法" の "グローバル参照の最大長" を参照してください。

グローバル参照、長さ

制限 : 511 文字 (エンコードされた文字数、入力した文字数 511 より少なくなる場合があります)。グローバル参照という用語は、グローバルの名前と、その添え字をすべて合わせたものを指します。詳細は、"グローバルの使用法" の "グローバル参照の最大長" を参照してください。

数値

制限 (10 進数形式またはネイティブ形式) : 約 1.0E-128 ~ 9.22E145。"インターシステムズ・アプリケーションでの数値の計算" を参照してください。

制限 (倍精度形式) : "インターシステムズ・アプリケーションでの数値の計算" を参照してください。

FeedbackOpens in a new tab