2016-07-12 2 views
0

Вот MWE функции в моем коде, который производит две ошибки, когда компилируется:«неклассифицируемое заявление» в случае заявление

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

Смежные вопросы