2012-05-12 30 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

我可以用「端=」語句解決這個問題,但我無法讀取數據的以下行。

請注意,此代碼已經在不同的服務器上效果不錯,但我想在其上運行到另一臺服務器無法正常工作。

文件內容如下:

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

我現在顯示上面的輸入文件。還有兩個讀取語句與第一個類似,然後是批量數據的循環。但程序在第一行失敗。顯示的內容是從vim:set list粘貼的。 – ricitron

+0

這兩臺電腦是否一樣?你確定你正在打開正確的文件嗎? –

回答

0

你報告建議我說,你試圖打開該文件不存在,儘管你確信它的症狀。檢查你的文件名稱和位置是否正確。查看程序的工作目錄,查看是否創建了大小爲0的名稱的文件 - 當您嘗試打開一個不存在的文件時,Fortran通常會'幫助'創建一個空文件。

如果這個猜測是錯誤的,請嘗試使用查詢程序搞清楚這些事情,可能與狀態和一些其他參數開放實驗。

+0

當文件不存在時,我得到一個不同的錯誤。另外,如果我添加了end = 550參數打開和550 continue語句之後,程序可以讀取輸入文件的第一行(但在第二個讀取語句中出現錯誤,未顯示)。 – ricitron

+0

查詢的大部分輸出看起來很正常:順序,格式化,小端,直接。但是RECL = -1。奇怪? – ricitron

0

如果一維數組應符合記錄比記錄更長的時間,這將充滿後續記錄,直到文件的末尾。我的猜測是,你有一個非常長的數組來放置這些東西。例如,你需要指定eor=450停止在記錄的末尾,在450你讀下一行。如果你這樣做,一定要先用其他的東西來填充數組,例如0或-1,這樣在數組的未寫入條目中就不會有隨機數據。

+0

他似乎在閱讀第一行時遇到了問題。這就是爲什麼他用'a3'讀取長度爲3的字符。 OP的代碼中沒有讀取任何數組。 –

+0

這是真的@VladimirF,我沒有看看仔細。這可能是一個誤會。例如,'character tmp3(100)'而不是'character(100)tmp3'會給出一個數組,並且如果文件總數小於100個值,這種行爲就會實現。 –