在我的fortran代码中,我试图包含一个DO循环,但最后我得到了“DO循环或BLOCK IF未关闭”。如果在INCLUDE语句之后的任何其他DO循环打开,它会将它们视为嵌套循环,这表明包含的开放DO行被正确解释,但不是END DO语句。我已经将包含的代码简化为简单的代码,以确保它是循环,而不是循环中的语句给出问题。控制变量在DO循环之前声明。在包含文件中使用Do-Loop
DO A = 1,3
END DO
Fortran77不允许INCLUDE文件中的DO循环?
我使用gfortran编译器,如果它变化很大。
编辑:语法
EDIT2: 我使用GCC 4.6.2。现在要注意的是,如果这有所作为,gfortran将从PSCAD生成的makefile运行。我可以提供有关该信息是否恰当的信息。
下面是遇到此问题的代码:
TEST.F:
SUBROUTINE TESTFX()
INTEGER A
INCLUDE '../HDR.INC'
END
HDR.INC:
DO A = 1,3
END DO
EDIT3:在代码编辑拼写错误,并从子程序返回删除。
我猜那些流浪引号结束和结束后做是无意的。包含实际上是在自己的路线上?我会做一个清理编辑,但也许东西是你的问题。 – agentp
什么是您获得的错误消息的完整和准确的文本?像乔治一样,我认为格式和引号不在您的原始来源中。 –
“TEST.f的第6行出错:DO循环或BLOCK IF未关闭”是错误。另外,我做了一个假设PSCAD一直使用gfortran,这是不正确的。 PSCAD实际上是使用f2c编译的,我不确定f2c是否使用g77,它与makefile所调用的f2c位于同一目录中。这最终成为编译语句:“f2c.exe -r8 -w -Nn5000 -NL400 -Nx400 -I”C:\ PROGRA〜1 \ PSCAD42 \ emtdc \ gnu \ inc“-I”C:\ PROGRA〜1 \ PSCAD42 \ emtdc \ gnu \ windows“-g TEST.f”。 –