Fortran Coder

标题: Fortran77子程序传递数组 [打印本页]

作者: qs2017    时间: 2017-11-10 16:28
标题: Fortran77子程序传递数组
老师让做个东西,读个77写的源代码,对数组这不太确定,大概如下:
ALLOCATABLE(A:)
ALLOCATE A(MSIZE)     MSIZE应该是分配给A的尺寸吧
DIMENSION A(*)
INTEGER A(*)
这时我取的A(2)代表什么啊?里头可以存几个数啊?
这里面对A的操作分别在几个不同的subroutine里。
谢谢大家!!!

作者: qs2017    时间: 2017-11-10 16:55
有人吗
作者: vvt    时间: 2017-11-10 18:12
有 Allocatable 就不算是 77 的程序,至少是 90 的。

ALLOCATABLE A(:)   这是定义一个可以分配的数组 A
ALLOCATE A(MSIZE)  这是给可以分配的数组 A 分配大小,大小是 MSIZE
DIMENSION A(*)     这是不负责任的定义 A 是一个数组(仅针对虚参),大小我不知道,你们要操作这个数组的话,自己看着办
INTEGER A(*)       差不多同上,但它强调了 A 是整数类型
作者: qs2017    时间: 2017-11-11 08:27
vvt 发表于 2017-11-10 18:12
有 Allocatable 就不算是 77 的程序,至少是 90 的。

ALLOCATABLE A(:)   这是定义一个可以分配的数组 A

谢谢您的回答,A还是一个一维数组吗?我看到程序往A(2)里写入了190个数,这点实在不懂啊
作者: vvt    时间: 2017-11-11 10:00
是一维的。看到有疑问的代码,请给出来。
作者: qs2017    时间: 2017-11-11 11:12
vvt 发表于 2017-11-11 10:00
是一维的。看到有疑问的代码,请给出来。

我代码是在工作站上打开的,有设置也贴不出来,我尽量描述吧,就是定义完A后,有一个subroutine调用了A(2)然后读文件向数组里写数,子程序里读写这块命令为:
READ(NEN,1020) (RUNUSD,L=1,NL),
                            ((STORAG(IG,G2,L),L=1,NL),G2=IG2LO,IG2LO+NG2-2
其中,STORAG为数组A,然后NEN是要读取的文件的unit,其他类似NL,IG2LO的数都是之前赋值的一些常数。
作者: qs2017    时间: 2017-11-11 11:14
vvt 发表于 2017-11-11 10:00
是一维的。看到有疑问的代码,请给出来。

还有1020是一个FORMAT(6E11.0)
作者: vvt    时间: 2017-11-11 19:38
你说得非常模糊。
1. 定义 STORAG 是如何定义的?
2. 有一个subroutine调用了A(2),这什么意思?听不懂
3. 如果有函数调用,那么属于数组传递的问题。需要给出虚参的定义和对应实参的定义。




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2