Next: , Previous: , Up: Forth Words   [Contents][Index]


6.21 OS command line arguments

コマンドラインで 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-argshift-args によって変更されます。

argv ( – addr  ) gforth-0.2 “argv”

変数(Variable) – コマンドライン引数 (コマンド名を含む) へのポインターのベクトル(vector)へのポインター。 各引数は、 C言語スタイルのゼロで終わる文字列として表されます。 next-argshift-args によって変更されます。