type や emit の出力と、
それらを使用するすべてのワード(明示的なターゲット・ファイルを持たないすべての出力用ワード)を、 outfile-execute
を使用して任意のファイルにリダイレクトできます。 以下のように使用します:
: some-warning ( n -- )
cr ." warning# " . ;
: print-some-warning ( n -- )
['] some-warning stderr outfile-execute ;
これは、 some-warning を execute した後、 元の出力先を復元します。 この構造は例外に対して安全です。 同様に、
key からの入力と、 それを利用した入力(明示的にファイルを指定しない入力用ワード)をリダイレクトするための
infile-execute があります。
outfile-execute ( ... xt file-id – ... ) gforth-0.7 “outfile-execute”
type などの出力を file-id にリダイレクトして xt を execute します。
outfile-id ( – file-id ) gforth-0.2 “outfile-id”
File-id は、 emit や、 type や、 入力として file-id
を受け取らない出力用ワードによって使用されます。 outfile-execute で変更しない限り、 デフォルトでは
outfile-id は実行中のプロセスの stdout を生成します。
infile-execute ( ... xt file-id – ... ) gforth-0.7 “infile-execute”
key などの入力を file-id にリダイレクトして xt を実行します。
infile-id ( – file-id ) gforth-0.4 “infile-id”
File-id は、 key や、 ?key や、 「ユーザー入力デバイス」(user input
device)を参照するものすべてによって使用されます。 デフォルトでは、 infile-execute
で変更しない限り、infile-id は実行中のプロセスの stdin を生成します。
あなたが、 入力または出力をファイルにリダイレクトしたくない場合は、 key や emit や type が
defer されたワードであるという事実を利用することもできます(see Deferred Words)。 ただし、 その場合は、 復元と、
例外からの保護について、 自分で心配する必要があります。 また、 この方法で出力をリダイレクトするには、 emit と
type の両方をリダイレクトする必要があることに注意してください。