• ベストアンサー

fortranのwrite文コメント有無で処理結果が変わる

初めまして。インテルfortranを使っているのですが、ソースのwrite文をコメントにするだけで処理結果が変わってしまうという現象に遭遇しています。 環境は以下です。 OS:Fedora Core 6 コンパイラ:インテルfortran 10.0.023 具体的には、下記のソースで45行目の ccc write(*,*) ians,sn ↓ write(*,*) ians,sn とするだけで、コンパイルは正常にできるのですが処理結果が変わってしまうのです。        43 j4=ians+ifix(wind_p*samp) 44 if(j4.gt.nnn) j4=nnn 45 ccc write(*,*) ians,sn 46 cc write(*,*) 'pick plib ',stnw(kst),ians,sn 47 if(sn.lt.aic_pmin_repic.or.ians.lt.1) go to 5 48 jjans=jj1+ians 原因が全くわからず困り果てております。 解決方法や原因の心あたりがありましたら、是非教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

この文面だけで回答できるほど超能力のある人はそうそういないと思いますが.... 出てくる変数や関数, そして「どのように変わったのか」くらいは書けませんか?

hor
質問者

お礼

回答有難うございます。 解決しました。 上記に書いていなかった部分の41行目のjj1(Integer)の値がwrite文の有無で変わっていました。 41 call pick_p_arrival(ibuf4,jj1,jj2,ians,j1,jk3,j4,sn) 42 nnn=jj2-jj1+1 jj1の値を定義していなかったため、writeの有無で参照するポインタの値が変わってしまったのではないかと思われます。jj1の値をきちんと定義したところ、write文がなくても期待とおりの結果がでるようになりました。 前提条件の記述不備な質問にもお付き合い頂き有難うございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.2

書かれている部分におかしな所はなさそうなので、書かれていない部分にバグがあるはずです。プログラム全体を見直しましょう。 もしくは、「ソースのwrite文をコメントにするだけ」というのが勘違いなのかもしれません。

hor
質問者

お礼

ご指摘の通り、プログラム全体の見直しは必要ですよね。 遅くなりましたがアドバイス有難うございました。

すると、全ての回答が全文表示されます。

関連するQ&A