PowerFX V1.0 運用説明書 - Microsoft(R) Windows(R) -
目次 索引 前ページ次ページ

第3章 TCLplus> 3.3 TCLplusスクリプトの文法

3.3.5 予約変数

TCLplusにはスクリプトの外部の情報を参照/操作するために予約変数が準備されています。

実行時の引数の参照

argc

予約変数argcにはTCLplusスクリプトを実行したときに指定した引数の数が格納されています。
引数が指定されていない場合は0が格納されます。

argv

予約変数argvにはTCLplusスクリプトを実行したときに指定した引数が文字列として格納されています。
TCLplusスクリプトの実行時に複数の引数を指定した場合、引数はリスト形式で格納されます。

以下に、予約変数argcとargvの例を示します。

予約変数argvから一つの引数を取得するにはlindexコマンドを使用します。



環境変の操作

env

予約変数envには環境変数が格納されています。
予約変数envは配列変数で、要素に環境変数名を指定することにより、指定した環境変数の内容を参照/変更することができます。
予約変数envに対し変更を行うと、環境変数も変更されます。

例1:
新規に環境変数newenvを作成し、文字列"hello"を格納する場合

set env(newenv) hello

例2:
環境変数pathの内容をpara1に格納する場合

set para1 $env(path)


環境変数の作成/変更はTCLplusスクリプトが実行されるプロセスでのみ有効です。



エラー情報の参照

errorInfo

予約変数errorInfoにはエラーの内容とエラーが発生したコマンドの位置情報が格納されます。

errorCode

予約変数errorCodeにはコマンド実行時のエラー種別とエラー情報が格納されます。
エラー種別には"表3.3 エラー種別"に示す種別があります。

[表3.3 エラー種別]

エラー種別

エラー種別の意味

ARITH

算術エラーを示します。

CHILDKILLED

サブプロセスがシグナルにより中止されたことを示します。

CHILDSUSP

サブプロセスがシグナルにより一時停止されたことを示します。

CHILDSTATUS

サブプロセスの終了コードが非ゼロであることを示します。

POSIX

システムコールの実行でエラーが発生したことを示します。

NONE

エラー情報のないエラーであることを示します。


エラー情報はエラー種別により形式が異なります。
"表3.4 エラー種別の形式"にエラー種別の形式を示します。

[表3.4 エラー種別の形式]

エラー種別

エラー情報の形式

エラー情報の意味

ARITH

code msg

code
算術エラー種別を示します。
算術エラー種別には以下のものがあります。

  • DIVZERO(ゼロ除算が発生しました。)
  • DOMAIN(関数に不適切な値が指定されました。)
  • IOVERFLOW(整数演算の演算で桁あふれが発生しました。)
  • OVERFLOW (浮動小数点演算で桁あふれが発生しました。)
  • UNKNOWN(未知のエラーが発生しました。)

msg
算術エラー種別の意味を示します。

CHILDKILLED

pid sigName msg

pid
サブプロセスのプロセスIDを10進数で示します。

sigName
プロセスを終了させたシグナル名を示します。

msg
エラーの内容を示します。

CHILDSUSP

pid sigName msg

pid
サブプロセスのプロセスIDを10進数で示します。

sigName
プロセスを停止させたシグナル名を示します。

msg
エラーの内容を示します。

CHILDSTATUS

pid code

pid
サブプロセスのプロセスIDを10進数で示します。

code
サブプロセスの終了コードを十進数で示します。

POSIX

errName msg

errName
システムのエラーコードを示します。詳細はWindows(R)の開発者向け情報を参照してください。

msg
エラーコードの意味を示します。

NONE

-

エラー情報はありません


以下に、予約変数errorInfoとerrorCodeの例を示します。

TCLplusスクリプトはエラーが発生すると停止します。このため、errorCodeとerrorInfoを参照するときはエラーをcatchコマンドで捕捉してから参照してください。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005