2012-05-12 9 views
0

内のデータ読み出しは、私が使用して私のFORTRAN 90のプログラムに初期データファイルを読み込むしようとしていたときにEOFが発生しました:FORTRAN

!---- Open Initial Data File ----
open(50,file=FILE_INITIAL)

!---- Read Status ----
read(50,'(a3)') tmp3

私は最初の行を読むための試みで、次のエラーを取得

Fortran runtime error: End of file

これを 'end ='ステートメントで修正できますが、次の行のデータを読み取ることができません。

このコードは別のサーバーでうまくいきましたが、それを実行しようとしている別のサーバーが機能していないことに注意してください。次のように

ファイルの内容は以下のとおりです。

CNT$
0.0000000E+00$
105000$
1 1 0.6000000E+19 0.2302255E+06 -0.8082365E+06 -0.1359744E+07 -0.1569188E+03 0.1889497E+03 0.1642805E+01 0.1185276E+06 0.0000000E+00 0.0000000E+00 0.1317501E+07$
2 1 0.6000000E+19 0.4091322E+06 -0.7740022E+06 -0.1390028E+07 -0.1547697E+03 0.1907412E+03 0.1055918E+01 0.1165642E+06 0.0000000E+00 0.0000000E+00 0.1320302E+07$
3 1 0.6000000E+19 0.5670843E+06 -0.7934081E+06 -0.1364818E+07 -0.1560887E+03 0.1897379E+03 0.1457756E+01 0.1170522E+06 0.0000000E+00 0.0000000E+00 0.1214425E+07$

+0

ファイルの内容は何ですか? – bdforbes

+0

上記の入力ファイルを表示します。最初のものに似た2つのreadステートメントがあり、次にバルクデータのループがあります。しかし、プログラムは最初の行で失敗します。表示されているものは、vim:set listから貼り付けられています。 – ricitron

+0

2台のコンピュータは同じOSですか?あなたは正しいファイルを開いていると確信していますか? –

答えて

0

あなたはそれがないあなたの信念にもかかわらず、開こうとしているファイルが存在しないことを私に示唆報告した症状。ファイルの名前と場所が正しいことを確認してください。あなたがオープンしようとしている名前のファイルがサイズ0で作成されているかどうかを確認するには、プログラムの作業ディレクトリを調べます。存在しないファイルを開くと、Fortranは通常空のファイルを作成します。

この推測が間違っている場合は、INQUIREルーチンを使用して状況を把握し、STATUSとOPENの他の引数を試してみてください。

+0

ファイルが存在しない場合は、別のエラーが発生します。また、end = 550引数を追加して550文を続けて入力すると、プログラムは入力ファイルの最初の行を読むことができます(ただし、2番目のread文は表示されません)。 – ricitron

+0

inquireからのほとんどの出力は普通のようです:順次、フォーマット、リトルエンディアン、直接。しかしRECL = -1。不思議ですか? – ricitron

0

レコードに適合する1D配列がレコードよりも長い場合は、ファイルの最後まで次のレコードで埋められます。私の推測では、あなたは、レコードの終わりに停止するにはeor=450を指定し、次の行は450などで読む必要があります。これを行う場合は、配列の未書き込みエントリにランダムなデータがないように、0または-1のようなものを最初に配列に書き込んでください。

+0

彼は既に最初の行を読むのに問題があるようです。だからこそ、彼は長さ3の文字「a3」を読みます。 OPのコードには配列の読みはありません。 –

+0

それは本当の@VladimirFです、そして、私は十分な外観を読んでいませんでした。しかし、それは間違っている可能性があります。たとえば、 'character(100)tmp3'の代わりに' character tmp3(100) 'を実行すると、配列が与えられ、ファイルが合計で100個未満の場合、この動作は実現します。 –