CHARACTER 声明及其 DATA 语句能否位于 IMPLICIT 语句之前?

Can a CHARACTER declaration and its DATA statement come before an IMPLICIT statement?

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 语句必须出现在任何声明之前;然而,这段代码显然是运行s。我的想法是 (1) IMPLICIT 语句被忽略,或者 (2) 此代码在某些 FORTRAN 风格中有效。如果忽略 IMPLICIT,编译标志可以用于相同的目的。

我需要做出决定 valid/invalid 并简要说明我的回答。任何想法将不胜感激。

谢谢, 紫胶

CHARACTER 类型是在 Fortran 77 中引入的。Fortran 77 第 3.5 节 "Order of Statements and Lines" 说 "Within the specification statements of a program unit, IMPLICIT statements must precede all other specification statements except PARAMETER statements."

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

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

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