Перекомпиляция старой программы на Fortran и получение этой ошибки

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

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 ответа

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

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

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

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

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

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

Другие вопросы по тегам