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

システム・オブジェクトに関するシステム情報を含みます。

Synopsis

$SYSTEM
$SY

$SYSTEM.class.method()

概要

$SYSTEM は、特殊変数として、またはシステム情報を返すメソッドを呼び出すクラスとして呼び出すことができます。

$SYSTEM 特殊変数

特殊変数としての $SYSTEM には、ローカル・システム名と現在の Caché インスタンスの名前がコロン (:) で区切られて含まれています。マシンの名前は、ローカルのオペレーティング・システムの大文字/小文字の使い分けの規約に従います。インスタンス名は大文字です。Caché がインスタンスの名前の一部である場合、最後の文字にアクセント記号は付きません。以下はその例です。

MyComputer:CACHE2

LocalHostName()Opens in a new tab メソッドを使用して、ローカル・システム名を特定することもできます。

  WRITE $SYSTEM,!
  WRITE $SYSTEM.INetInfo.LocalHostName() 

$SY という省略形は、$SYSTEM で特殊変数としてのみ使用できます。

$SYSTEM クラス

クラスとしての $SYSTEM は、さまざまなシステム・オブジェクトへのアクセスを提供します。情報を返すメソッドや、アップグレードやロードなどのオペレーションを行い、状況情報を返すメソッドを呼び出すことができます。Caché は、以下を含むシステム・オブジェクトの複数のクラスをサポートします。

  • Version : Caché とそのコンポーネントのバージョン番号に関する情報

  • SYS : システムに関する情報

  • OBJ : オブジェクトに関する情報

  • SQL : SQLクエリに関する情報

  • CSP : Caché Server Pages に関する情報

オブジェクト・クラス名とメソッド名は、大文字と小文字を区別することに注意してください。これらの名前の大文字と小文字の指定を間違えると、<CLASS DOES NOT EXIST> エラー、または <METHOD DOES NOT EXIST> エラーが返されます。メソッド名で括弧を指定しない場合は、<SYNTAX> エラーが発行されます。

これらのオブジェクトにアクセスするための $SYSTEM でのドット構文の使用に関する詳細は、"Caché オブジェクトの使用法" の “登録オブジェクトを使用した作業” の章を参照してください。%SYSTEM.OBJOpens in a new tab の使用法の詳細は、"フラグおよび修飾子" を参照してください。$SYSTEM は、%SYSTEM クラス・ライブラリのシステム API クラスにアクセスすることができます。詳細は、"Caché オブジェクトの使用法" の "Caché クラス・ライブラリ" セクションを参照してください。

フラグおよび修飾子

これらの引数は、Caché への外部ソースのインポートの制御、既存アプリケーションのコンパイル、それらのアプリケーションの外部ソースへのエクスポートに使用できます。%SYSTEM.OBJOpens in a new tab のクラス・ドキュメントでは、多くの場合、これらはパラメータ qspec の値として提供されます。次のコマンドを実行すると、フラグおよび修飾子のそれぞれについて使用可能な設定を表示できます。

  DO $SYSTEM.OBJ.ShowFlags()

あるいは以下のコードを入力します。

  DO $SYSTEM.OBJ.ShowQualifiers()

Flags

フラグと修飾子では、フラグを最初に指定します。これらは UNIX® のコマンド行パラメータでモデル化されており、1 文字または 2 文字のシーケンスで構成されています。既存のフラグおよびその意味 (非推奨のフラグを除く) は、以下のとおりです。

