次のグローバル変数はTclライブラリによって自動的に作成、管理されます。これらの変数は下記で説明する特別
ケースを除いて、通常アプリケーション特定のコード、及びユーザーにとっては読み取り専用です。
- env
- LOGIN
- USER
- SYS_FOLDER
- APPLE_M_FOLDER
- CP_FOLDER
- DESK_FOLDER
- EXT_FOLDER
- PREF_FOLDER
- PRINT_MON_FOLDER
- SHARED_TRASH_FOLDER
- TRASH_FOLDER
- START_UP_FOLDER
- HOME
- errorCode
- ARITH code msg
- CHILDKILLED pid sigName msg
- CHILDSTATUS pid code
- CHILDSUSP pid sigName msg
- NONE
- POSIX errName msg
- errorInfo
- tcl_library
- tcl_patchLevel
- tcl_pkgPath
- tcl_platform
- byteOrder
- debug
- machine
- os
- osVersion
- platform
- threaded
- user
- wordSize
- tcl_precision
- tcl_rcFileName
- tcl_rcRsrcName
- tcl_traceCompile
- tcl_traceExec
- tcl_wordchars
- tcl_nonwordchars
- tcl_version
- env
- この変数はTclによって維持される配列で、その要素がプロセスのための環境変数です。配列の要素を読むと一致する環境変数の値が返されます。
配列の要素をセットすることで一致する環境変数を修正できます。環境変数がまだ存在しないなら新しいものが作成されます。envの要素をunsetすることは、一致する環境変数を削除することを意味します。env配列への変更はexecのようなコマンドによって起動してサブプロセスに渡された環境に影響を及ぼします。env配列自身がアンセットされた場合、Tclは環境変数をアップデートするのではなく、envアクセスを監視することを中止します。
- Windowsでは、どんなキャピタルの環境変数PATH及びCOMSPECでも自動的に大文字に変換されます。例えば、PATH変数はオペレーティングシステムによって"path"、
"Path"、"PaTh"等として出力されることがありますので、自動変換しなければ、シンプルなTclコードにも多くの特別
なケースをサポートする必要が出てきてしまいます 。Tclによって継承された他の全ての環境変数は修正されません。env配列変数をブランクに設定することはunsetすることと同じ効果
を持ち、これはWindows OSの標準機能です。現存しますが値が空である環境変数を使うことは、Windowsでは有効ではありません。また、異なるプラットフォームでの使用にもお勧めできません。
- Macintosh上ではグローバル環境変数が存在しないので、環境変数はTclによって組み立てられます。Tclのために作成された環境変数は下記の通
りです。
- LOGIN
- MacintoshのChooser名前を保持します。
- USER
- MacintoshのChooser名前を保持します。
- SYS_FOLDER
- システムディレクトリへのパス。
- APPLE_M_FOLDER
- Apple Menuディレクトリへのパス。
- CP_FOLDER
- コントロールパネルディレクトリへのパス。
- DESK_FOLDER
- デスクトップディレクトリへのパス。
- EXT_FOLDER
- システム拡張ディレクトリへのパス。
- PREF_FOLDER
- お気に入りディレクトリへのパス。
- PRINT_MON_FOLDER
- プリントモニタディレクトリへのパス。
- SHARED_TRASH_FOLDER
- ネットワークゴミ箱ディレクトリへのパス。
- TRASH_FOLDER
- ゴミ箱ディレクトリへのパス。
- START_UP_FOLDER
- スタートアップディレクトリへのパス。
- HOME
- アプリケーションのデフォルトディレクトリへのパス。
ユーザーはMacintoshで自分自身の環境変数を同じように作成できます。Tcl
Environment VariablesというファイルをMacシステムフォルダーにあるpreferencesフォルダーに置くことができます。このファイルの各ラインは、VAR_NAME=var_dataというフォーマットでなければなりません。
最後の選択肢はアプリケーションのTcl Environment Variablesと指定された'STR#'資源に環境変数を配置することです。これはUnixスタイル、Environment
VariableファイルよりもっともMacらしいと考えられます。'STR#'資源における各エントリは上と同じフォーマットを持ちます。ソースコードファイルtclMacEnv.cはenvメカニズムのインプリメントを含みます。このファイルは多くの#defineを含み、あなたのアプリケーションニーズに合ったenvメカニズムのカスタマイズを可能にします。
- errorCode
- この変数はエラーが発生した後でプログラムによって処理し易いフォーマットでエラーに関する追加情報を保存するために設定されたものです。errorCodeは1以上の要素を持つTclリストから成ります。リストの最初の要素はエラーの一般
的な種類を識別し、リストの残りのフォーマットを決定します。errorCodeのために使える下記フォーマットはTclコアによって使われます。個々のアプリケーションは追加のフォーマットを定義ことも可能です。
- ARITH code msg
- 算術のエラーが発生する ( <例>、 exprコマンドにおいてゼロで割る試み
) とき、このフォーマットが使われます。codeは、正確なエラーを識別
します。msgは、人間が読みやすい記述でエラーを表します。codeは、DIVZERO
( for an attempt to divide by zero ) 、DOMAIN (if an argument is outside the domain of a
function, such as acos(-3))、 IOVERFLOW (for integer overflow)、OVERFLOW (for a
floating-point overflow)、或は UNKNOWN (if the cause of the error cannot be determined)のようなものです。
- CHILDKILLED pid sigName msg
- サブプロセスがシグナルにより中止(kill)されたとき、このフォーマットが使われます。errorCodeの第2の要素はプロセスの10進においての識別
子です。第3の要素はプロセスを終了させたシグナルの符号的な名前です。それはSIGPIPEのような、includeファイルsignal.hにある名前の1つです。第4の要素がSIGPIPEの場合は「write
on pipe with no readers」のような、シグナルを解釈する短い人間の読みやすいメッセージです。
- CHILDSTATUS pidコード
- サブプロセスが非0の終了状態によって返されたとき、このフォーマットが使われます。errorCodeの第2の要素はプロセスの10進においての識別
子です。第3の要素はプロセスによって返された(同じく10進においての)終了コードです。
- CHILDSUSP pid sigName msg
- サブプロセスがシグナルにより一時中断されたとき、このフォーマットが使われます。errorCodeの第2の要素はプロセスの10進においての識別
子です。第3の要素はプロセスを停止させたシグナルの符号的な名前です
これはSIGTTINのような、includeファイルsignal.hにある名前の1つです。第4の要素がSIGTTINの場合は「background
tty read」のような、シグナルを示す短い人間の読みやすいメッセージです。
- NONE
- このフォーマットはエラーによって返されたメッセージの他には追加情報がないエラーのためのものです。この場合、errorCode内容がNONEという1つの要素を含むリストから成ります。
- POSIX errName msg
- errorCodeの最初の要素がPOSIXであれば、このエラーはPOSIXカーネルコールの間に発生したことを示します。リストの第2の要素は発生したエラーの符号的な名前を含みます。これは、ENOENTのようなincludeファイルerrno.hにある名前の1つです。リストの第3の要素がENOENTの場合は「no
such file or directory」のような、errNameと一致する人間の読みやすいメッセージです。
errorCodeをセットするためにアプリケーションは
Tcl_SetErrorCode及びTcl_PosixErrorのようなライブラリプロシージャを使うか、または
errorコマンドを呼び出すことになります。
これらの方法のうちの1つも使われなかった場合、Tclインタープリタは次のエラーの後で変数をNONEにリセットします。
- errorInfo
- この文字列はエラーが発生した後で、最も最近のエラーが発生したときに、実行中であったTclコマンド及びプロシージャを識別
する1以上のラインを含みます。その内容はエラーの時に実行された様々なネストされたTclコマンドを示すスタックトレース形式です。
- tcl_library
- この変数はTclスクリプトのシステムライブラリが存在するディレクトリの名前を保持します。例えば、オートローディングのために使われるディレクトリです。
この変数の値はinfo libraryコマンドによって返されます。Tclスクリプトライブラリによって提供された機能の詳細についてはlibraryのマニュアルエントリを参照してください。通
常、各アプリケーションまたはパッケージはTclスクリプトライブラリに加えて、それ自身のアプリケーション特定のスクリプトライブラリを持っています。各アプリケーションはそのアプリケーションのライブラリディレクトリのためのネットワークファイル名前を保持するために、$app_library
( appがアプリケーションの名前である )
のような名前によって、グローバル変数をセットすべきです。インタープリタが作成される際、1つ適切なTclスタートアップ・スクリプトを含むものを発見するまで、いくつか異なるディレクトリを検索します。この時点でtcl_libraryの初期値はセットされます。TCL_LIBRARY環境変数が存在すれば、それが示しているディレクトリは最初にチェックされます。TCL_LIBRARYがセットされていないか、或は適切なディレクトリを与えられていなければ、Tclはコンパイル既定の場所に基づいてアプリケーションバイナリを含む場所、及び現在のワーキングディレクトリ等、いくらかの他のディレクトリをチェックします。
- tcl_patchLevel
- インタープリタが作成されるとき、Tclはこの変数を初期化します。これは現在のパッチレベルを与える文字列を保持するためのものです。Tcl
7.3のための7.3p2のような最初の2つの公式のパッチ、Tcl 7.4の第4のベータリリースのための7.4b4等があります。この変数の値は
info patchlevelコマンドによって返されます。
- tcl_pkgPath
- この変数は通常パッケージがインストールされる場所を示すディレクトリのリストを保持します。Windowsでは使われません。典型的には、1つか2つのエントリを含みます。2つのエントリを含む場合、第1のエントリは、通
常、プラットホーム依存のパッケージ のためのディレクトリです(例えば、シェアード・ライブラリバイナリ
)。第2のエントリは、通常、プラットホーム非依存のパッケージのためのディレクトリです(例えば、スクリプトファイル
) 。 パッケージは典型的に、$tcl_pkgPathにおけるエントリのうちの1つのサブディレクトリとしてインストールされます。$tcl_pkgPathにおけるディレクトリはauto_path変数におけるデフォルトによって含まれます。それらのディレクトリ及び直のサブディレクトリは、パッケージを求めるpackage
requireコマンドの実行時に自動的に検索されます。注意事項としては、tcl_pkgPathをアプリケーションによって修正されることは勧めません。tcl_pkgPathの値は起動用auto_pathに加えられます。tcl_pkgPathへの変更はauto_pathにおいて反映されません。ユーザーがTclがパッケージを検索する際、追加のディレクトリを検索させたいなら、それらのディレクトリの名前をtcl_pkgPathではなくauto_pathに加えるべきです。
- tcl_platform
- これは配列で、要素はアプリケーションが使っているプラットフォームに関する情報です。例えば、オペレーティングシステムの名前、現在のリリース番号及びマシンの命令セット等です。下記でリストする要素は常に定義されます。但し、Tclが適切な情報を得られない場合は、それらの値は空の文字列になります。システム拡張及びアプリケーションは追加の値を配列に加えることができます。事前定義された要素は以下のものです。
- byteOrder
- このマシン本来のバイトオーダ。littleEndianかbigEndianのいずれかです。
- debug
- この変数が存在すればインタープリタはデバッグ可能記号を含むようにコンパイルされます。この変数はWindowsのみに存在します。システム拡張を定義する際、ロードされるCランタイムライブラリに応じてどちらのパッケージをロードするかを指定できます。
- machine
- intel、PPC、68k、またはsun4mのような、現在のマシンによって実行された命令セット名です。これはUNIXマシン上でuname
-mによって返される値です。
- os
- Windows 95、Windows NT、MacOS、またはSunOSのような、現在マシン上で動くオペレーティングシステムの名前です。これはUNIXマシン上でuname
-sによって返される値です。Windows95、及Windows98上では、下位互換性をWindows95にまで提供するために、返される値はWindows
95になるでしょう。この2つを区別するためにosVersionをチェックしましょう。
- osVersion
- このマシンで動くオペレーティングシステムのためのバージョン番号です。UNIXマシン上で、これはuname
-rによって返された値です。Windows95上で、このバージョンは4.0です。Windows98上で、このバージョンは4.10です。
- platform
- Windows 、macintosh或はunixのいずれかです。これは、マシンの一般的なオペレーティング環境を識別します。
- threaded
- この変数が存在すると、そのインタープリタは、可能にされたスレッドによってコンパイルされたものとみなされます。
- user
- プラットフォームに関する利用可能なログイン情報に基づいた現在のユーザーを識別
します。これは、UnixでのUSERもしくは、LOGNAME環境変数です。Windows及Macintosh上のGetUserNameからの値です。
- wordSize
- これはバイトでネイティブのマシンwordのサイズを与えます (
厳密には、これがC言語でsizeof ( long )
を評価するときの結果と同じです ) 。
- tcl_precision
- この変数は浮動小数点値を文字列に変換しているとき、生成する数字の桁数を決めます。既定値は12です。17桁はIEEE浮動小数点を処理する際の「完璧」な桁数です。17桁なら倍精度値を情報のロスなしでバイナリと文字列の間で相互変換できる長さです。但し、17桁を使うと丸めが行われないので、常に長くあまり直観的結果
をもたらせない数値になってしまいます。例えば、cl_precisionにを17にセットすると、expr
1.4は1.3999999999999999を返します。 tcl_precisionが12であれば1.4で定着できます。
- 同じプロセスにおける全てのインタープリタは、同一のtcl_precision値を共有します。1つのインタープリタにおいてtcl_precisionを変えることは、全ての他のインタープリタもに影響を及ぼします。したがって、安全なインタープリタにしたいならば、この変数を修正出来ないようにするのは賢明です。
- tcl_rcFileName
- この変数はユーザー独自のスタートアップファイルの名前を示すもので、初期化の際に使われます。アプリケーション独自の初期化によってセットされた場合、Tclのスタートアップコードはこのファイルを探し、見つかればこのファイルをロード(source)します。例えばwishの場合、当変数はUnixでは~/.wishrcに、Windowsでは~/wishrc.tclに設定されます。
- tcl_rcRsrcName
- この変数はMacintoshシステムにだけ有効です。アプリケーション、または拡張資源フォークに位
置するユーザー独自のTEXT資源の名前を示すものとして、初期化の際に使われます。アプリケーション独自の初期化によってセットされた場合、Tclのスタートアップコードはこの資源を探し、見つかればそれをsourceでロードします。例えば、Macintoshの当変数を持っているwishアプリケーションはこの変数をtclshrcにセットされます。
- tcl_traceCompile
- この変数の値でバイトコード・コンパイルをする際に表示させたい追跡情報の量
を定義します。tcl_traceCompileのデフォルトは0で、情報は表示されないことを意味します。cl_traceCompileを1にセットするとプロシージャまたはトップレベルコマンドがコンパイルされる際、常に標準出力に1行の概要が出力されます。2にセットすると全てのバイトコードコマンドをコンパイルする際に生成された詳細なリスト標準出力に出力します。この変数はTclコンパイラに関する疑わしい問題点を追跡するのに役に立ちます。現存するコードをTcl8.0に変換した場合も時折同じく役に立ちます。この変数は存在・機能する前提は、TCL_COMPILE_DEBUGがTclのコンパイル時に定義された場合です。
- tcl_traceExec
- この変数の値でバイトコード実行をする際に表示させたい追跡情報の量を定義します。tcl_traceExecのデフォルトは0で、情報は表示されないことを意味します。tcl_traceExecを1にセットするとTclの各プロシージャ・コール毎に、標準出力に1行のトレース情報を出力します。2にセットするとあらゆるTclコマンドが呼び出される際、常にコマンド名、及びその引数名を含む出力ラインが表示されます。3にセットすると各バイトコード命令の実行結果
を示す詳細なトレースを出力します。注意すべきなのはtcl_traceExecが2または3であるとき、バイトコードコマンドのシーケンスによって置換えられたset及びincrのような命令は表示されません。この変数を設定することでバイトコードコンパイラ及びインタープリタに関する疑わしい問題点を追跡するのに役に立ちます。現存コードをTcl8.0に変換をした場合も時折同じく役に立ちます。この変数は存在・機能する前提はTCL_COMPILE_DEBUGがTclのコンパイル時に定義された場合です。
- tcl_wordchars
- この変数の値は正規表現でセットされれば、文字(「ワード」)構成キャラクタを定義するものです。例えば、Tkにおけるテキストをダブルクリックすると「ワード」を選択できます。これはプラットフォーム依存です。Windows上での既定値は\Sで意味はユニコードスペースキャラクタを除いた全てのvです。Windows以外のシステムの場合、既定値は\wで、あらゆるユニコードワードキャラクタ(
数字、レター、もしくは強調符 ) を意味します。
- tcl_nonwordchars
- この変数の値は正規表現で、セットされれば非「ワード」構成キャラクタを定義するものです。Tkにおけるテキストをダブルクリックする時に「ワード」を選択できます。これはプラットフォーム依存です。Windows上での既定値は\sで、あらゆるユニコードスペースキャラクタを意味します。Windows以外の場合は既定値は\Wで、ユニコードワードキャラクタ
( 数字、レター、もしくは強調符 ) ではないものを意味します。
- tcl_version
- Tclはインタープリタを作成するとき、x.yというフォーマットでTcl自身の現在のバージョン番号を示すためにこの変数を初期化します。xの変更は不互換性をもたらす可能性のあるメジャーな変更を意味します。yの変更は下位
互換性を保証できる小さな機能強化及びバグ修正を表します。この変数の値は
infotclversionコマンドによって返されます。
eval
arithmetic, bytecode, compiler,
error, environment,
POSIX, precision,
subprocess, variables
Copyright © 1993 The Regents of the University of California.
Copyright © 1994-1997 Sun Microsystems, Inc.
Copyright © 1995-1997 Roger E. Critchlow Jr.
|