$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 | 最適化指定子。非推奨となっており、クラス・コンパイラでは無視されます。 |
フラグの前にダッシュ (-) を記述すると、そのフラグをオフにすることができます。
修飾子
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 |
フラグ | 意味 | 既定 |
---|---|---|
/detail | 詳細情報を表示します。 | 0 |
/diffexport | diff/merge ツールで実行できるよう、ファイルのエクスポートに時間やプラットフォーム情報を含めません。 | 0 |
/hidden | 非表示クラスを表示します。 | 0 |
/system | システム・メッセージまたはアプリケーション・メッセージを処理します。 | 0 |
フラグ | 意味 | 既定 |
---|---|---|
/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 に指定されます。修飾子間のスペースは許可されません。
“/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 ロールを割り当てている必要があります。
関連項目
-
$ISOBJECT 関数
-
$ZVERSION 特殊変数
-
"Caché オブジェクトの使用法" の "Caché クラス・ライブラリ"
-
"Caché オブジェクトの使用法" の "登録オブジェクトを使用した作業"