24小时热门版块排行榜    

CyRhmU.jpeg
查看: 3155  |  回复: 13

gelitao1234

金虫 (正式写手)

[求助] 请教 fortran 运行错误的原因

Error        1         Error: The storage extent of the dummy argument exceeds that of the actual argument.   [YY]        此类错误是是什么原因?怎么改正?
回复此楼
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

hklulu

木虫 (正式写手)

000

【答案】应助回帖

感谢参与,应助指数 +1
实参和虚参不匹配或用到了没有声明的数组。
00
2楼2012-05-01 12:27:29
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

hklulu

木虫 (正式写手)

000

【答案】应助回帖


xzhdty: 金币+1, 欢迎常来程序语言看看 2012-05-02 06:43:50
如果数组长度不确定,可以用(*)在被调用的函数中声明数组。
00
3楼2012-05-01 12:29:45
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

Carpathia

银虫 (小有名气)

【答案】应助回帖


感谢参与,应助指数 +1
xzhdty: 金币+1, 欢迎常来程序语言讨论 2012-05-02 06:43:36
函数体里的形式参数的数组大小超过了主程序里的实际参数数组大小,也就是参数不匹配。
更改可以是使用(1)显式结构形参数组,(2)不定结构形参数组
1) 显式结构形参数组:
subroutine subr(n,array)
integer:: n
real:: array(n)

2) 不定结构形参数组
subroutine subr(array)
real:: array(
追求理想的道路上东张西望
4楼2012-05-01 13:02:53
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

Carpathia

银虫 (小有名气)

ls的是冒号和括号
追求理想的道路上东张西望
5楼2012-05-01 13:05:34
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

gelitao1234

金虫 (正式写手)

引用回帖:
2楼: Originally posted by hklulu at 2012-05-01 12:27:29:
实参和虚参不匹配或用到了没有声明的数组。

非常感谢你的帮助,有个 问题是为什么程序在VISUAL studio上运行出现这种错误,而在fortran 90/95上运行正常,没有错误呢?
6楼2012-05-03 13:43:45
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

gelitao1234

金虫 (正式写手)

引用回帖:
4楼: Originally posted by Carpathia at 2012-05-01 13:02:53:
函数体里的形式参数的数组大小超过了主程序里的实际参数数组大小,也就是参数不匹配。
更改可以是使用(1)显式结构形参数组,(2)不定结构形参数组
1) 显式结构形参数组:
subroutine subr(n,array)
integer:: n ...

非常感谢你的帮助,有个 问题是为什么程序在VISUAL studio上运行出现这种错误,而在fortran 90/95上运行正常,没有错误呢?
7楼2012-05-03 13:43:57
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

gelitao1234

金虫 (正式写手)

引用回帖:
5楼: Originally posted by Carpathia at 2012-05-01 13:05:34:
ls的是冒号和括号

非常感谢你的帮助,有个 问题是为什么程序在VISUAL studio上运行出现这种错误,而在fortran 90/95上运行正常,没有错误呢?
8楼2012-05-03 13:44:07
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

hklulu

木虫 (正式写手)

000

【答案】应助回帖

引用回帖:
6楼: Originally posted by gelitao1234 at 2012-05-03 15:43:45:
非常感谢你的帮助,有个 问题是为什么程序在VISUAL studio上运行出现这种错误,而在fortran 90/95上运行正常,没有错误呢?

这是因为有些高版本的编译器自动扩界,编译通常可以通过,但可能会有警告。建议楼主还是修改一下代码。

也可能跟77和90,95的动态数组有关。
00
9楼2012-05-03 15:19:44
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

hklulu

木虫 (正式写手)

000

【答案】应助回帖

这个问题主要是由于有些编译器要求:在子函数中保证传递进来的数组在主程序中的下标也是从1开始的。

如在你的主程序中三维数组都是从零开始的,而在子函数中确实从1开始的,并且数组上下界都不一样,这造成了有些编译器认为是严重的错误,我也认为是,从而停止编译。

从你的程序来看,三维数组的定义不统一,为什么要不一样呢?强烈建议上下界一样。

再要注意部分赋值问题。在程序的111,112,118,119,127,145,147等行上,原来三维的数组进行了二维赋值,为何不用三个循环赋值呢,这样很容易出现问题。
00
10楼2012-05-04 15:08:51
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 gelitao1234 的主题更新
信息提示
请填处理意见