Перекомпиляция старой программы на 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? Я помню, что Фортран может быть немного странным в преобразовании типов.
Объявления, пожалуйста. Они делают мир различий!
Сравнение чего-либо с десятичным нулем - очень плохая практика. Почти всегда лучше сравнивать его со значением допустимой ошибки (которое должно быть достаточно малым).
С учетом вышесказанного попробуйте написать небольшой компилируемый пример, который выдает ту же ошибку, и опубликовать ее.