维度如何在Fortran中运行

时间:2015-08-17 12:52:21

标签: arrays fortran declare

我不明白为什么

IMPLICIT REAL*8(A-Z)
DIMENSION A(20)

编译好,

REAL*8, DIMENSION A(20)

导致错误

  

缺少尺寸规格......

2 个答案:

答案 0 :(得分:5)

这是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)

带有无关的逗号。

答案 1 :(得分:2)

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