VOS でのプログラム引数の処理2006年09月23日 09時52分18秒

man 3 getopt や man 1 getopt が UNIX にはあり、これらでプログラムに与えられた引数を処理する。

VOS には s$parse_command という、システムコールがある。これはとても高機能で、指定の書式を指定し様々な条件を設定できる。引数が数値のときには、指定されている範囲内にあるかを調べ、指定出来る文字列を制限をしたりも出来る。さらに、パスを指定した場合には、正しいパスの表記かを調べてくれる。他にも、コールバック関数を指定して、更に細かい変数の点検を出来る。

VOS のコマンドは、-form という引数をプログラムに渡すと、対話的な引数の指定画面に移る。s$parse_command がここで起動する。Command Macro 言語でもほぼ同等な事が出来る。

単純な ftp が取る引数を例にあげよう。


&begin_parameters
    host host:string
    port port:number,=21
    passward option(passwd),string,secret,required
    debug switch(debug),secret,=0
&end_parameters

host と port は位置引数 (positional argument) と言われ、オプション指定されていない第一引数と第二引数が割り当てられる。

ftp ftp.example.com 30

の用にする。switch を指定すると、yes/no 型の引数となる。-debug で有効になり、-no_debug で無効になる。secret が指定されると、-form を指定した時に表示されなくなる。hidden オプションを指定すると、打ち込んだ文字が表示されなくなる。パスワードなどを入力するときに使う。

required は、その引数に値が与えられている必要があることを示す。もし与えられていない場合は、プロンプトを出し、何かを入力しない限り、これ以上プログラムを実行してくれない。


ftp -form ftp.example.com -debug 210

とすると、デバッグを有効にして、ftp.example.com の210 番ポートに接続を試すことになる。-form があるので、対話型の引数入力画面が起動し、パスワードの入力が必須となっている。