
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行はおかしな値が入る)
本来、ランタイムエラー防止の観点からは、このような厳密性を要求するのは良いことだと思いますが、既存のプログラムが実行できなくなるのは痛手なので、何かオプションの変更で対応出来ないものでしょうか?
よろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
オプション指定の結果についての補足、拝見しました。
6つのうち、後ろ3つはともかく、前3つはどのような値でそうした結果になったのでしょうか。
また補足された他の例を見ると、定数解釈の違いというより、古い言語仕様で解釈するオプションが妥当な気がします。
解説を読むと該当部分を上手く処理できるようには思えないのですが、
http://www.xlsoft.com/jp/products/intel/cvf/docs …
などどうでしょうか。
参考URL:http://www.xlsoft.com/jp/products/intel/cvf/docs …
No.1
- 回答日時:
このオプション指定でどうですか。
http://www.xlsoft.com/jp/products/intel/cvf/docs …
参考URL:http://www.xlsoft.com/jp/products/intel/cvf/docs …
この回答への補足
ご返答ありがとうございました。
早速テストしてみましたが、やっぱりダメでした(これで解決する、と思ったんですが。。。)。結果は、以下のようになります。
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が見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PICのプログラムでsrandを使う...
-
COBOLのピリオド
-
basicで書いた測量プログラムが...
-
fortran if文
-
【JAVA】数字をひし形に出力す...
-
65536は2の何乗なのでしょうか?
-
あるプログラムのコマンドライ...
-
一番近い組み合わせを見つけるには
-
VBAで仕様書は書きますか?
-
正しい五十音順について
-
PICマイコンのコピー(クローン...
-
ドロップダウンリストの文字を...
-
プログラミングをしたいのです...
-
Bluestacks内でダウンロードし...
-
VBAでユーザーフォームが自動的...
-
バッチファイルでウインドウを...
-
プログラミングのコード量に関...
-
iTunesがノートンにブロックさ...
-
プログラミングについて。
-
方対数グラフを書く為の計算方...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数の値が勝手に変化する原因
-
【JAVA】数字をひし形に出力す...
-
Sublime Text 3でのFortranプロ...
-
COBOLのピリオド
-
3つの整数のうち奇数のみを表示...
-
360度を超える角度
-
Fortran "実引数の型が仮引数の...
-
Matlabについて質問2
-
JCLの基本について教えてください
-
C言語の質問です。
-
ProC 固定SQLでNULLってどう表...
-
Fortran90についての質問です。
-
C言語のプログラム
-
素数判定について
-
fortran if文
-
C言語 バッファについて。
-
プロローグ(=Prolog)について質...
-
FORTRAN77のプログラミングを教...
-
Fortranプログラム-if文について
-
不具合が発生(API・C言語)
おすすめ情報