対話的に VOS で使うコマンド2006年06月26日 12時33分37秒

VOS の対話的 shell には特に名前が付いていないのかもしれない。特に聞いたことがない。新しいプロセス起動時に実行されるのは Command Macro Processor であると予想される。また、これが VOS の標準なので特に表記がないときの VOS コマンドは、Command Macro のコマンドを指すことだと思っても語弊はないと思われる。

VOS の対話的コマンドには大きく分けて三つの種類のコマンドがある。外部コマンド、内部コマンドと評価式である。評価式自体はコマンドではないが、他とは変わった形態を取るのと、VOS 上では欠かせないのであえて別にした。Command Macro Script では更に、特殊な内部コマンドが使える。条件文や制御文などだ。

外部コマンドは、その名の通り独立したプログラムである。実行時に新しいプログラム実行環境が生成され、プログラムの制御が渡される。実行が終わると、元のプログラムに制御が戻る。

外部コマンドは更に二つの種類に分けられる。Command Macro Script とその他のコンパイル言語の実行形式である。Command Macro のファイル名は file.cm の様に .cm の拡張子が付く。言わずと知れた command macro の略である。VOS でその他の実行ファイルと言えばコンパイル言語しかなかった。C や PL/I などで書かれたプログラムである。こちらには file.pm の様に .pm の拡張子が付く。pm は program module の略である。

内部プログラムは Command Macro Processor の内部で実装されているコマンドである。chang_current_dir など、内部状態を変更するプログラムはほとんど内部プログラムである。UNIX の shell とほぼ同じことだ。

例外として、copy_file という UNIX の cp に相応するプログラムは内部プログラムになっている。元々 VOS では実行スピードを犠牲にして、無停止を実現している部分も多い。ハードウェアに大部分の機能があるとしても、アップグレードには OS の変更も必要だし、各プログラムも気を使って書かれている。元は copy_file も外部プログラムだったのだが、スピードの向上のために内部プログラムに書き換えられた。通常にプログラムを read と write で書くと、write 時に EOF とその他の情報が更新される。copy_file は一気にデータを複写し、最後に EOF 等を更新する。そのため、copy_file を途中で強制終了させると、ファイル自体はディスク領域を保持していても、空のファイルができる。例えると 1GB も占有するファイルに表示可能なデータはないということだ。

最後に評価式となる。評価式は括弧で括られている。(current_dir) や (command_status) 等が例だ。他にも (date) や (time) 等の時間に関するものや (master_disk) や (home_dir) や (current_module) など現在の状態を表すものが多い。これらの評価式は、abbreviation と共に、コマンドラインが内部コマンドや外部コマンドに渡される前に評価されてから、コマンドが実行される。UNIX の shell だと、バッククォートに似たような物だ。しかし、shell と違い VOS では任意のコマンドを実行することはできない。

これらが対話的に VOS を利用するときに使えるコマンドの種類だ。評価式は括弧で括られているので、一目瞭然だ。もし、コマンドが内部コマンドか外部コマンドかしりたいときには where_command がある。UNIX の which に相当する。内部コマンドではその故を、外部コマンドではパスを表示する。