既存のフラグ
フラグ 意味 既定
b サブクラスおよび SQL 使用で現在のクラスを参照しているクラスを含めます。
c ロード後、クラス定義をコンパイルします。
d 表示。既定で設定されるフラグです。 X
e エクステントによって使用されるグローバル・ストレージを記述するエクステント定義を削除し、データを削除します。
h 非表示クラスを表示します。
i ロード時、XML エクスポート形式をスキーマに対して検証します。既定で設定されるフラグです。 X
k ソースを保持します。 このフラグを設定すると、生成されたルーチンのソース・コードが保持されます。
l コンパイル時にクラスをロックします。既定で設定されるフラグです。 X
p 名前の先頭の文字が “%” であるクラスを追加します。
r 処理を再帰的に実行します。先行依存するすべてのクラスをコンパイルします。
s システム。システム・メッセージまたはアプリケーション・メッセージを処理します。
y 現在のクラスと関連するクラス (SQL 使用下での現在のクラスを参照しているクラスまたは現在のクラスから参照されるクラス) を含めます。
o1、o2、o3、o4 最適化指定子。非推奨となっており、クラス・コンパイラでは無視されます。
Note:

フラグの前にダッシュ (-) を記述すると、そのフラグをオフにすることができます。

修飾子

Caché バージョン 5.1 の開発時、フラグを使用するだけでは、インポート、エクスポート、およびコンパイル機能における新たな必要性に対処できないことが明らかになりました。そこで、フラグ・メカニズムを置き換える代わりに、より新しく、より拡張性のある一連の修飾子が実装されました。下位互換性を保持するため、フラグ・メカニズムも依然としてサポートされています。既存のフラグと同じ意味を持つ修飾子もあり、これらは同じ指定子内で使用できます。

修飾子は数多くあるため、それらが制御する機能ごとにグループ化して、以下に示します。非推奨の修飾子は掲載されていません。

SetQualifiers()Opens in a new tab メソッドを使用して、現在のネームスペース (既定) またはシステム全体に対してこれらの修飾子を設定することもできます。

