• ベストアンサー

FORTRANの実行エラーについて

FORTRAN言語でプログラミングをして、実行させた際に次のようなエラーが出てきました。 forrtl: severe (64): input conversion error ファイル(DATA FILE)を読み込む際に出ます。 なぜこのようなエラーがでるのかよく分かりません。 私が思うに読み込むデータファイルのサイズが大きすぎる(約2.3M)のではないかと思っているのですが、どなたか原因が分かる方ご教授お願いします。

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

  • ベストアンサー
  • FM-8
  • ベストアンサー率39% (65/164)
回答No.2

FORTRAN 懐かしいですね. FORMULA TRANSLATOR でしたっけ? フォートランにもいろいろなバージョンがあるので, 何とも言えませんが, conversion とは 変換という意味なので, 入力しているファイルのデータ型と入力している変数の方であわなくて変換できないと言うことでしょうか. たとえば,数値に対して,文字列がきたとか. どのバージョンかわかりませんが, きょうび,2Mや3M程度の大きさの配列でエラーをだす処理系というのも無いと思います. 昔は,リージョンサイズが4M程度しか無かったので エラーは出ましたが,サイズがおおきすぎて出るのは, 「Invalid Memory Access」とかそれっぽいものです. サイズがもしも,処理系が派許容していないくらい大きいとしたら,コンパイル時にでるか, 実行ファイルをロードしたときに出ると思います. ランタイム時にでるということは,プログラムミスで おもったよりも大きなものを読み込もうとしている場合などが考えられます. 用意している配列が1Mなのに,読み込もうとしているデータが2Mある場合などです. #1さまご指摘のように,ソースコードの一部や処理系を示さないとなんとも言えないと思います.

tforfield
質問者

補足

早速のご返答有難うございます。 誠に申し訳ありません。#1様のおっしゃる通り、OSならびにソース等示す必要がありますね。 あまりの不備をお許しください。 ご指摘にお答えしますと、 OS:Windows xp FORTRAN:Compaq Visual Fortran version 6.1 source: --main-- OPEN(UNIT=28,FILE='D:\rslt_face\'//NRFILE//'.dat', & ACCESS='SEQUENTIAL',STATUS='OLD') CALL FLINFACE(IFACE,IEND,MODULUS,JMARK,FRSTR,FREFFST, & FRDFEFFST,FRSTN,FRSUMEPSTN) CLOSE(UNIT=28) --subroutine-- SUBROUTINE FLINFACE(IFACE,IEND,MODULUS,JMARK,FRSTR,FREFFST, & FRDFEFFST,FRSTN,FRSUMEPSTN) IMPLICIT REAL*8(A-H,O-Z) COMMON /D/ MODE COMMON /ELTYPGS/ ICLAS,NODE,NGAUS,IPLAN,ISTR,NSTR CHARACTER*120 D120 DIMENSION JMARK(IFACE,IEND) DIMENSION FRSTR(6,4,IFACE,IEND) DIMENSION FREFFST(4,IFACE,IEND),FRDFEFFST(4,IFACE,IEND) DIMENSION FRSTN(6,4,IFACE,IEND),FRSUMEPSTN(4,IFACE,IEND) c READ(28,'(5X,I5)') MODE READ(28,'(8X,I2)') MODULUS C DO 60 L=1,IEND READ(28,'(A120)') D120 READ(28,'(A120)') D120 * * * 上に示しますオープン文、もしくはその直後のサブルーチンあたりでこけてるようです。 ご指摘に十分添えているか分かりませんが、お願いします。新たなご指摘があれば逐次対応させていただきます。

その他の回答 (4)

  • notnot
  • ベストアンサー率47% (4847/10260)
回答No.5

#1です。#3さんの書いているあたりが怪しそうですね。 OPEN(UNIT=28,FILE='D:\rslt_face\testfile.dat', & ACCESS='SEQUENTIAL',STATUS='NEW') WRITE(28,'(5X,I5)') 12345 WRITE(28,'(8X,I2)') 67 CLOSE(UNIT=28) END というプログラムで作られるtestfile.datと、 読もうとしているファイルの先頭2行を比べてみてください。 数字の値以外の文字数などは同じになってないとおかしいですが、違っているんじゃないでしょうか?改行文字とかが違うのかも。 もしそうならマニュアルをよく読んでください。

  • FM-8
  • ベストアンサー率39% (65/164)
