付録I
環境変数
ツールは3つの環境変数を使います。PATHはMSX-DOS2がツールを見つけるため、TATARAはTATARAがインクルード・ファイルを探す場所、TANRENはTANRENがオブジェクト・ファイルを探す場所を示します。これらは、最初に必要になる3章、13章、23章で紹介しています。この付録では、その規則を1か所にまとめます。ツールがほかの環境変数を読むことはありません。
I.1 環境変数の設定
環境変数は、MSX-DOS2のSETコマンドで、プロンプトかバッチ・ファイルで設定します。
A:\>set tatara="a:\tatara\include"
- プロンプトでは、\を含む値を、上のように引用符で囲みます。囲まないと、MSX-DOS2は*** Invalid environment stringと答え、環境変数を設定しません。
- バッチ・ファイルでは、引用符は必要ありません。書いてもSETが取り除くので、値は同じになります。
- 環境変数のいまの値は%name%と書きます。下のAUTOEXEC.BATの例の1行目では、%path%を使って、PATHを置き換えずに、その最後にディレクトリを加えています。
- 一覧を見るには、setだけを入力します。すべての環境変数とその値が表示されます。
- 削除するには、何も書かずに設定します。set tanren= です。
- 名前は大文字でも小文字でも書けます。MSX-DOS2は大文字で保持するので、set Tatara=incはTATARAを設定します。
環境変数は、MSXをリセットするか電源を切るまで残ります。MSXを起動するたびに設定するには、SETコマンドを起動ドライブのルート・ディレクトリにあるAUTOEXEC.BATに書きます(3.4節)。3つとも設定すると、次のようになります。
set path=%path%;a:\tatara\bin set tatara=a:\tatara\include;a:\project\inc set tanren=a:\project\lib
コマンド・ラインは、SETコマンドも含めて、それぞれの%name%を値に置き換えたあとで127文字までです。それより長いと、MSX-DOS2は*** Command too longで拒否し、環境変数はもとのままです。
I.2 PATH
PATHはツールのものではなく、MSX-DOS2のものです。コマンドが入力されると、MSX-DOS2はその名前のプログラムを、カレント・ディレクトリ、次にPATHのそれぞれのディレクトリの順に探します。そのため、TATARA.COMとTANREN.COMのディレクトリをPATHに書いておくと、どのディレクトリからでもツールを実行できます。ツール自身はPATHを読まないので、インクルード・ファイルやオブジェクト・ファイルを探すのには関係しません。
I.3 TATARA
TATARAは、INCLUDEで指定されたファイルを、次の3か所で探します(13.2節、図13.1)。
環境変数が使われるのは、ファイルが最初の2か所のどちらにもないときだけで、ドライブや\で始まる絶対パスの名前には使われません(13.4節)。TATARAは、最初に必要になったときに環境変数を読み、アセンブルが終わるまでその値を使います。
sub\mid.incのように、ディレクトリを含む相対パスの名前も、ふつうの名前と同じように環境変数のそれぞれのディレクトリとつなげられます。図I.1に、値と名前から、TATARAが試す名前ができる様子を示します。
I.4 TANREN
TANRENも、オブジェクト・ファイルを3か所で探します(23.1節、図23.1)。
TATARAと同じように、環境変数が使われるのはファイルが最初の 2か所のどちらにもないときだけで、絶対パスの名前には使われず、リンク全体で1回だけ読まれます。
/O:がなければ、出力ファイルは最初のオブジェクト・ファイルが見つかったディレクトリに書き出されます。そのオブジェクト・ファイルがTANRENのディレクトリにあったなら、出力ファイルもそこに書き出されます(23.4節)。別の場所に置くには、/O:で出力ファイルの名前を指定します。
I.5 両方に共通の規則
TATARAとTANRENは同じように読まれます。値のそれぞれのディレクトリに\と名前を続けたものを順に試し、最初に開けたものを使います。詳しくは表I.1に示します。
|
|
|
|
対象 |
どうなるか |
|
|
|
|
区切り |
|
|
順序 |
左から右へ。ファイルが開けた最初のディレクトリが使われ、残りは 試されません。 |
|
最後の\ |
必要ありませんが、あっても問題ありません。a:\incとa:\inc\は同じです。 |
|
ドライブだけ |
b:は、MSX-DOS2でと同じように、ドライブB:の カレント・ディレクトリです。 |
|
相対パスのディレクトリ |
ソース・ファイルやリンク・ファイルではなく、 カレント・ディレクトリからの相対です。incは、ツールを起動した ディレクトリの下のINCです。 |
|
ルートからのディレクトリ |
\project\incはカレント・ドライブの ものです。 |
|
存在しないディレクトリ |
メッセージなしで飛ばされ、次のディレクトリが 試されます。 |
|
空の項目 |
;;や先頭の;はカレント・ディレクトリを意味します。 そこはすでに試されているので、問題ありません。 |
|
空白 |
ディレクトリの名前の一部になります。a:\inc; a:\libでは、 2つ目のディレクトリが空白で始まるので存在せず、飛ばされます。;のあとに空白を入れないでください。 |
|
大文字と小文字 |
MSX-DOSのどこでもそうであるように、区別されません。 |
|
長いディレクトリ |
ディレクトリ、\、名前を合わせて63文字に 収まらなければなりません。名前に対して長すぎるディレクトリは、 ファイルがそこにあっても、メッセージなしで飛ばされます。 |
|
長い値 |
127文字まで。それより長い値は、短くなったリストで探すのでは なく、the TATARA variable is too long.またはthe TANREN variable is too long.でツールを止めます。SETのコマンド・ラインそのものが127文字までなので、SETで これほど長い値は作れません。このメッセージが出るのは、ほかのプログラムが 環境変数を設定した場合だけです。 |
|
環境変数がない |
最初の2か所だけが探されます。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
どこにもファイルが見つからないとき、メッセージは試した名前ではなく、書かれたとおりのファイルの名前を示します。
A:\>tatara which.as ... ERROR: cannot open ENVT.INC included from WHICH.AS(2)
あるはずのファイルが見つからないときは、まずSETだけを入力して、環境変数の値を確かめてください。
日本のMSXでは、\は¥と表示されます。同じ文字です。