У меня есть небольшая проблема с чтением файла в Fortran. Как вы можете видеть, я перебираю файл, читающий определенные записи с определенной длиной.Ошибка ввода/вывода GFortran 5002 при чтении файла прямого доступа
Что происходит, когда дело доходит до определенной записи, я получаю сообщение об ошибке IOSTAT 5002. Теперь мой вопрос в том, что означает эта ошибка: это конец файла или нет записи влево или что-то еще? Могу ли я игнорировать это?
Я использую MinGW GFortran 4.8.0.
Вот код:
PROGRAM test_read
INTEGER*4 HCM_error
DOUBLE PRECISION N_Record(22)
CHARACTER*8 C_Record(22)
EQUIVALENCE (N_Record,C_Record)
OPEN (UNIT=11, FILE='C:/BORDER/D__HOL.000',STATUS='OLD', ACCESS='DIRECT',RECL=176, ACTION='READ', IOSTAT=IOS)
HCM_error=0
DO N_rec = 1, 2000
READ (11, REC=N_rec, IOSTAT=IOS) C_Record
WRITE(*,*) "|",IOS,' ',N_rec,' ',N_record(21),' ',N_record(22),"|"
!End of file reached (or non existing record) ?
IF ((IOS .LT. 0) .OR. (IOS .EQ. 36)) EXIT
IF (IOS .NE. 0) THEN
!Error in (border-) line data
HCM_Error = 1049
EXIT
END IF
END DO
CLOSE(UNIT=11)
WRITE (*,*) HCM_error
END PROGRAM
Вы имеете в виду, что значение 'ios' равно 5002? – francescalus
Да, значение ios равно 5002. – Ramirez
Я пробовал использовать IOMSG =, и он говорит о несуществующем номере записи. – Ramirez