コマンドラインで Gforth プログラムに引数を渡す通常の方法は、 -e オプションを使用することです。 たとえば、
gforth -e "123 456" foo.fs -e bye
ただし、 コマンドライン引数を直接パースしたい場合もあります。 その場合、 next-arg
を通じて(イメージ固有の)コマンドライン引数にアクセスできます:
next-arg
( – addr u ) gforth-0.7 “next-arg”
OS コマンドラインから次の引数を取得し、 それを消費し addr u に返します。 引数が残っていない場合は、 0 0
を返します。
next-arg
のプログラム例 echo.fs を以下に示します:
: echo ( -- ) begin next-arg 2dup 0 0 d<> while type space repeat 2drop ; echo cr bye
これは以下のようにして起動します
gforth echo.fs hello world
そうすると以下のように出力されます
hello world
以下は、 OS コマンドラインを処理する下位レベルのワード群です:
arg
( u – addr count ) gforth-0.2 “arg”
u 番目のコマンドライン引数の文字列を返します。 u が最後の引数を超えている場合は 0 0
を返します。
0 arg
は、 Gforth を起動したプログラム名です。 次の未処理の引数は常に 1 arg
で、 その後の引数は
2 arg
などです。 システムによってすでに処理された引数はすべて削除されます。 引数を処理した後、
shift-args
を使用して引数を削除できます。
shift-args
( – ) gforth-0.7 “shift-args”
1 arg
が削除され、 後続のすべての OS コマンドライン・パラメーターが 1 だけ左にシフトされ、argc @
が減ります。 このワードは argv @
を変更できます。
最後に、 Gforth は最下位レベルで以下のワード群を提供します:
argc
( – addr ) gforth-0.2 “argc”
変数(Variable
) – コマンドライン引数の数(コマンド名を含む)。 next-arg
と
shift-args
によって変更されます。
argv
( – addr ) gforth-0.2 “argv”
変数(Variable
) – コマンドライン引数 (コマンド名を含む) へのポインターのベクトル(vector)へのポインター。
各引数は、 C言語スタイルのゼロで終わる文字列として表されます。 next-arg
と shift-args
によって変更されます。