Я редактирую фортран 90, чтобы прочитать файл.Конкретный файл «загрязнен» некоторой дополнительной информацией, поэтому я хотел попробовать прочитать, а затем перемотать назад;перечитайте, если по ошибке:
open(filenum,file=filename,form="unformatted",iostat=ierr) //'direct' access
...lots of stuff...
here = ftell(filenum)
read(filenum,iostat=ierr) var1, var2 //try reading as var1, var2
if(iswrong(var1, var2)) then //check if correct
call fseek(filenum,here-ftell(filenum),1) //rewind
read(filenum,iostat=ierr) vara, varb, varc //read as different type
endif
Однако, когда я компилирую эту программу, я получаю
Undefined symbols:
"_fseek_", referenced from:
___myreader__subroutine_name in myreader.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
(я пытаюсь скомпилировать на gfortran (i686-apple-darwin8-gfortran-4,2)).Я понимаю, что fseek
- это не стандартная рутина Фортрана.
Интересно, есть ли альтернатива?Я понимаю, что могу сделать что-то вроде read(filenum,rec=somevalue)
, но как я могу использовать это подобным образом?Я также подумал о том, чтобы попытаться прочитать с помощью read(,advance='no')
для тестирования, а затем снова прочитать с помощью advance='yes'
, если он находится в правильном формате, но для этого требуется специальное выражение формата, которое не указано.Спасибо.