みなさん、こんにちは。第2回の講座です。
前回 fileinfo
マクロは alias
である、とお話ししました。マクロの正体はどうやったら調べられるでしょう。ログインできる環境があったら、次のようにコマンドを打ってみましょう。いやー、ログインできる環境を用意してからこの講座を読んでもらった方がいいな。今後は実習がバシバシでてきますよ。
では一発め。
fileinfo variable
の情報を表示しろ、というコマンドです。
と表示されました。もし、これ以外の表示が出た時は、その環境はとても変です。
さてさて、Type
のところに ALIAS
と出ていますね。fileinfo variable
が alias
であることがこれで分かります。次に volume variable
の情報を見てみましょう。
前記の通り、volume
は routine
で間違いありませんでした。
variable
が ALIAS
であるなら、何かの変名、読み替えということなので元のマクロがあるはずです。ROUTINE
なら何がしかのロジックが組まれているはずです。つまりマクロの中身は何かという話です。今度はそこを見てみましょう。
fileinfo
という名前の variable
の中身を表示しろ、というコマンドです。
結果はシンプルに
とだけ表示されました。つまり、fileinfo
コマンドは #XFILEINFO
というマクロの変名だということです。
このような、#
で始まるマクロは正確にはマクロではなく built-in function
(組み込み関数)といいます。built-in function
は TACL の機能を構成する基礎関数群で、TACL の全機能は built-in function
の組み合わせで実現されています。
outvar
コマンドをもうひとつやってみましょう。
転載はしませんが、ごちゃごちゃ出ましたね。これが volume
の機能で実行される処理の実態です。いろいろな built-in function
が居るのが見えると思います。built-in function
が実現する機能はとても primitive
で、必ずしも human friendly
ではなかったりします。それをマクロでラップして使いやすくしたものを普段われわれが使っているわけです。
なお、組み込み系には built-in variable
(組み込み変数)というのもあります。環境変数のような使い方になります。これについてもいつか触れると思います。
fileinfo varible
と volume variable
の中身を見ました。まとめますと、TACL コマンドは alias
なり routine
とかの type
を持つ variable
として実装されているということです。varialbe
には以下の type があります。
ALIAS | MACRO | ROUTINE | DELTA | STRUCT | DIRECTORY | TEXT
最後の text type variable
が普通言われる variable
に近いと思います。
ん? number
がないって?ま、そうですね、ありません。その辺りはおいおい触れることになるでしょう。DELTA
ってのもありますが、これに触れることはないんじゃないかなぁ。
最後に varinfo
で fup
コマンドを見てみましょう。
fup
という variable
は存在しない!と怒られました。fup
はプログラムなので当然でしたね。
なお、気になった人がいたかもしれませんが、TACL では大文字・小文字は区別しません。fileinfo
も FILEINFO
も同じです。
では今回はこの辺で。次回からマクロの自作が始まりますよ。Au revoir!