Перекомпиляция старой программы на Fortran и получение этой ошибки - PullRequest
0 голосов
/ 07 февраля 2011

Код выглядит следующим образом;

DO i = 1 , no2 + 1
   IF ( Isign.EQ.1 ) THEN
      Ans(i) = fft(i)*Ans(i)/no2
   ELSEIF ( Isign.EQ.-1 ) THEN
      IF ( ABS(Ans(i)) .EQ. 0.0 )
&           PAUSE ' deconvolving at responce zero in convlv'
      Ans(i) =  fft(i)/Ans(i)/no2
   ELSE

Компилятор выдаёт мне эту ошибку; IF (ABS (i)). EQ. 0.0) ^ Введите несогласие между выражениями в (^) и (^)

IF ( ABS(i)).EQ. 0.0)
            ^
invalid form for IF statement at (^)

Может кто-нибудь сказать мне, как правильно написать эту строку "Intrisic function", чтобы решить эту ошибку? Я новичок в программировании, и любая помощь будет отличной! Я использую компилятор GNU G77, если это имеет значение? Спасибо

Ответы [ 2 ]

1 голос
/ 07 февраля 2011

Во втором сообщении об ошибке я вижу больше правых скобок, чем левых

IF ( ABS(i)).EQ. 0.0)

Кроме того, каков тип и тип Ans (i) и 0.0?Я помню, что Фортран может быть немного странным в преобразованиях типов.

0 голосов
/ 07 февраля 2011

Объявления, пожалуйста. Они создают мир различий!

Сравнение чего-либо с десятичным нулем - очень плохая практика . Это почти всегда лучше сравнить его со значением допустимой ошибки (которая должно быть достаточно маленьким).

С учетом вышесказанного, попробуйте написать небольшой компилируемый пример, который выдает ту же ошибку и публикует ее.

...