• 締切済み

Fortran "実引数の型が仮引数の型と異なります。"

Fortran "実引数の型が仮引数の型と異なります。" Intel Visual Fortranの最新版をMS Visual Studio 2008で使用(お試し)しています。 既存のFortranプログラムでエラーが出て、使えなくなりました。 問題点を要約すると以下のようなシンプルなコードに集約されました。 ---------------------- 00 program main 01 call sub1(10.d0) 02 call sub1(10.0) 03 end ! ---------------------- 04 subroutine sub1(rr) 05 real*8 rr 06 write(*,*) 'rr = ', rr 07 end subroutine ! --------------------- 昔のFortranでは、Subをcallする時に、仮引数の型と厳密に一致していなくても、うまく処理してくれたと思います。(倍精度でも整数でも、同じ数値とみなして) オプションのルーチンインターフェースのチェック(/warn:interfaces)をオフにすると、コンパイルは出来るようになるのですが、上記プログラムの計算結果は、01行と02行で結果が異なってきます。 (02行はおかしな値が入る) 本来、ランタイムエラー防止の観点からは、このような厳密性を要求するのは良いことだと思いますが、既存のプログラムが実行できなくなるのは痛手なので、何かオプションの変更で対応出来ないものでしょうか? よろしくお願いいたします。

みんなの回答

回答No.2

オプション指定の結果についての補足、拝見しました。 6つのうち、後ろ3つはともかく、前3つはどのような値でそうした結果になったのでしょうか。 また補足された他の例を見ると、定数解釈の違いというより、古い言語仕様で解釈するオプションが妥当な気がします。 解説を読むと該当部分を上手く処理できるようには思えないのですが、 http://www.xlsoft.com/jp/products/intel/cvf/docs/vf-html/pg/pg04_01_26.htm などどうでしょうか。

参考URL:
http://www.xlsoft.com/jp/products/intel/cvf/docs/vf-html/pg/pg04_01_26.htm
monomei
質問者

補足

現在サポートで確認中のため、質問者本人のみ投稿内容をご覧いただけます。ご迷惑おかけいたしますが、しばらくお待ちください。
すると、全ての回答が全文表示されます。
回答No.1
参考URL:
http://www.xlsoft.com/jp/products/intel/cvf/docs/vf-html/pg/pg04_01_31.htm
monomei
質問者

補足

ご返答ありがとうございました。 早速テストしてみましたが、やっぱりダメでした(これで解決する、と思ったんですが。。。)。結果は、以下のようになります。 r = 524288.000000001 r = 5.398241245570834E-315 r = 2.641070453192158E-308 r = 10.0000000000000 r = 10.0000000000000 r = 10.0000000000000 補足ですが、倍精度・単精度の時だけでなく、文字列のサイズが違う場合や、以下のような配列の例でもだめのようです。 ------------------- real x call sub(1,x) ----------------------- subroutine sub(n,y) dimension y(n) ※1要素の配列と、変数(非配列)を同一視してもらえない。 既存のプログラムではこのように成っているので、昔はできたということだと思います。 申し訳ありませんが引き続きよろしくお願いいたします。

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

関連するQ&A