コンパイラ修飾子
フラグ 意味 既定
/autoinclude このクラスのコンパイルに必要な、最新でないすべてのクラスを自動的に含めます。 1
/checkschema インポートした XML ファイルをスキーマ定義に対して検証します。 1
/checksysutd システム・クラスが最新であるかどうかを確認します。 0
/checkuptodate 最新のクラスまたは最新の拡張クラスのコンパイルをスキップします。 expandedonly
/compile ロードされたクラスをコンパイルします。 0
/cspcompileclass CSP または CSR のロードによって作成されたクラスをコンパイルします。 1
/cspdeployclass CSP ページがロードされたら生成したクラスを配置します。 0
/csphidden CSP および CSR のコンパイルで生成されたクラスを非表示としてマーク付けします。 1
/defaultowner クラスのロード時、クラス所有者のキーワードが定義されていない場合、この文字列で指定されているユーザ名をクラス所有者としてクラス定義に挿入します。この文字列の値が $USERNAME である場合、現在のユーザー名をクラス所有者としてクラス定義に挿入します。
/defines 定義するマクロのコンマ区切りリスト。必要に応じてそれらの値も指定します。
/deleteextent エクステントによって使用されるグローバル・ストレージを記述するエクステント定義を削除し、データを削除します。 0
/diffexport diff/merge ツールで実行できるよう、ファイルのエクスポートに時間やプラットフォーム情報を含めません。 0
/display /displaylog および /displayerror のエイリアス修飾子。
/displayerror エラー情報を表示します。 1
/displaylog ログ情報を表示します。 1
/expand /predecessorclasses、/subclasses、および /relatedclasses のエイリアス修飾子。
/exportgenerated クラスをエクスポートするとき、生成したクラスもエクスポートし、そのクラスの生成元となったクラスも追加します。 0
/exportselectivity このクラスのストレージ定義内に格納されている SELECTIVITY 値をエクスポートします。 1
/filterin /application、/system、および /percent のエイリアス修飾子。
/generated 生成される項目 (ルーチン、クラスなど) がパッケージ内の展開中のパターンまたはクラスのリストに含まれるかどうかを決定します。 1
/generatemap マップ・ファイルを生成します。 1
/importselectivity 0 : XML ファイルから SELECTIVITY 値をインポートしません。1 : XML ファイルをインポートするときに、ストレージ定義に格納されている SELECTIVITY 値をインポートします。2 : 既存のクラスの SELECTIVITY 値を維持しますが、既存のクラスに、XML ファイルの内容に対して指定された SELECTIVITY がない場合は、XML ファイルの SELECTIVITY 値を使用します。 2
/includesubpackages サブ・パッケージを含めます。 1
/journal クラス・コンパイル実行中にジャーナリングを有効にします。特に、コンパイルを実行しているプロセスでジャーナリングが無効になっている場合、/journal は既定値 0 になります。システム全体の既定値 1 にはなりません。 1
/keepsource 生成されたルーチンのソース・コードを保持します。 0
/lock クラスのコンパイル時に LOCK コマンドを使用します。 1
/mapped 別のデータベースからマップされたクラスを含めます。 0
/mergeglobal XML ファイルからグローバルをインポートする場合は、そのグローバルを既存のデータとマージします。 0
/multicompile 複数のユーザのジョブを有効にして、クラスをコンパイルします。 1
/percent パーセント・クラスを含めます。 0
/predecessorclasses 先行依存するクラスを再帰的に含めます。 0
/relatedclasses 関連するクラスを再帰的に含めます。 0
/retainstorage クラスのコンパイル時、コンパイラによってストレージ定義が生成されます。既定では、ストレージ定義が更新された場合、クラス定義は更新されたストレージ定義で更新されます。新しいバージョンのクラスが外部ソースからロードされた場合、その更新されたストレージ定義は新しいバージョンのクラス定義で定義されている内容に上書きされます。新しいバージョンのクラスにストレージ定義が含まれていない場合、既存のストレージ定義は削除されます。/retainstorage を設定すると、既存のストレージ定義が一時的に保存され、新しいバージョンのクラスのロード後にリストアされます。新しいバージョンのクラスでもストレージ定義が定義されている場合、既存のストレージ定義は上書きされ、保持されません。新しいバージョンのクラスでストレージ定義が定義されていない場合、前のバージョンのストレージ定義がリストアされます。 0
/subclasses サブ・クラスを再帰的に含めます。 0
/system システム・メッセージまたはアプリケーション・メッセージを処理します。 0
エクスポート修飾子
フラグ 意味 既定
/checksysutd システム・クラスが最新であるかどうかを確認します。 0
/checkuptodate 投影の際にクラスが最新であるかどうかを確認します。 expandedonly
/createdirs 存在しない場合はディレクトリを作成します。 0
/cspdeployclass CSP ページがロードされたら生成したクラスを配置します。 0
/csphidden CSP および CSR のコンパイルで生成されたクラスを非表示としてマーク付けします。 1
/diffexport diff/merge ツールで実行できるよう、ファイルのエクスポートに時間やプラットフォーム情報を含めません。 0
/display /displaylog および /displayerror のエイリアス修飾子。
/displayerror エラー情報を表示します。 1
/displaylog ログ情報を表示します。 1
/documatichost JavaDoc の生成に使用されるホスト。
/documaticnamespace JavaDoc の生成に使用されるネームスペース。
/documaticport JavaDoc の生成に使用されるポート。
/exportgenerated クラスをエクスポートするとき、生成したクラスもエクスポートし、そのクラスの生成元となったクラスも追加します。 0
/exportselectivity このクラスのストレージ定義内に格納されている SELECTIVITY 値をエクスポートします。 1
/exportversion このエクスポートをロードするターゲットの Caché バージョンを、3 つの部分で構成されるリリース・バージョン (2012.2.2 など) で指定します。Caché は /exportversion 値を使用して、以前の Caché のバージョンでは実装されていなかったクラス・キーワードを削除することで、Caché のバージョン間でのエクスポート形式の変更を処理します。/exportversion を指定しても、エクスポート・システムとインポート・システム間のコードの互換性は保証されません。 現在の Caché バージョン
/generatemap マップ・ファイルを生成します。 1
/generationtype 生成モード。
/genserialuid serialVersionUID を生成します。 1
/importselectivity 0 : XML ファイルから SELECTIVITY 値をインポートしません。1 : XML ファイルをインポートするときに、ストレージ定義に格納されている SELECTIVITY 値をインポートします。2 : 既存のあらゆる SELECTIVITY 値を維持しますが、既存の値がないプロパティには XML ファイルの SELECTIVITY 値を使用します。 2
/includesubpackages サブ・パッケージを含めます。 1
/javadoc javadoc を作成しません。 1
/make 最新のコンパイルのタイムスタンプが、最新の生成時のタイムスタンプよりも新しい場合は、依存またはクラスのみを生成します。 0
/mapped 別のデータベースからマップされたクラスを含めます。 0
/mergeglobal XML ファイルからグローバルをインポートする場合は、そのグローバルを既存のデータとマージします。 0
/newcollections ネイティブの Java コレクションを使用します。 1
/percent パーセント・クラスを含めます。 0
/pojo POJO 生成モードを指定します。 0
/predecessorclasses 先行依存するクラスを再帰的に含めます。 0
/primitivedatatypes %Integer、%Boolean、%BigInt、%Float に Java 基本関数を使用します。 0
/projectabstractstream 引数が抽象ストリームであるか、返りタイプが抽象ストリームであるメソッドを含むプロジェクト・クラスを指定します。 0
/projectbyrefmethodstopojo pojo 実装に ByRef メソッドを投影します。 0
/recursive クラスを再帰的にエクスポートします。 1
/relatedclasses 関連するクラスを再帰的に含めます。 0
/skipstorage クラスのストレージ情報をエクスポートしません。 0
/subclasses サブ・クラスを再帰的に含めます。 0
/system システム・メッセージまたはアプリケーション・メッセージを処理します。 0
/unconditionallyproject コードのコンパイルまたは正常な動作を妨げる問題を無視して投影を実行します。 0
/usedeepestbase メソッドまたはプロパティ定義に対してメソッドまたはプロパティが定義されている場合に、最も下部にあるベースを使用します。 P が A、B、および C に定義されており、A が B を拡張し、B が C を拡張する場合、より深い位置にあるベースは C になります。 0
ShowClassAndObject 修飾子
フラグ 意味 既定
/detail 詳細情報を表示します。 0
/diffexport diff/merge ツールで実行できるよう、ファイルのエクスポートに時間やプラットフォーム情報を含めません。 0
/hidden 非表示クラスを表示します。 0
/system システム・メッセージまたはアプリケーション・メッセージを処理します。 0
UnitTest
フラグ 意味 既定
/autoload ディレクトリを自動ロードすることを指定します。
/cleanup ユニット・テスト完了時にグローバルを削除します。既定では、グローバルは削除されません。設定されている場合でも、DeepSee グローバルは削除されません。 0
/debug アサートに失敗した場合、アサートをブレーク (BREAK) 状態にします。 0
/delete ロードしたクラスを削除するかどうかを判断します。 1
/display /displaylog および /displayerror のエイリアス修飾子。
/displayerror エラー情報を表示します。 1
/displaylog ログ情報を表示します。 1
/findleakedvariables 有効にすると、テスト実施前にプロセスで現在設定されているパブリック変数が記録され、テスト完了後にそれらの設定と比較されます。SQLCODE などの事前設定された一連の既知のコンテキストおよび出力変数以外に、新たに定義された変数がそれらの値とともにテストの失敗として報告されます。 0
/load クラスをロードするかどうかを判断します。ロードしない場合は、ディレクトリからクラス名のみが取得されます。 1
/loadudl Atelier によって作成された UDL ファイルをロードします。設定すると、.cls、.mac、.int、および .inc ファイルがロードされます。/loadudl と /loadxml を使用することで、ロードされるファイルの種類を制限できます。既定では、すべてのファイルがロードされます。UDL ファイルは常に、Unicode 文字が正しくロードされるように UTF8 としてロードされます。 1
/loadxml スタジオによって作成された XML ファイルをロードします。設定すると、.xml ファイルがロードされます。/loadudl と /loadxml を使用することで、ロードされるファイルの種類を制限できます。既定では、すべてのファイルがロードされます。 1
/recursive サブディレクトリでのテストを再帰的に実行するかどうかを判断します。 1
/run テストを実行するかどうかを判断します。 1

