Command Macro 言語2006年06月23日 23時41分00秒

今回は VOS 上での shell について軽く触れる。コマンド名や基本的な動作は、マニュアルからわかる。しかし、VOS shell の実際の起動されかた等の一部については、残念ながら書かれている物を見たことが無い。それゆえ、普段使いながら、システムを観察した結果を元にした憶測も入る。そのときには明示的に私の推測だという故を記述する。

VOS に login したときの雰囲気についてもっと触れていきたいとおもう。

VOS には Command Macro と言われるプログラム言語がある。そして、この言語が VOS 上での shell も兼ねている。新規 VOS プロセス起動時にこの言語が起動する。始めて Command Macro を使ったときに sh の高機能さに気がつき、感動したものだ。もちろん sh とは bash や tcsh 等ではなく、/bin/sh の事を指している。UNIX あるいは、sh を代表とする shell の成功は、ファイルディスクリプタの操作であると思っている。

VOS 環境が UNIX 以外で始めて本格的に使う CUI 専門環境であったため sh の真の力に気が付かなかった。Macintosh でも shell 環境を準備したことがあるが、本格的には使っていなかった。sh では < や > を使って、ファイルの入力と出力を簡単に変えることができる。また、パイプにて、一つのプログラムの出力を他のプログラムの入力に結びつける事ができる。Command Macro では前者は可能であるが、後者ができないのだ。なお、入出力を切替えるのは UNIX と違って、パイプではない。

grep や sed や awk などは連結して使うことも多いが、それができないのである。いちいち、一つずつに入力ファイルと出力ファイルの設定をしてやらなければならない。プログラミングの手間がかかる。更にパフォーマンスにも大きく影響する。各中間結果が逐一ファイルに書き込まれるのだ。元々遅い IO が更に遅くなる。パイプではファイルに書き込まれることはないので、多大な高速化につながるのにである。

なお、ファイルへの出力の変更は以下のようになる。


attach_default_output output
display file1
display file2
detach_default_output

file1 と file2 を output に順に書き出したわけだ。実は、VOS の環境ではプロンプトの出力先も attach_default_output で変わってしまう。プロンプトを有効にしていた場合のこのコマンドの結果は、cat file1 file2 > output とは違うものになってしまう。後々に触れるが、VOS のファイルには型がある。もし、この型も適切なものでなければ、プロンプトを抑制していても、これまた cat の結果とは違うものになる。