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?

System

このクラスのコンパイル順序に影響を与えます。

使用法

クラスのコンパイル順序に影響を与えるには、以下のような構文を使用します。

Class MyApp.Person Extends %Persistent [ System = n ] 
{
//class members
}

n は 0 ~ 4 の整数であり、各クラスは、割り当てられた正の値が小さい順にコンパイルされます。0 の値が割り当てられたクラスは最後にコンパイルされます。

詳細

このキーワードによってクラスのグループが形成され、各グループには異なる値と優先度が関連付けられ、完全クラス・コンパイル・プロセスは各優先度レベルについて実行されてから、次の優先度レベルに進みます。優先度が高い順に、以下のレベルがあります。

  • 1

  • 2

  • 3

  • 4

  • 0 (既定値)

クラス・コンパイルは次の 2 つの手順から成ります。

  1. グローバルを解決します。

  2. ルーチンをコンパイルします。

同じ System キーワード値を持つすべてのクラスでは、それぞれのグローバルが解決されてからルーチンがコンパイルされます。それぞれのレベルが異なるクラスでは、優先度の高いクラスでグローバル解決とルーチン・コンパイルの両方が完了してから、優先度の低いクラスでグローバルが解決されます。

CompileAfter キーワードと DependsOn キーワードは、共通の System 値を持つクラス内で機能して、グローバル解決の順序を決定します。共通の System 値を持つすべてのクラスでグローバルが解決された後に、これらすべてのクラスでルーチンがコンパイルされます。

このため、クラス B がクラス A のメソッドをクラス B のメソッド・ジェネレータ内で (つまり B のコンパイル時に) 実行する必要がある場合、A の優先度は B の優先度より高い必要があります。これは、A の System キーワードの値は、B の System キーワード値より小さい 0 以外の整数である必要があるということです。この動作を実現するうえで、CompileAfter や DependsOn は無関係です。

サブクラスへの影響

このキーワードは継承されません。

既定値

既定値は 0 (ゼロ) です。

関連項目

FeedbackOpens in a new tab