Fortranでファイルを読むときに少し問題があります。あなたが見ることができるように、私は特定の長さの特定のレコードを読むファイルを覆い尽くしています。直接アクセスファイルを読み取っているときにGFortran I/Oエラー5002が発生しました
特定のレコードになると、IOSTATエラー5002が発生します。これで私の質問は、このエラーの意味です:ファイルの終わりか、レコードが残っていないのでしょうか?私はそれを無視することはできますか?
私はMinGW GFortran 4.8.0を使用しています。
は、ここでは、コードです:iostat=
指定子によって返さ
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