グローバルなシステム情報

汎用性の高いWolfram言語用プログラムを作成するにはグローバル(大域的)な環境設定の情報が必要になる.

例えば,プログラムからNotebookWrite等の関数を呼び出す必要があるかどうかは,プログラムを実行するセッションがノートブック用フロントエンドで設けられたものかどうかを見極めた上でないと判断することができない.この場合,$Notebooksを参照する.

$Notebooksフロントエンドがノートブック用のものかどうかを識別するブール変数

ノートブック用フロントエンドの識別

Wolframシステムの機能は普通対話的に使う.しかし,バッチ処理的に使うことも可能で,その場合,入力はファイルから読み込まれ,出力はファイルに書き出される.バッチモードではユーザは対話的な入力を行うことはできない.

$BatchInput入力をバッチモードでするかしないかを識別するブール変数
$BatchOutput出力をバッチモードでするかしないかを識別するブール変数 (出力プロンプト等は禁止)

バッチモードによる入出力の識別

Wolfram言語カーネルもオペレーティングシステムの下で稼動するプロセスの1つである.オペレーティングシステム関連の大域変数がいくつか用意されているので,それらを参照することでプロセスの状況や動作環境の情報を取得することができる.

$CommandLineWolfram言語カーネルの起動に使ったもとのコマンドライン
$ParentLinkカーネルを起動したプログラムを登録したWSTP LinkObject(カーネルを起動した場合はNull
$ProcessIDオペレーティングシステムによりWolfram言語カーネルのプロセスに割りふられた識別番号
$ParentProcessIDWolfram言語カーネルを起動したプロセスに割りふられた識別番号
$UserNameWolfram言語カーネルを起動したプロセスに割りふられた識別番号
Environment["var"]カーネルを使用しているユーザのログイン名

Wolfram言語カーネルプロセスに関連した変数

同時に進行される複数のセッションにおいて,同じ名前,例えば x のような変数が使われるとき,各変数の値は必ずしも他のWolfram言語セッションでの x と同じ値にしておきたくないかもしれない.そこで,セッションごとにオブジェクトを区別するため,Wolfram言語では大域変数$SessionIDが使われる.この変数には,開始時間,プロセス番号,そして,コンピュータの機種番号等に基づいて生成された現行セッションの識別番号が割り当てられている.カーネルのプロセスに使われるコンピュータが同一のものでも,セッションが別ならば,異なったセッション番号が与えられる.

$SessionIDWolfram言語のセッションごとに割りふられる識別番号

Wolfram言語セッションの識別番号

Wolfram言語には,どのバージョンのカーネルが使われているか等を調べるための大域変数も用意されている.例えばバージョン6というように,特定バージョンの機能に依存した形でプログラムが記述してある場合等では,バージョン情報が重要になる.使用中のカーネルのバージョンが対応するものかどうかを調べるには$VersionNumberを参照する.

$Version使用中のWolframシステムのバージョン名を綴った文字列
$VersionNumberWolfram言語カーネルのバージョン番号(例:
$ReleaseNumberWolfram言語カーネルのオペレーティングシステム別リリース番号
$CreationDate使用中のWolframシステムの作成日(DateList書式で表示)

使用中のWolframシステムのバージョンを指定する変数

Wolframシステムの動作環境はオペレーティングシステムになるべく依存しない形で設定されている.それでも,Wolframシステムの操作には直接関係ないオペレーティングシステム関連の情報にアクセスしたい場合も出てくる.

$System使っているコンピュータシステムの名前
$SystemID使っているコンピュータのシステムの短縮名
$ProcessorTypeプロセッサの種類
$MachineType使っているコンピュータの一般機種名
$ByteOrdering各コンピュータシステムのバイナリデータのバイトのネイティブな順序
$OperatingSystem使っているオペレーティングシステムの名前
$SystemCharacterEncoding使っているオペレーティングシステムの外部文字コード

システム関連の情報

「Wolframシステムファイルの読み書き」「WSTPプログラムの移植性」で説明したが,オペレーティングシステム別のファイルのバージョンを保存するディレクトリには$SystemIDの名前が与えられる.$SystemIDの名前が同じコンピュータシステムは通常,バイナリレベルで互換である.

$OperatingSystemには,等のオペレーティングシステムの名前が割り当てられる.使いたい外部プログラムがあるときは,あらかじめ$OperatingSystemを参照しておき必要なプログラムがあるかどうかを確認しておくとよい.

入力を評価するのに使ったコンピュータシステムが何かを調べる.
In[1]:=
Click for copyable input
Out[1]=
$MachineAddresses現行のIPアドレスのリスト
$MachineNameWolframシステムの動作しているコンピュータの登録名
$MachineDomainsコンピュータのネットワークドメイン
$MachineIDWolframシステムの定義するコンピュータの固有識別番号

Wolframシステムを実行しているコンピュータに関する情報

$ActivationKeyWolframシステムを実行させているアクティベーションキー
$LicenseExpirationDateライセンス契約の切れる日付
$NetworkLicenseネットワークライセンスかどうかを識別するブール値
$LicenseServerライセンスを行使する機械の名前
$LicenseProcessesライセンスのもとで現在稼動中のカーネルプロセス数
$MaxLicenseProcessesライセンス契約で許されている最大プロセス数
$PasswordFileカーネルが起動するときに使われるパスワードファイル

ライセンス管理に関する変数