回答No.4

#2です. Visual Fortran というものがあるのですか. 知りませんでした. 私的には,fortran77で止まってます.(^-^;) 入力データはどんなものでしょうか. ループの 最初からエラーをだしているのでしょうか. それても,ファイル終端まで行っているのでしょうか. IENDは,パラメータ文か何かで与えているようですが,値はちゃんと入ってますか? ディスプレイかファイルに書き出してみて,チェックしてみましょう. 異常終了させると,ただしく出力しないケースがあるので,STOP文で強制的に終了させれば,その時点までの入出力は正しく反映されます. デバッグ環境でやられているのであればブレークポイントを設定しても良いですし. >DO 60 L=1,IEND >READ(28,'(A120)') D120 >READ(28,'(A120)') D120 >* このループに入る前にSTOP分などを入れて プログラムを止めたときに, MODE や MODULUS には正しい値がはいっていますか? また,このループでは,同じ変数に続けて値を入れています.行をスキップするためのようですが, ファイルには120列の固定長データが書かれているのでしょうか. FORTRANで文字列操作した経験は少ないので,あまりお力になれないかもしれません. それでは.

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.3

昔,SunOSだかirixだかで使ったFORTRANだと、 READ,WRITEで特殊なエミュレーションモードみたいな形式と通常のテキストファイルを読み書きするようなモードがありました。 で、エミュレーションモードで通常のテキストファイルを読み込むと、変換エラーになったかも知れません。 なぜこんな物があるかというと、元々カード形式とか、固定長レコードのファイルを扱うものだったので、 通常のテキストファイルだと同じ様な動作をさせることが原理的に無理だったためだと思います。 これかどうかは、試しにFORMAT文付きでWRITEしたファイルの中身を見ればわかります。 もしそうなら、多分OPENのパラメタになにか指定があると思います。

  • notnot
  • ベストアンサー率47% (4847/10260)
回答No.1

エラーメッセージはコンパイラの種類によって違いますから正確な意味はマニュアルを読まないとわかりません。 conversion error(変換エラー) ということですから、ファイル内データ形式とREAD文での書式とが合ってないんじゃないでしょうか? ただ、severe(重大なエラー)と出てるので、もっと根本的なところで間違っているのかも知れません。 少なくとも、OS名称、FORTRANの種類、データの形式、READ文周辺のプログラムを示さないと誰もこれ以上の返答は無理と思います。私の使ったことの無いFORTRANのようなので私はこれ以上返答できませんが。

