【发布时间】:2015-08-17 12:52:21
【问题描述】:
我不明白为什么
IMPLICIT REAL*8(A-Z)
DIMENSION A(20)
编译正常,并且
REAL*8, DIMENSION A(20)
导致错误
在 ... 处缺少尺寸规范
【问题讨论】:
我不明白为什么
IMPLICIT REAL*8(A-Z)
DIMENSION A(20)
编译正常,并且
REAL*8, DIMENSION A(20)
导致错误
在 ... 处缺少尺寸规范
【问题讨论】:
这是dimension 的两种不同含义。第一个是dimension 语句,第二个是在声明中指定dimension 属性。
在指定属性的声明中,必须有:::
REAL*8, DIMENSION(20) :: A
另请注意,数组规范附加到dimension,而不是变量名。
:: 的使用在 dimension 语句中只是可选的(Fortran 77 中不允许使用的除外)。
但是,它只是允许写
real*8 A(20)
因为dimension 属性也是通过给出数组规范来指定的。
可能还值得注意的是,由于问题中的声明行不正确,因此在固定格式源中错误是不同的。
在固定格式的源代码中,空格不是值得注意的(超出列布局),所以
real*8, dimension a(20)
是语句
real*8 dimensiona(20)
带有多余的逗号。
【讨论】:
IMPLICIT REAL*8(A-Z)
DIMENSION A(20)
是在早期版本的 fortran 中引入的数组语句声明(参见this link for example),它就是这样工作的。
REAL*8, DIMENSION A(20)
不是 f77,也不是 f90 或其他。 Fortran 90 及以上使用这个
REAL*8, DIMENSION(20) :: A
【讨论】: