• ベストアンサー

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

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

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

  • ベストアンサー
回答No.2

入力データファイルの書き方が間違っていると思われます。 考えられるケースはこのようなものです。 ・データ項目の桁が大きすぎる。 ・データ項目数の過不足 ・データ行数の過不足 ・小数点の有無およびその位置(小数点以下の桁数) ・整数と浮動小数点数の取り違え ・空白とタブの取り違え ・全角文字と半角文字の取り違え 等々です。 この他にもまだあると思われるのですが、決定的なことはデータ記述の規則を記述した説明書がないことでしょう。まず、これを捜すことにつきます。 説明書がなく、口伝による使用法であれば、以前に利用していた方から聞き出すしかないのですが、記憶していらっしゃるかどうか…。 説明書がない場合はソースプログラムの解読が必要になってきますが、これは望めないのですね。 パンチカードでデータを入力していた時代のプログラムであれば、80桁毎に改行するのが普通です。 入力ファイルを印刷したとき、きれいに並んでいるのでしょうか?

trance79
質問者

お礼

回答いただきありがとうございます。 No.2さんに指摘していただいた所はもう一度明日確認してみたいと思います。 >入力ファイルを印刷したとき、きれいに並んでいるのでしょうか? すみませんが、muleで書かれた文の印刷の仕方がわかりません。

その他の回答 (4)

  • ultraCS
  • ベストアンサー率44% (3956/8947)
回答No.5

#3です リスト型入力の場合、データ型と入力するデータの型の一致が厳密に要求されます。整数型が来るべき場所で0~9の半角数字と+-以外の文字(小数点も駄目)があったり指数があってはいけません。 また、要素数が足りないときは勝手に次の行を読みに行きます。で、次に読むときはその次の行になるので、ここで一行余計に進んでしまい、ずれてしまうことがあり得ます。 FreeBSDのFORTRANコンパイラは使った事がないので正確なことは言いかねるのですが、CR/LFの違いなどは大丈夫でしょうか。 ちゃんと動く入力ファイルが、今あるのなら、しらみつぶしにチェックするしかないかも。というか、そのファイルだとちゃんと動きますか。

trance79
質問者

お礼

お礼が遅れてしまい申し訳ございませんでした。 問題のファイルは無事解決しました。 回答していただいたみなさまに大変感謝しております。本当にありがとうございました。

回答No.4

おそらくUNIXをご使用なのだと思いますが、muleで書かれたファイルは、完全なテキストファイルでしょうか? 例えば、 ┌───┐ │123.45│ └───┘ と(改行なしで)記述すれば、ファイルサイズは6byteです。また、 ┌──────┐ │123.45│ └──────┘ と(改行なしで)記述すればファイルサイズは12byteになります。 以前からデータをmuleで作成し、それが読めて正しく動作していれば問題はないのですが…。

trance79
質問者

お礼

2度も回答いただきありがとうございます。 印刷ですが、本に載っているコマンドとは異なり、 % t2ps ファイル名 | lpr でプリントアウトできました。 しかし、印刷したものを見てもどこが間違っているのか全然わかりません・・・。

  • ultraCS
  • ベストアンサー率44% (3956/8947)
回答No.3

既に出ていますが、入力ファイルが指定された書式になっていないのが原因だと思います。 作成されたときにはちゃんと動いていたと思うので、そのときの入力ファイルと今回使った入力ファイルの中身を、#2の方のケースを参考に比較してみてください(特に位置ずれ)。 なお、入力書式については、書式付き入力を行っているのであれば、FORMAT文の内容はオブジェクトの中に可読文字列として埋め込まれています。 オブジェクトをdumpやstringsで調べて見ては如何でしょう。"()"にはさまれて、"Fx.x"、"Ix"、"Ax"とかがあるのがそうです、xにはすべて数字が入ります。なお、先頭にに"1H "などの文字列指定があれば、それは出力書式の可能性が高いです(ダブルクォーテーション"はわかりやすくするために付けただけなので注意してください)。 また、リスト型入力(スペース区切りでデータを羅列した形式)であれば、リストの数が足りないのかも知れません。 できれば、システムとOS、わかれば、FORTRANコンパイラの種類(77か90くらいは)を補足するともう少し詳しい情報が出るかも知れません。

trance79
質問者

お礼

回答ありがとうございます。 文字に関しては全く変えていないので、やはり数値に問題があると思うのですがわかりません。 使っているプログラムはリスト型入力のタイプのようです。 >できれば、システムとOS、わかれば、FORTRANコンパイラの種類(77か90くらいは)を補足するともう少し詳しい情報が出るかも知れません。 FORTRAN77を使っています。OSはUNIX(FreeBSD)です。何かヒントになりますでしょうか?

  • kamejiro
  • ベストアンサー率28% (136/479)
回答No.1