関連するQ&A

  • Compaq Visual Fortran を使っているのですが、エラーが解消出来ず困っています。

    Compaq Visual Fortran を使っているのですが、エラーを解消できません。 --------------------Configuration: park - Win32 Release-------------------- Compiling Fortran... df: severe: Can't open indirect file C:\DOCUME~1\DELL Error executing df.exe. park.exe - 1 error(s), 0 warning(s) とでてしまいます。人から頂いたものを解凍して実行しただけで、送り主のPCでは実行できているので、私のPCか解凍の仕方などにに原因があるのかもしれません。詳しい方いらっしゃいましたら何か可能性のあることを教えて頂けると幸いです。よろしくお願い致します。

  • fortran

    このようなエラーメッセージが出力されるのですが、forrtl: severe (67): input statement requires too much data, unit 50 このエラーを解決するにはどのようにすればいいでしょうか?

  • C言語からのFortranプログラムの呼び出し

    Fortranで記述した以下のような構成の有限要素法プログラムをC言語から呼び出したいのですが,具体的にどのようなコードを記述すればいいのかがわかりません.お教えいただけないでしょうか. サブルーチンinputおよびoutputでは入力および結果ファイルの入出力を行っています. 当方C言語はほぼ初心者です.Fortranのプログラミング環境としてはVisualStudio2005およびVisualFortran9.1を用いています. C言語のプログラミング環境としてはおなじくVisualStudio2005を使用したいとおもっております. [メインプログラム] open (5,file='input.dat') open (6,file='output.dat') /入出力用のファイルを開く call input(parameter1) /各サブルーチンで有限要素法を実行 call bound(parameter2) call matrix(parameter3) call solve(parameter4) call output(parameter5) close (5) /入出力用のファイルを閉じる close (6) stop end

  • MacでFortranプログラミングをするには・・・

    当方、Windowsユーザーですが、最近、単なる興味本位でMacに買い換えようと考えています。 通常、WindowsでFortranのプログラミングを行う際は、visial fortranのようなコンパイラで、コンパイルして実行する訳ですが、Macの場合もコンパイラを使うのですか? また、いろいろ複数のソースファイルを結合させて一つの実行ファイルを作る際、リンカーを使って一つの実行ファイルを作るわけですが、そういうこともできますか?

  • FORTRANについて(初心者です)

    FORTRANを使って数値解析をやりたいと考えています。 先輩からの引継ぎでプログラムを使う事になったのですが、ソースプログラムはなく、実行ファイルと入力ファイルのみあります。 このプログラムを実行したのですが、エラーが出てきてしまいます。もちろん入力した数値や文字に問題はありません。全くの初心者で申し訳ないのですが、ソースプログラムがないと実行できないのでしょうか? ちなみにエラーは以下のように出ます。 Starting of プログラム名. Reading the input file. input file [./入力ファイル名] is selected. 入力ファイル名 format error!!

  • fortranの実行について

    fortran77で、実行すると、 list in: end of file apparent state: unit 1 named syoki.txt last format: list io lately reading direct formatted external IO Aborted (コアダンプ) とエラーが出てしまうのですが、どうすればいいでしょうか。すみません、どなたかおねがいします。

  • Fortranについて,fatal error LNK1181

    Fortranをインストールしてプログラムをコンパイルしようとすると,以下のエラーが出ます. LINK : fatal error LNK1181: cannot open input file "C:\DOCUME~1\dfor.lib" 正常に作動させるにはどうしたらいいでしょうか.何か足らないものがあるのでしょうか.以下のフォルダに, インストールCDに入っているLIBファイルをすべてコピペしてみたのですが,変わりなしです. C:\Program Files\Microsoft Visual Studio\DF98\LIB OSはXP,今回インストールをしたFortran及びプログラム作成をしたFortranは,共にVisual Fortran 6.0です.何か打開策があれば助言お願いします.

  • Fortran90/Fortran95→Fortran77

    大学の授業でFortranを使ったプログラミングを勉強しています。 以下の文が大学のPCに入っているコンパイラでは問題なくコンパイルでき実行できるのですが、家のPCだとコンパイルすることが出来ません(以下の文でエラーが出ます) 大学のPCの開発環境はFujitsu-FORTRANだと思います(^ ^; 家のPCはSalford FTN77 Personal Edition CompilerとCPad for Salford FTN77を組み合わせて使用しています なぜエラーがでるのか自分なりに考えた結果、Fortran90/Fortran95のプログラムをFortran77のコンパイラでコンパイルしているからだと思います(全くの勘違いだったら指摘して下さい) Fortran90/Fortran95の開発環境がフリーで整えばいいのですが、見つからないのでプログラムを修正したいと思います そこで、力を貸していただきたいのです 前置きが長くなりましたが、エラーが出る文は以下のところです open(8,file='freq_ex13.dat',action='write',status='replace') ここを、Fortran77のコンパイラでコンパイルできるようにアドバイスを下さい よろしくお願いします

  • fortranの限界って・・・

    こんにちは。 プログラミングはFORTRANくらいしかやった事のない上にあまり得意ではありません。 現在、3列に並ぶ237万行ほどのデータを扱っています。 この3列目のみ、つまり237万個の数字を、 1行あたり14個で並び替えしたいと思っています。 FORTRAN使用です。OSはWinXPです。 ところが、 読み込む時点で237万行のデータ(約1GB)が読み込めません。 テストで数行の軽いデータならうまく回ります。 237万行のデータでは回らないのは、データの行数に限度があるためなのでしょうか? それとも単純なプログラムミス? どなたかお詳しい方、ご教授お願いします。 もし、OSのせいだとしたら、LINUX等ではうまく回るのでしょうか? その場合、WinとLINUXではプログラミングどう違うかも教えて頂けないでしょうか? WinのプログラムはLINUXではそのまま動きませんでしたもので・・・ 宜しくお願いします。

  • WIndowsでのFortranプログラムのエラー

    Fortranで作られたらしいプログラムをドス窓で実行させた時に「Cannot Open File "F90.EER" #・・」のようなエラーメッセージが出てしまいプログラムが止まります。 これはどういう意味でどうすればよろしいのでしょうか?

専門家に質問してみよう