子程序中的数组,Fortran 77

时间:2015-05-26 15:55:49

标签: arrays fortran fortran77

我试图理解包含在以下内容中的Fortran代码: http://heath.cs.illinois.edu/courses/cs598mh/george_liu.pdf

具体来说,是子程序中的数组变量声明。这是一个例子:

      SUBROUTINE ROOTLS (ROOT, XADJ, ADJNCY, MASK, NLVL, XLS, LS)
C
         INTEGER ADJNCY(1), LS(1), MASK(1), XLS(1)
         INTEGER XADJ(1), I, J, JSTOP, JSTRT, LBEGIN

我对数组名称之后的(1)感到困惑,例如ADJNCY(1)XADJ(1)。这些数组肯定大于一个。 (1)在这些声明中做了什么?

1 个答案:

答案 0 :(得分:3)

事实上,这不是FORTRAN 77,而是FORTRAN 66; - )

(1)dirty hack in FORTRAN 66,用于构建类似假定大小的数组的内容。在FORTRAN 77中,这被标准化为(*)

假定大小意味着数组的实际值取决于传递给子例程的实际数组的长度。但请注意,阵列的形状不一定保留! Se here对此有一个很好的解释。