オブジェクトがあればソースがなくても動作すると思います。けれど、ソースが無いのは痛いですね。原因が見えません。 私もFORTRANは15年以上前に少し触れただけなのですが、 READ文でデータを読み込みます。その際に変数の桁数及び形式(整数か実数か文字列か)を指定します。それがFORMAT文です。READ文で指定した文番号をFORMAT文の頭に付けます。 想像でモノを言って申し訳ないのですが、 入力ファイル名 format error!! と出ているのは、FORMAT文で指定した変数の桁数と形式に誤りがあるようにも見えます。 使用しているFORTRANのマニュアル等にエラー集などの記載はありませんか?

trance79
質問者

お礼

すぐに回答いただき本当にありがとうございます。 先輩はもう卒業しており、教授含め他の講師もFORTRANの知識がないので、相談する人がいなくて困っています。 >FORMAT文で指定した変数の桁数と形式に誤りがあるようにも見えます。 うーん、そうなんですか。何度も数値と文字は確認したのですが、また明日学校に行って確認してみます。 >使用しているFORTRANのマニュアル等にエラー集などの記載はありませんか? 現在、Fortran77プログラミング(原田賢一著 サイエンス社)を借りていますが、これには載っていませんでした。 エラーを載せた本があるかどうか、図書館で調べてみます。

関連するQ&A

  • FORTRANでGUIプログラム

    FORTRANでGUIプログラム FORTRANでGUIを持ったWINアプリを作成することは不可能でしょうか? 現在自作でFEMプログラムをつくっています。入力ファイルはその度簡単なプログラムをつくって作成するか,汎用のプリプロセッサを利用しています。解析結果は自作で応力図などをeps形式で可視化してはきだすようにしていますが,市販のプログラムのように,画面上で節点や要素を作成していき,それがリアルタイムに画面に表示されて,入力ファイル作成から解析,後処理までをすべてマウス操作でできるようにしたいです。 C++ではできることは分かるのですが,FORTRANしか使ったことないので,FORTRANで作りたいと思っているのですが,やはり数値解析以外のことはFORTRANでやるのは無理なのでしょうか?FORTRANでプリプロセッサが自作できるかどうか,もし可能なら参考書籍などがあれば教えていただきたいです。よろしくお願いします。

  • Fortran90 初心者です

    Fortran初心者です。 「3-1=」を文字列データとして入力された式の答えを数値で出力するプログラムをつくりたいのですがよくわかりません。どなたかヒントください。御願いします。

  • FORTRANとC++の連動について

    私は,Fortranを用いて解析の業務をしている,プログラム初心者です。 購入したのは,Intel Visual Fortran8.0(VF)ですが,Windows環境でコンパイルリンクするには,Microsoft Visual C++ .NET 2003(VC++)が必要ということで,こちらも購入しました。 普段は,Fortranのコンソールで ifort **.f といったコマンドでコンパイルリンクし,実行しているだけです。 これからは,VC++の方に移行していきたいと考えていますが,しばらくはFortranで作成したサブルーチンを有効活用したと考えています。 そこで,VC++ベースのメインプログラムからFortranのサブルーチンを呼び出すプログラムの作成方法,コンパイルリンク方法をご教授ください。よろしくお願いします。 (1)ソースにどう記述するか? void CMyDlg::OnBnClickedOk() { ここで,FORTRANのサブルーチンを呼び出したい。     Fortranなら call subroutine( a, b ) } (2)コンパイルするときは, Visual Studio開発環境で,コンパイル→実行で良いのか? それとも,あらかじめVC++とVFで.objファイルを作成する必要があるのか?

  • FORTRANシミュレーション

    Fortranを使った数値解析を行いたいのですが参考になる資料を探しています。 具体的には非圧縮性の水の流れ場の中に円柱をおきその流れ場の解析のプログラムを参考にさせていただきたいのですがその情報があるサイトや文献はないでしょうか?

  • fortranについて

    fortranでプログラムをコンパイルし、実行したところRun-time Errorと出てきて、00401000 main [+0052]と書いてありました。何が原因なんでしょうか?

  • 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 (コアダンプ) とエラーが出てしまうのですが、どうすればいいでしょうか。すみません、どなたかおねがいします。

  • 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について,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です.何か打開策があれば助言お願いします.

  • FORTRANの実行エラーについて

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

  • fortranでプログラムを作りたいのですが

    今学校で、txtファイルの数値データを数式処理しているのですが、そのtxtファイル数が多く、一つ一つエクセルで開いてやるのがとても面倒くさくて(エクセルの中ではマクロで処理しているが)困ってます。  そこでfortranでプログラミングして処理しようかと思っているのですが、それに関してわからない事があります 1.fortranのopen文はどんなファイルでも開けるか? 2.またfortranで開いて、計算処理できるファイルはtxt datなどのファイルしかないのか? 3.ファイル名が1~100のように順番になっている時1~100まで順番で開いて、それぞれに計算処理出  来るようなプログラムは可能か?

専門家に質問してみよう