fseeko64と ftello64 は、それぞれ fseek と ftell の「大規模ファイル」バージョンです。fseeko64 と ftello64 は、INTEGER*8 ファイル位置のオフセットを入出力します。「大規模ファイル」とは 2G バイトを超えるファイルのことで、バイト位置は 64 ビットの整数で示す必要があります。これらのバージョンを使用して、大規模ファイルのポインタの位置付けや再位置付けを行います。
関数は、次のように呼び出します。
INTEGER fseeko64 n = fseeko64( lunit, offset64, from ) |
|||
lunit |
INTEGER*4 |
入力 |
開いている論理装置 |
offset64 |
INTEGER*8 |
入力 |
from で指定された位置からの 64 ビットオフセットを示すバイト数 |
from |
INTEGER*4 |
入力 |
0= ファイルの先頭 1= 現在の位置 2= ファイルの終了 |
戻り値 |
INTEGER*4 |
出力 |
n=0: 正常、n>0: システムエラーコード |
順編成ファイルでは、fseeko64 に続く呼び出しのあとの出力操作 (WRITE など) は、fseek の位置に続くすべてのデータレコードの削除、新しいデータレコード (とファイルの終わりのマーク) での書き換えの原因となります。正しい位置へのレコードの書き換えは、直接アクセスファイルでのみ実行可能です。
例: fseeko64() - MyFile のポインタを先頭から 2 バイトの位置に再位置づけします。
INTEGER fseeko64, lunit/1/, from/0/, n INTEGER*8 offset/200/ open( UNIT=lunit, FILE='MyFile' ) n = fseeko64( lunit, offset, from ) if ( n .gt. 0 ) stop 'fseek エラー' end |
関数は、次のように呼び出します。
INTEGER*8 ftello64 n = ftello64( lunit ) |
|||
lunit |
INTEGER*4 |
入力 |
開いている論理装置 |
戻り値 |
INTEGER*8 |
出力 |
n≥0: n= ファイルの先頭からのオフセットを示すバイト数 n<0: n= システムエラーコード |
例: ftello64():
INTEGER*8 ftello64, lunit/1/, n open( UNIT=lunit, FILE='MyFile' ) ... n = ftello64( lunit ) if ( n .lt. 0 ) stop 'ftell エラー' ... |