Sun Studio 12: Fortran ライブラリ・リファレンス

1.4.13.1 fseek: 論理装置上のファイルのポインタの再位置付け

関数は、次のように呼び出します。

INTEGER*4 fseek

n = fseek( lunit, offset, from )

lunit

INTEGER*4

入力 

開いている論理装置 

offset

INTEGER*4

または

INTEGER*8

入力 

from で指定された位置からのオフセットを示すバイト数

 

64 ビット環境用にコンパイルする場合は、INTEGER*8 オフセット値が必要です。定数表現を入力する場合は、それを 64 ビット定数にする必要があります。たとえば、100_8 とします。

from

INTEGER*4

入力 

0= ファイルの先頭 

1= 現在の位置 

2= ファイルの終了 

戻り値 

INTEGER*4

出力 

n=0: 正常、n>0: システムエラーコード


注 –

順編成ファイルでは、fseek に続く呼び出しのあとの出力操作 (WRITE など) は、fseek の位置に続くすべてのデータレコードの削除、新しいデータレコード (とファイルの終わりのマーク) での書き換えの原因となります。正しい位置へのレコードの書き換えは、直接アクセスファイルでのみ実行可能です。


例: fseek() - MyFile のポインタを先頭から 2 バイトの位置に再位置付けします。


        INTEGER*4 fseek, lunit/1/, offset/2/, from/0/, n
        open( UNIT=lunit, FILE='MyFile' )
        n = fseek( lunit, offset, from )
        if ( n .gt. 0 ) stop 'fseek エラー'
        end

例: 前述の例を 64 ビット環境で、-m64 を使ってコンパイルすると次のようになります。


        INTEGER*4 fseek, lunit/1/,  from/0/, n
        INTEGER*8 offset/2/
        open( UNIT=lunit, FILE='MyFile' )
        n = fseek( lunit, offset, from )
        if ( n .gt. 0 ) stop 'fseek エラー'
        end