avatar
Fotran77程序的移植问题# Computation - 科学计算
b*e
1
我在Fortran PowerStation 4 下使用一个程序,发现不能debug,可以设置断点,但是程
序并不停。于是考虑移植到Visaul Fortran 6.6下,发现可以调试,也可以编译通过,但
是执行是却遇到stack overflow的问题,后来发现是一个子程序的数组定义有问题,但是
在Powerstation4 下却可以执行。那个子程序数组定义如下:
SUBROUTINE GHMAT7(NE,CONE,TUINV,TDLDA)
COMPLEX TUINV(NROWS,NROWS),TDLDA(NROWS)
INTEGER CONE(NE,4),VB_ID
COMMON N,NP,INP,IPR,ITX
COMMON /GEOMET/NROWS,NCOLM
结果发现程序运行到第一行和第二行是均发现溢出,为什么Powerstation中可以通过运
行呢?
BTW, NROWS值为600。
avatar
g*e
2
VF可以调stack容量的吧.

【在 b********e 的大作中提到】
: 我在Fortran PowerStation 4 下使用一个程序,发现不能debug,可以设置断点,但是程
: 序并不停。于是考虑移植到Visaul Fortran 6.6下,发现可以调试,也可以编译通过,但
: 是执行是却遇到stack overflow的问题,后来发现是一个子程序的数组定义有问题,但是
: 在Powerstation4 下却可以执行。那个子程序数组定义如下:
: SUBROUTINE GHMAT7(NE,CONE,TUINV,TDLDA)
: COMPLEX TUINV(NROWS,NROWS),TDLDA(NROWS)
: INTEGER CONE(NE,4),VB_ID
: COMMON N,NP,INP,IPR,ITX
: COMMON /GEOMET/NROWS,NCOLM
: 结果发现程序运行到第一行和第二行是均发现溢出,为什么Powerstation中可以通过运

avatar
g*e
3
FPS4老爷车据说在win98下是可以debug的.欧没试过.
VF6.5下Project->settings->link->output
将stack allocations reserve改大点.别超过机器
内存就是了.6.6也差不多吧

【在 g********e 的大作中提到】
: VF可以调stack容量的吧.
avatar
i*d
4
Depending on the compiler, the definition of an array like
COMPLEX TUINV(NROWS,NROWS),TDLDA(NROWS)
with NROWS passed by COMMON, is problematic. Just think
of what happens if NROWS is modified in your subroutine.
Add NROWS to the arguments of the subroutine.






【在 b********e 的大作中提到】
: 我在Fortran PowerStation 4 下使用一个程序,发现不能debug,可以设置断点,但是程
: 序并不停。于是考虑移植到Visaul Fortran 6.6下,发现可以调试,也可以编译通过,但
: 是执行是却遇到stack overflow的问题,后来发现是一个子程序的数组定义有问题,但是
: 在Powerstation4 下却可以执行。那个子程序数组定义如下:
: SUBROUTINE GHMAT7(NE,CONE,TUINV,TDLDA)
: COMPLEX TUINV(NROWS,NROWS),TDLDA(NROWS)
: INTEGER CONE(NE,4),VB_ID
: COMMON N,NP,INP,IPR,ITX
: COMMON /GEOMET/NROWS,NCOLM
: 结果发现程序运行到第一行和第二行是均发现溢出,为什么Powerstation中可以通过运

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。