$SYSTEM (ObjectScript)
構文
$SYSTEM
$SY
$SYSTEM.class.method()
概要
$SYSTEM は、特殊変数として、またはシステム情報を返すメソッドを呼び出すクラスとして呼び出すことができます。
$SYSTEM 特殊変数
特殊変数としての $SYSTEM には、ローカル・システム名と現在の InterSystems IRIS インスタンスの名前がコロン (:) で区切られて含まれています。マシンの名前は、ローカルのオペレーティング・システムの大文字/小文字の使い分けの規約に従います。インスタンス名は大文字です。以下はその例です。
MyComputer:IRISInstance
LocalHostName()Opens in a new tab メソッドを使用して、ローカル・システム名を特定することもできます。
WRITE $SYSTEM,!
WRITE $SYSTEM.INetInfo.LocalHostName()
$SY という省略形は、$SYSTEM で特殊変数としてのみ使用できます。
$SYSTEM クラス
クラスとしての $SYSTEM は、さまざまなシステム・オブジェクトへのアクセスを提供します。情報を返すメソッドや、アップグレードやロードなどのオペレーションを行い、状況情報を返すメソッドを呼び出すことができます。InterSystems IRIS は、以下を含むシステム・オブジェクトの複数のクラスをサポートします。
-
Version : InterSystems IRIS とそのコンポーネントのバージョン番号に関する情報
-
SYS : システムに関する情報
-
OBJ : オブジェクトに関する情報
-
SQL : SQLクエリに関する情報
オブジェクト・クラス名とメソッド名は、大文字と小文字を区別することに注意してください。これらの名前の大文字と小文字の指定を間違えると、<CLASS DOES NOT EXIST> エラー、または <METHOD DOES NOT EXIST> エラーが返されます。メソッド名で括弧を指定しない場合は、<SYNTAX> エラーが発行されます。
以下の同等の構文の例に示すように、$SYSTEM メソッドとプロパティにはドット構文を使用してアクセスできます。
-
WRITE ##class(%SYSTEM.INetInfo).LocalHostName()
-
WRITE $SYSTEM.INetInfo.LocalHostName()
"インターシステムズ・クラス・リファレンス" ドキュメントで説明されているように、$SYSTEM は、%SYSTEM クラス・パッケージ内のシステム API クラスにアクセスできます。##class 構文では、%SYSTEM クラス・パッケージ名の大文字と小文字が区別されることに注意してください。$SYSTEM 構文では、$SYSTEM キーワードの大文字と小文字は区別されません。ドット構文の使用方法の詳細は、"登録オブジェクトを使用した作業" を参照してください。
%SYSTEM.OBJOpens in a new tab の使用法の詳細は、"フラグおよび修飾子" を参照してください。
例
以下は、$SYSTEM を使用して現在のネームスペースで使用可能なクラスのリストを表示するメソッドを呼び出す例です。
DO $SYSTEM.OBJ.ShowClasses()
これは、以下のような結果を表示します。
%SYS>d $system.OBJ.ShowClasses()
%SYS.APIManagement
%SYS.Audit
%SYS.AuditString
%SYS.ClusterInfo
%SYS.DatabaseQuery
...
SYS.WSMon.wsProcess
SYS.WSMon.wsResource
SYS.WSMon.wsSystem
次のように、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_IRISSYS ロールを割り当てている必要があります。