†REXXのどろぬま†
作成開始日 2025.05.05
最終更新日
例えば、次のような引数を表示するだけのスクリプトを作成すると;
/* myprog.cmd */ say '引数の数は' ARG() say '第1引数は' ARG(1) say '第2引数は' ARG(2)実行結果は次のようになる;
C:\>myprog my name is taro複数の引数をプログラム中で使用する場合は、このARG(1)の文字列を適宜分解して使用することになるが、考えようによっては、この方が便利かも知れない。少なくとも、引数の数が事前に判らない場合、とりあえず全部受け取れるのはメリットの方が大きい。〜実行結果〜 引数の数は 1 第1引数は my name is taro 第2引数は
/* myprog2.cmd */ ARG a1 a2 a3 say '第1引数は' a1 say '第2引数は' a2 say '第3引数以降は' a3実行結果は;
C:\>myprog2 my name is taroこのように、ARG命令には以下のような特長がある。〜実行結果〜 第1引数は MY 第2引数は NAME 第3引数以降は IS TARO
@引数がスペースで分割される:引数の順序が決まっているような場合は、頭から順番に取り出せる方が便利。順不同のスイッチなんかの場合は別だが、その場合はBの特長が役に立つ。さらに、PARSEと組み合わせることで、引数の区切りをスペース以外の文字にすることもできる。
A引数が全て大文字化される:DOSやOS/2はのコマンドラインは、原則的に大文字・小文字を区別しないのので(もちろん例外はある)、コマンドのオプションなどが初めから大文字に統一されていると、便利なことは多い。また、後述のように、PARSEと組み合わせれば大文字・小文字を区別するようにもできる。
B最後の変数に残りの引数がまとめて入る:したがって、引数を受け取る変数を1つしか指定しなければ、すべての引数がその変数に入ることになり、ARG関数と同じように扱える。
大文字・小文字をそのまま受け取る;
/* myprog3.cmd */PARSE ARG a1 a2 a3 say '第1引数は' a1 say '第2引数は' a2 say '第3引数以降は' a3
C:\>myprog3 My name is Taro区切り文字を変更する('is'で区切った);〜実行結果〜 第1引数は My 第2引数は name 第3引数以降は is Taro
/* myprog4.cmd */PARSE ARG a1'is' a2 say '第1引数は' a1 say '第2引数は' a2
C:\>myprog4 My name is Taroこの他、区切りを変更したいが、大文字化は残しておきたい場合には、PARSE UPPERを指定する。〜実行結果〜 第1引数は My name 第2引数は Taro