Ошибка, связанная с командой EOF в коде Fortran - PullRequest
1 голос
/ 02 июля 2019

Я новичок в Фортране и пытаюсь скомпилировать Фортран-код с фиксированным сроком, используя gfortran.Я получил кучу ошибок, которые я мог их исправить.Тем не менее, есть ошибка, связанная с "EOF", который я не мог ее решить.Есть ли способ решить эту проблему?(Две строки «EOF» - это строки 40 и 121.)

 37         OPEN(4,FILE="ABCE.Pn")
 38 
 39         OPEN(5,FILE="../sta.txt")
 40         DO WHILE (.not.EOF(5))
 41                 N=N+1
 42                 READ(5,*)STA(N)%COD,STA(N)%NAME,STA(N)%LAT,
 43      $          STA(N)%LON,STA(N)%H
 44         ENDDO
 45         NSTA=N
 46         CLOSE(5)`

 ......

121         DO WHILE (.not.EOF(1))
122                 READ(1,'(A60)',ERR=999) TIT
123 C               IF(IYEAR.GE.2008.OR. 
      (IYEAR.EQ.2007.AND.MONTH.GE.11)) 
124 C     $         TIT=TIT(2:60)
125                 IF(TIT(1:60).EQ.'')THEN         ! NEW EARTHQUAKE`

Ошибка:

      DO WHILE (.not.EOF(5))                                            
                     1
Error: Operand of .not. operator at (1) is REAL(4)
ReadP2Pn.for:121.21:

      DO WHILE (.not.EOF(1))                                            
                     1
Error: Operand of .not. operator at (1) is REAL(4)

1 Ответ

1 голос
/ 02 июля 2019

EOF (5) не является стандартным. Вы должны проверить EOF в операторе read (что, к сожалению, похоже на goto):

 40         DO WHILE (.true.)
 41                 N=N+1
 42                 READ(5,*,end=990)STA(N)%COD,STA(N)%NAME,STA(N)%LAT,
 43      $          STA(N)%LON,STA(N)%H
 44         ENDDO
 45    990  NSTA=N 
...