Fortran中IF中的不可分类语句和其他错误

时间:2015-02-28 12:46:19

标签: if-statement fortran fortran90 gfortran

我有代码:

   if i < n then
        x = topsep(1)
        y = topsep(2)
        realvor(n,1) = x + dx
        realvor(n,2) = x + dy   
        imvor(n,1) = (realvor(n,1)*(a**2))/((realvor(n,1))**2+(realvor(n,2))**2)
        imvor(n,2) = (realvor(n,2)*(a**2))/((realvor(n,1))**2+(realvor(n,2))**2)
        tf = .TRUE.
    else 
        x = botsep(1)
        y = botsep(2)
        realvor(n,1) = x + dx
        realvor(n,2) = y - dy
        imvor(n,1) = (realvor(n,1)*(a**2))/((realvor(n,1))**2+(realvor(n,2))**2)
        imvor(n,2) = (realvor(n,2)*(a**2))/((realvor(n,1))**2+(realvor(n,2))**2)
        tf = .FALSE.
    endif

in都定义为整数,我在n = 1,100的do循环中。这会引发以下错误:

  

错误:如果i&lt;&lt;&lt;那么&#39;
  错误:在(1)处的&#39;其他&#39;处的意外ELSE语句:
  错误:期待在&#39; endif&#39;

的(1)处的END DO语句

我无法看到这些错误来自何处,无论我如何编写if语句(.NE.等),它似乎都会抛出相同的东西。

1 个答案:

答案 0 :(得分:3)

你忘记了括号!根据Fortran标准(2008,ch.8.1.7.4),if语句应为

if ( i < n ) then