- ベストアンサー
FORTRANについて(初心者です)
FORTRANを使って数値解析をやりたいと考えています。 先輩からの引継ぎでプログラムを使う事になったのですが、ソースプログラムはなく、実行ファイルと入力ファイルのみあります。 このプログラムを実行したのですが、エラーが出てきてしまいます。もちろん入力した数値や文字に問題はありません。全くの初心者で申し訳ないのですが、ソースプログラムがないと実行できないのでしょうか? ちなみにエラーは以下のように出ます。 Starting of プログラム名. Reading the input file. input file [./入力ファイル名] is selected. 入力ファイル名 format error!!
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
入力データファイルの書き方が間違っていると思われます。 考えられるケースはこのようなものです。 ・データ項目の桁が大きすぎる。 ・データ項目数の過不足 ・データ行数の過不足 ・小数点の有無およびその位置(小数点以下の桁数) ・整数と浮動小数点数の取り違え ・空白とタブの取り違え ・全角文字と半角文字の取り違え 等々です。 この他にもまだあると思われるのですが、決定的なことはデータ記述の規則を記述した説明書がないことでしょう。まず、これを捜すことにつきます。 説明書がなく、口伝による使用法であれば、以前に利用していた方から聞き出すしかないのですが、記憶していらっしゃるかどうか…。 説明書がない場合はソースプログラムの解読が必要になってきますが、これは望めないのですね。 パンチカードでデータを入力していた時代のプログラムであれば、80桁毎に改行するのが普通です。 入力ファイルを印刷したとき、きれいに並んでいるのでしょうか?
その他の回答 (4)
- ultraCS
- ベストアンサー率44% (3956/8947)
#3です リスト型入力の場合、データ型と入力するデータの型の一致が厳密に要求されます。整数型が来るべき場所で0~9の半角数字と+-以外の文字(小数点も駄目)があったり指数があってはいけません。 また、要素数が足りないときは勝手に次の行を読みに行きます。で、次に読むときはその次の行になるので、ここで一行余計に進んでしまい、ずれてしまうことがあり得ます。 FreeBSDのFORTRANコンパイラは使った事がないので正確なことは言いかねるのですが、CR/LFの違いなどは大丈夫でしょうか。 ちゃんと動く入力ファイルが、今あるのなら、しらみつぶしにチェックするしかないかも。というか、そのファイルだとちゃんと動きますか。
お礼
お礼が遅れてしまい申し訳ございませんでした。 問題のファイルは無事解決しました。 回答していただいたみなさまに大変感謝しております。本当にありがとうございました。
- koma1000nin
- ベストアンサー率30% (342/1133)
おそらくUNIXをご使用なのだと思いますが、muleで書かれたファイルは、完全なテキストファイルでしょうか? 例えば、 ┌───┐ │123.45│ └───┘ と(改行なしで)記述すれば、ファイルサイズは6byteです。また、 ┌──────┐ │123.45│ └──────┘ と(改行なしで)記述すればファイルサイズは12byteになります。 以前からデータをmuleで作成し、それが読めて正しく動作していれば問題はないのですが…。
お礼
2度も回答いただきありがとうございます。 印刷ですが、本に載っているコマンドとは異なり、 % t2ps ファイル名 | lpr でプリントアウトできました。 しかし、印刷したものを見てもどこが間違っているのか全然わかりません・・・。
- ultraCS
- ベストアンサー率44% (3956/8947)
既に出ていますが、入力ファイルが指定された書式になっていないのが原因だと思います。 作成されたときにはちゃんと動いていたと思うので、そのときの入力ファイルと今回使った入力ファイルの中身を、#2の方のケースを参考に比較してみてください(特に位置ずれ)。 なお、入力書式については、書式付き入力を行っているのであれば、FORMAT文の内容はオブジェクトの中に可読文字列として埋め込まれています。 オブジェクトをdumpやstringsで調べて見ては如何でしょう。"()"にはさまれて、"Fx.x"、"Ix"、"Ax"とかがあるのがそうです、xにはすべて数字が入ります。なお、先頭にに"1H "などの文字列指定があれば、それは出力書式の可能性が高いです(ダブルクォーテーション"はわかりやすくするために付けただけなので注意してください)。 また、リスト型入力(スペース区切りでデータを羅列した形式)であれば、リストの数が足りないのかも知れません。 できれば、システムとOS、わかれば、FORTRANコンパイラの種類(77か90くらいは)を補足するともう少し詳しい情報が出るかも知れません。
お礼
回答ありがとうございます。 文字に関しては全く変えていないので、やはり数値に問題があると思うのですがわかりません。 使っているプログラムはリスト型入力のタイプのようです。 >できれば、システムとOS、わかれば、FORTRANコンパイラの種類(77か90くらいは)を補足するともう少し詳しい情報が出るかも知れません。 FORTRAN77を使っています。OSはUNIX(FreeBSD)です。何かヒントになりますでしょうか?
- kamejiro
- ベストアンサー率28% (136/479)
オブジェクトがあればソースがなくても動作すると思います。けれど、ソースが無いのは痛いですね。原因が見えません。 私もFORTRANは15年以上前に少し触れただけなのですが、 READ文でデータを読み込みます。その際に変数の桁数及び形式(整数か実数か文字列か)を指定します。それがFORMAT文です。READ文で指定した文番号をFORMAT文の頭に付けます。 想像でモノを言って申し訳ないのですが、 入力ファイル名 format error!! と出ているのは、FORMAT文で指定した変数の桁数と形式に誤りがあるようにも見えます。 使用しているFORTRANのマニュアル等にエラー集などの記載はありませんか?
お礼
すぐに回答いただき本当にありがとうございます。 先輩はもう卒業しており、教授含め他の講師もFORTRANの知識がないので、相談する人がいなくて困っています。 >FORMAT文で指定した変数の桁数と形式に誤りがあるようにも見えます。 うーん、そうなんですか。何度も数値と文字は確認したのですが、また明日学校に行って確認してみます。 >使用しているFORTRANのマニュアル等にエラー集などの記載はありませんか? 現在、Fortran77プログラミング(原田賢一著 サイエンス社)を借りていますが、これには載っていませんでした。 エラーを載せた本があるかどうか、図書館で調べてみます。
お礼
回答いただきありがとうございます。 No.2さんに指摘していただいた所はもう一度明日確認してみたいと思います。 >入力ファイルを印刷したとき、きれいに並んでいるのでしょうか? すみませんが、muleで書かれた文の印刷の仕方がわかりません。