【问题标题】:Can a CHARACTER declaration and its DATA statement come before an IMPLICIT statement?CHARACTER 声明及其 DATA 语句可以在 IMPLICIT 语句之前吗?
【发布时间】:2019-10-28 20:23:19
【问题描述】:

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)
    . . .

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

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

谢谢, 紫胶

【问题讨论】:

    标签: fortran fortran77


    【解决方案1】:

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

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

    所描述的代码不符合要求。

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

    【讨论】:

    • 即使是较新的标准也只要求处理器“具有检测和报告”指定非标准的能力。默认情况下不需要这样做,并且大多数都接受至少一些扩展,除非您指定的选项经常涉及诸如“严格标准可移植强制”之类的词
    • 感谢两位的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    相关资源
    最近更新 更多