2016-07-12 19 views
0

這裏是我的代碼是產生兩個錯誤的函數的MWE在編譯時:「無法歸類的語句」在if語句

function foo (a) 

    implicit none 
    real, intent(in)::a 
    real::foo 

    if -1.0 < 0.0 then 
     write(*,*) "hi" 
    end if 

    foo = a 

    end function foo 

我在編譯時得到的錯誤是:

frag.f90:7063.8: 
     if -1.0 < 0.0 then 
     1 
Error: Unclassifiable statement at (1) 
frag.f90:7065.11: 

     end if 
      1 
Error: Expecting END FUNCTION statement at (1) 

我不明白爲什麼我在if聲明中收到無法分類的聲明。我相信第二個錯誤與第一個錯誤聯繫在一起(如果沒有if聲明,不需要關閉它),那麼如果第一個錯誤得到修復,那麼第二個錯誤也應該修復。

我正在編譯使用gfortran

+1

當我教,我總是要求學生圍繞加括號的條件,即使編程語言不強加於人。這對於可讀性和調試非常有用,而且在Fortran中確實是強制性的。 – innoSPG

回答

3

你需要把括號中的邏輯表達式:

if (-1.0 < 0.0) then 

第二個錯誤確實是垃圾,應該儘快爲你固定的聲明瞭。


從Fortran 2008 Standard,Cl。 8.1.7.4「IF語句」:

1 IF語句根據單個邏輯表達式控制單個動作語句的執行。

R837 if-stmt     is IF (scalar-logical-expr) action-stmt 
+0

Python完成寵壞了我。 – Joshua