みなさん、こんにちは。第2回の講座です。

前回 fileinfo マクロは alias である、とお話ししました。マクロの正体はどうやったら調べられるでしょう。ログインできる環境があったら、次のようにコマンドを打ってみましょう。いやー、ログインできる環境を用意してからこの講座を読んでもらった方がいいな。今後は実習がバシバシでてきますよ。

では一発め。

fileinfo variable の情報を表示しろ、というコマンドです。

と表示されました。もし、これ以外の表示が出た時は、その環境はとても変です。

さてさて、Type のところに ALIAS と出ていますね。fileinfo variablealias であることがこれで分かります。次に volume variable の情報を見てみましょう。

前記の通り、volumeroutine で間違いありませんでした。

variableALIAS であるなら、何かの変名、読み替えということなので元のマクロがあるはずです。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 variblevolume variable の中身を見ました。まとめますと、TACL コマンドは alias なり routine とかの type を持つ variable として実装されているということです。varialbe には以下の type があります。

ALIAS | MACRO | ROUTINE | DELTA | STRUCT | DIRECTORY | TEXT

最後の text type variable が普通言われる variable に近いと思います。

ん? number がないって?ま、そうですね、ありません。その辺りはおいおい触れることになるでしょう。DELTA ってのもありますが、これに触れることはないんじゃないかなぁ。

最後に varinfofup コマンドを見てみましょう。

fup という variable は存在しない!と怒られました。fup はプログラムなので当然でしたね。

なお、気になった人がいたかもしれませんが、TACL では大文字・小文字は区別しません。fileinfoFILEINFO も同じです。

では今回はこの辺で。次回からマクロの自作が始まりますよ。Au revoir!