CHARACTER声明及其DATA语句可以在IMPLICIT语句之前吗?

问题描述 投票:1回答:1

[FORTRAN是我在1970年代的第一种编程语言,但是我无法确定以下FORTRAN代码是否有效。我无法编译或运行代码。

    SUBROUTINE ABC(PARM1, PARM2)
    CHARACTER*40 projName 
    DATA projName /'...values...'/

C Lots of comments...

C VARIABLE DECLARATIONS BEGIN HERE (the exact wording)

    IMPLICIT REAL*8(A-H,O-Z)
    (the rest of the declarations)
    . . .

[所有参考文献都说IMPLICIT语句必须在任何声明之前;但是,此代码显然可以运行。我的想法是(1)IMPLICIT语句被忽略,或者(2)此代码在某种形式的FORTRAN中有效。如果忽略IMPLICIT,则可能出于相同目的使用了编译标志。

我需要确定有效/无效并简要说明我的答案。任何想法将不胜感激。

谢谢,lac

fortran fortran77
1个回答
0
投票

[CHARACTER类型是在Fortran 77中引入的。Fortran77第3.5节“语句和行的顺序”说:“在程序单元的规范语句中,IMPLICIT语句必须在除PARAMETER语句之外的所有其他规范语句之前。”

以后的标准中存在类似的限制。

描述的代码不符合。

((Fortran 77甚至不需要Fortran处理器来诊断最基本的语言规则。编译器可能已经接受了不同的语句顺序作为扩展名,或者偶然地接受了。)

© www.soinside.com 2019 - 2024. All rights reserved.