|
INTEGER*4 fseek n = fseek( lunit, offset, from ) |
|||
|---|---|---|---|
|
lunit |
INTEGER*4 |
Input |
Open logical unit |
|
offset |
INTEGER*4 or INTEGER*8 |
Input |
Offset in bytes relative to position specified by from |
| An INTEGER*8 offset value is required when compiled for a 64-bit environment, such as Solaris 7, with -xarch=v9. If a literal constant is supplied, it must be a 64-bit constant, for example: 100_8 | |||
|
from |
INTEGER*4 |
Input |
0=Beginning of file 1=Current position 2=End of file |
|
Return value |
INTEGER*4 |
Output |
n=0: OK; n>0: System error code |
On sequential files, following a call to fseek by an output operation (e.g. WRITE) causes all data records following the fseek position to be deleted and replaced by the new data record (and an end-of-file mark). Rewriting a record in place can only be done with direct access files.
Example: fseek()--Reposition MyFile to two bytes from the beginning
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 error'
end
Example: Same example in a 64-bit environment and compiled with -xarch=v9:
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 error'
end