これらの修飾子は、“/compile/displayerror/subclasses” のように、前述の順番で qspec に指定されます。修飾子間のスペースは許可されません。

Note:

“/nodisplaylog” のように修飾子の前に “no” を指定することにより、修飾子を否定できる場合があります。または、修飾子の値を明示的に “/displaylog=0” と指定します。

フラグの修飾子

以下のテーブルに、既存のフラグとそれに対応する修飾子を示します。フラグによっては複数の修飾子にマップされるものがあり、その意味も使用目的に応じて異なります。

フラグ修飾子のマッピング
フラグ グループ 修飾子 既定
b コンパイラ /subclasses 0
c コンパイラ /compile 0
d コンパイラ /displayerror 1
d コンパイラ /displaylog 1
d UnitTest /displayerror 1
d UnitTest /displaylog 1
e コンパイラ /deleteextent 0
i コンパイラ /checkschema 1
k コンパイラ /keepsource 0
l コンパイラ /lock 1
p コンパイラ /percent 0
r コンパイラ /predecessorclasses 0
r コンパイラ /includesubpackages 1
s コンパイラ /system 0
y コンパイラ /relatedclasses 0
b エクスポート /subclasses 0
d エクスポート /displayerror 1
d エクスポート /displaylog 1
g エクスポート /exportselectivity 0
p エクスポート /percent 0
r エクスポート /includesubpackages 1
r エクスポート /recursive 1
r エクスポート /predecessorclasses 0
s エクスポート /system 0
y エクスポート /relatedclasses 0
h ShowClassAndObject /hidden 0
s ShowClassAndObject /system 0

