Next: , Previous: , Up: Files   [Contents][Index]


6.18.2 General files

ファイルは名前と種類によって開かれたり作成されたりします。 以下のファイル・アクセス・メソッド(FAM)が認識されます:

r/o ( – fam  ) file “r-o”
r/w ( – fam  ) file “r-w”
w/o ( – fam  ) file “w-o”
bin ( fam1 – fam2  ) file “bin”
+fmode ( fam1 rwxrwxrwx – fam2  ) gforth-1.0 “plus-f-mode”

ファイル・アクセス・モードを fam に追加 - create-file のみ(訳注: rwxrwxrwx は chmod と同様 777 とか 666 。 ただし gforth には直接 8進数記述する方法が無い)

ファイルを開いたり作成したりすると、 他のすべてのファイル・コマンドに使用されるファイル識別子 wfileid が返されます。 すべてのファイル・コマンドは、 ステータス値 wior も返します。 これは、 操作が成功した場合は 0 を返し、 エラーの場合は実装で定義されたゼロ以外の値を返します。

open-file ( c-addr u wfam – wfileid wior ) file “open-file”
create-file ( c-addr u wfam – wfileid wior ) file “create-file”
close-file ( wfileid – wior ) file “close-file”
delete-file ( c-addr u – wior ) file “delete-file”
rename-file ( c-addr1 u1 c-addr2 u2 – wior ) file-ext “rename-file”

ファイル c_addr1 u1 のファイル名を新しい名前 c_addr2 u2 に変更します(rename)

read-file ( c-addr u1 wfileid – u2 wior ) file “read-file”

ファイル wfileid から u1 文字を c_addr からのバッファーに読み取ります。 ゼロ以外の wior はエラーを示します。 U2は読み出したデータの長さを示します。 ファイルの終わりはエラーではなく、 u2$<$u1 かつ wior=0 によって示されます。

read-line ( c_addr u1 wfileid – u2 flag wior  ) file “read-line”

wfileid から c_addr u1 のバッファーに行を読み取ります。 Gforth は、 LF と CR と CRLFの 3 つの一般的な行終端文字をすべてサポートします。 ゼロ以外の wior はエラーを示します。 false の flag は、ファイルの最後(end of the file)で read-line が呼び出されたことを示します。 u2 は行の長さ(ターミネータなし)を示します。 u2<u1 は行の長さが u2 文字であることを示します。 u2=u1 は、 行が少なくとも u1 文字長であり、 バッファーの u1 文字がその行の文字で埋められており、 そして、 その行の次のスライスは次の read-line で読み取られます。 行の長さが u1 文字の場合、最初の read-lineu2=u1 を返し、 次の read-line は u2=0 を返します。

key-file ( wfileid – n  ) gforth-0.4 “key-file”

wfileid から 1 文字 n を読み取ります。 このワードは wfileid のバッファリングを無効にします。 あなたが端末から非標準モード(non-canonical mode)(RAWモード)で文字を読み取りたい場合は、(C言語インターフェイスを使用して)自分で端末を非標準モード(non-canonical mode)にする必要があります。 例外は stdin で、 この場合 Gforth は自動的に非正規モード(non-canonical mode)に設定します。

key?-file ( wfileid – f ) gforth-0.4 “key-q-file”

f は、 ブロッキング無しに wfileid から少なくとも 1 文字を読み取ることができる場合に true になります。 ファイルに対して read-file または read-line も使用したい場合は、 最初に key?-file または key-file を呼び出す必要があります(これら 2 つのワードはバッファリングを無効にします)。

file-eof? ( wfileid – flag ) gforth-0.6 “file-eof-query”

wfileid のファイル終了インジケーター(end-of-file indicator)がセットされている場合、 Flag は true です。

write-file ( c-addr u1 wfileid – wior ) file “write-file”
write-line ( c-addr u wfileid – ior  ) file “write-line”
emit-file ( c wfileid – wior ) gforth-0.2 “emit-file”
flush-file ( wfileid – wior ) file-ext “flush-file”
file-status ( c-addr u – wfam wior ) file-ext “file-status”
\ 訳注: wior <> 0 ;ファイルが存在しない(wfamは未定義の値)、
\       wior=0 かつ  ( wfam=2 r/w 、 wfam=0 r/o 、 wfam=4 w/o 、
\       wfam=1 r/o bin いずれのacessモードチェックもエラーになった時。
\       便宜的に読み込み専用かつバイナリとして返す)
file-position ( wfileid – ud wior ) file “file-position”
reposition-file ( ud wfileid – wior ) file “reposition-file”
file-size ( wfileid – ud wior ) file “file-size”
resize-file ( ud wfileid – wior ) file “resize-file”
slurp-file ( c-addr1 u1 – c-addr2 u2  ) gforth-0.6 “slurp-file”

c-addr1 u1 はファイル名、 c-addr2 u2 はファイルの内容です(訳注: slurp;音を立ててすする の意味)

slurp-fid ( fid – addr u  ) gforth-0.6 “slurp-fid”

addr u はファイル fid の内容です(訳注: slurp;音を立ててすする の意味)

stdin ( – wfileid ) gforth-0.4 “stdin”

Gforth プロセスの標準入力ファイル。

stdout ( – wfileid ) gforth-0.2 “stdout”

Gforth プロセスの標準出力ファイル。

stderr ( – wfileid ) gforth-0.2 “stderr”

Gforth プロセスの標準エラー出力ファイル。


Next: Redirection, Previous: Forth source files, Up: Files   [Contents][Index]