第1回は、マクロとは何か。広義のマクロは「TACL 言語を使っていろいろな機能を実現したもの」です。そう、TACLとは言語なのですよ、みなさん。UNIXで言うshellプログラミングと同じようなものです。マクロを実装の方法で区分けすると、macro、routine、alias、obey があります。

え、obey がマクロなんだろうか?正式ではないかもしれませんが、「この機能はマクロで対応します」とお客さまに言った時に、実際は obey で済むところは obey で終わらせたりするでしょ?だから obey も広義のマクロだと思います。正確には「スクリプト」と言った方が適切かもしれませんが。(あ、「マクロ」と「macro」は意図的に使い分けてますので気をつけてください)

で、obey はファイルですよね。ファイル形式しかありません。しかしそれ以外の macro や routine などはファイルだったり variable だったりします。variable とは何でしょうか。

ざっくり言うとコマンドのことだと今は思ってください。TACL の代表的コマンドである fileinfo は alias です。volume コマンドは routine です。(fup コマンドは何でしょうか。これはプログラムですね。マクロではありません。)

普段使っているコマンドは大半が routine です。なぜかというと、routineには強力なパラメータチェック機構が備わっているからです。人間が入力する以上、バラメータのチェックが欠かせませんが、routine でマクロを書くと、楽にチェックロジックを書けるのです。だから人間が叩くコマンドはroutine で、その裏で使うサブルーチン的ロジックは macro で書いたりします。

ここでマクロの種類についてパラメータ操作という面から整理してみましょう。

  • obey
    パラメータを持てません。毎回決まり切ったことのみ実行します。
  • macro
    パラメータを持てます。ただしチェック機構がないので、マクロを書く人が知恵を絞ってチェックロジックを実装する必要があります。自分で使うマクロであれば、無茶なパラメータを自分で与えたりしないので、 macro にしてチェックロジックは省略するかもしれません。
  • routine
    パラメータを持てます。前述の通りパラメータチェック機構を持ってますので、わけの判らないパラメータを入れられたら弾くことができます。
  • alias
    その名の通り、読み替えです。あるマクロに違う名前をつけられるということです。マクロ名が長くなってしまうようなとき、短くするためなどに使います。パラメータの扱いは元のマクロ次第です。