[問題] 副程式將值傳出取代的問題

作者: 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