Fortran Coder

查看: 74|回复: 7

[子程序] Fortran77子程序传递数组

[复制链接]

20

帖子

3

主题

0

精华

入门

F 币
86 元
贡献
51 点
发表于 2017-11-10 16:28:37 | 显示全部楼层 |阅读模式
老师让做个东西,读个77写的源代码,对数组这不太确定,大概如下:
ALLOCATABLE(A:)
ALLOCATE A(MSIZE)     MSIZE应该是分配给A的尺寸吧
DIMENSION A(*)
INTEGER A(*)
这时我取的A(2)代表什么啊?里头可以存几个数啊?
这里面对A的操作分别在几个不同的subroutine里。
谢谢大家!!!
回复

使用道具 举报

20

帖子

3

主题

0

精华

入门

F 币
86 元
贡献
51 点
 楼主| 发表于 2017-11-10 16:55:20 | 显示全部楼层
有人吗
回复

使用道具 举报

485

帖子

0

主题

0

精华

宗师

F 币
1070 元
贡献
445 点

规矩勋章元老勋章新人勋章水王勋章

QQ
发表于 2017-11-10 18:12:32 | 显示全部楼层
有 Allocatable 就不算是 77 的程序,至少是 90 的。

ALLOCATABLE A(:)   这是定义一个可以分配的数组 A
ALLOCATE A(MSIZE)  这是给可以分配的数组 A 分配大小,大小是 MSIZE
DIMENSION A(*)     这是不负责任的定义 A 是一个数组(仅针对虚参),大小我不知道,你们要操作这个数组的话,自己看着办
INTEGER A(*)       差不多同上,但它强调了 A 是整数类型

20

帖子

3

主题

0

精华

入门

F 币
86 元
贡献
51 点
 楼主| 发表于 2017-11-11 08:27:25 | 显示全部楼层
vvt 发表于 2017-11-10 18:12
有 Allocatable 就不算是 77 的程序,至少是 90 的。

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

谢谢您的回答,A还是一个一维数组吗?我看到程序往A(2)里写入了190个数,这点实在不懂啊

485

帖子

0

主题

0

精华

宗师

F 币
1070 元
贡献
445 点

规矩勋章元老勋章新人勋章水王勋章

QQ
发表于 2017-11-11 10:00:39 来自移动端 | 显示全部楼层
是一维的。看到有疑问的代码,请给出来。

20

帖子

3

主题

0

精华

入门

F 币
86 元
贡献
51 点
 楼主| 发表于 2017-11-11 11:12:35 | 显示全部楼层
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的数都是之前赋值的一些常数。

20

帖子

3

主题

0

精华

入门

F 币
86 元
贡献
51 点
 楼主| 发表于 2017-11-11 11:14:28 | 显示全部楼层
vvt 发表于 2017-11-11 10:00
是一维的。看到有疑问的代码,请给出来。

还有1020是一个FORMAT(6E11.0)

485

帖子

0

主题

0

精华

宗师

F 币
1070 元
贡献
445 点

规矩勋章元老勋章新人勋章水王勋章

QQ
发表于 2017-11-11 19:38:52 | 显示全部楼层
你说得非常模糊。
1. 定义 STORAG 是如何定义的?
2. 有一个subroutine调用了A(2),这什么意思?听不懂
3. 如果有函数调用,那么属于数组传递的问题。需要给出虚参的定义和对应实参的定义。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|QQ群|Fcode

GMT+8, 2017-12-18 15:09

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表