goto macro2006年06月24日 08時31分04秒

また、VOS の Command Macro にはつい最近まで、ブロック制御がなかった。if 文では直後に続く一文しか実行できない。そのため、goto の利用がほぼ必須になってしまっていたのである。

二十一世紀に入る少々手前になってやっとブロック制御ができるようになった。1999 年辺りの話だったと思う。そのときはずいぶん嬉しかったものだ。

そのような背景もあり、Command Macro はそれこそ機械語の様に見えた。C 言語さえ {} で囲ってブロック単位での制御が効く。言い忘れていたが、Command Macro では関数など作れない。これでも長い間 Command Macro は VOS 上に唯一のスクリプト言語だった。嫌がうえにも使わざるを得なかったのである。たとえ使いづらいとは言え、C 言語でファイルの削除をしたりするプログラムを書くよりは簡単なのだから。

簡単なスクリプトだったらいいのだが、少し長くなって来ると、似たような作業が増えてくる。それでも皆、何とかして同じ作業をまとめようとするのだ。goto には変数の値を渡すこともできるので、関数もどきを作成するのである。goto の前に戻り値を特定の変数に入れ、関数もどきの参照する変数に代入する。その後、goto で関数もどきに飛ぶ。関数もどきで変数をいじった後、戻り番地に goto だ。アセンブリ言語で書いている関数そのものだ。

また、 if で分岐した後に一つのコマンドだけで済む場合など滅多にない。ここで、また goto のお出ましである。それゆえ、始めて書いたときは機械語を連想させられたものだった。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2006/06/24/418701/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。