[问题] 副程式将值传出取代的问题

楼主: r1000000 (狗屁昭)   2012-07-05 15:04:03
大家好,有个问题想请教各位先进
目前再写程式的时候遇到了一个问题
在主程式的时候 我有各做一个X Y的循环如下
DO III=1,L1/DX+1
X=(III-1)*DX/L1
DO JJJ=1,B1/DY+1
Y=(JJJ-1)*DY/B2
接着会去call一个副程式
CALL STEADY_SOL(W1_S,W2_S,LAMDA,ALPHA,OMEGA1,OMEGA2)
主程式的X,Y循环主要是在副程式执行过后才会接着使用副程式传出的值继续运算
副程式本身并不会使用到X,Y的变量与值
但是当副程式运算完之后,会自己传出X,Y的值,将我本来的X,Y值取代成
本来的X,Y 取代过后的值
X=0.0000 → 2.206875623112771E-312
Y=0.0000 → 2.164435707283584E-312
使用副程式时没有传入&传出X,Y,但是他却自行传出X,Y的值将我原本的X,Y值给取代掉了
请问有人知道这是什么样的问题嘛?
感谢各位~
作者: george1224 ( )   2012-07-05 21:49:00
请问一下 你有在里面设定x或y的变量吗?还有要请问一下你是在副程式前后输出x、y做比较吗??好像没有加到数目 所以用推一下@@
作者: hiyiyi   2012-07-06 12:53:00
你有加implicit none来限定变量一定要宣告吗?还有可能是溢位的问题
作者: Cypresslin (啊哈哈~~)   2012-07-06 15:37:00
他满了~就漫出来了~(误 如果是溢位的话,x y被影响应该就是因为程式存取内存到超出该存的范围,盖到x y你检查看看运算时有没有超出阵列大小之类的
作者: gilocustom   2012-07-07 01:12:00
你可以考虑找几个他牌的编译器来编译以先厘清问题是否来自编译器。
作者: george1224 ( )   2012-07-07 23:49:00
我猜CY大的意思是有可能是你的内存被吃光了 然后就会去取代之前内存的位置 造成有这个问题的产生我之前也有试过 最后我是在call之前在设定一次x.y 值你可以try看看@@
作者: Cypresslin (啊哈哈~~)   2012-07-09 10:26:00
或者是宣告real temp(5) 但是去写入temp(6)

Links booklink

Contact Us: admin [ a t ] ucptt.com