処理の順序

qspec は左から右に処理されます。特定のフラグまたは修飾子を設定すると、現在の設定が、使用している環境の既定値であるか qspec 内のそれ以前のオカレンスであるかに関係なく、オーバーライドされます。

フラグと修飾子の両方を指定する場合は、修飾子の前 (左) にフラグを配置する必要があります。つまり、修飾子の設定が常にフラグの設定をオーバーライドするようにします。

以下は、$SYSTEM を使用してシステム情報を返すメソッドを呼び出す例です。

   WRITE $SYSTEM.OBJ.Version()

これは、以下のような文字列を返します。

Cache Objects Version 2017.2.0.307

このオブジェクト・バージョンは、$ZVERSION 特殊変数に含まれるシステム・バージョン番号の形式とは異なることに注意してください。

次のように、OBJ クラスのすべてのメソッドをリストにすることができます。(クラス名を変更することで、この方法を使用して任意のシステム・クラスのリストを取得することができます)

   DO $SYSTEM.OBJ.Help()

クラス内のメソッド情報を 1 つだけリストにするには、以下の例で示されているように Help 引数リストでメソッド名を指定します。

   DO $SYSTEM.OBJ.Help("Load")

以下は、メソッドを呼び出す $SYSTEM の例です。

   DO $SYSTEM.OBJ.Upgrade()
   WRITE !,"* * * * * * * * * * * "
   DO $SYSTEM.CSP.DisplayConfig()
   WRITE !,"* * * * * * * * * * * "
   WRITE !,$SYSTEM.Version.GetPlatform()
   WRITE !,"* * * * * * * * * * * "
   WRITE !,$SYSTEM.SYS.TimeStamp()

以下の例は、##class(%SYSTEM) 構文を使用して、前述の例と同様のメソッドを呼び出します。

   DO ##class(%SYSTEM.OBJ).Upgrade()
   DO ##class(%SYSTEM.CSP).DisplayConfig()
   WRITE !,##class(%SYSTEM.Version).GetPlatform()
   WRITE !,##class(%SYSTEM.SYS).TimeStamp()

前述の 2 つの例では、UnknownUser が %DB_CACHESYS ロールを割り当てている必要があります。

関連項目

FeedbackOpens in a new tab