重新编译旧的Fortran程序并收到此错误

时间:2011-02-07 16:43:02

标签: compiler-construction fortran g77

代码部分看起来像这样;

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 个答案:

答案 0 :(得分:1)

我在第二个错误陈述

中看到更多右括号而不是左括号
IF ( ABS(i)).EQ. 0.0)

此外,Ans(i)和0.0的类型和种类是什么?我记得fortran对类型转换有点奇怪。

答案 1 :(得分:0)

请声明。他们创造了一个与众不同的世界!

将某些内容与小数零相比较是一种非常糟糕的做法 。它 将它与容忍误差的值进行比较几乎总是更好(哪个 应该做得足够小。)

如上所述, 尝试编写一个小的可编译示例 产生相同的错误并发布。