2013-04-09 84 views
1

我一直在搜索此代碼很長一段時間,似乎無法找到原因,這不工作......也許一個局外人的觀點可以幫助。FORTRAN 90打開文件問題

!I open File 1 

!Opening File 1 
open(2, File='File1.txt',status='old') 
read(2,*)!File 1 header 

PRINT*,'File1.txt read' 

!Read it 

DO b=1,nb 
    DO i=1,ni(b)   
     READ(2,*)dum(b,i),Qr(1,xbu(b),i),hr(1,xbu(b),i),Ar(1,xbu(b),i),Pr(1,xbu(b),i),dx(xbu(b),i),sx(xbu(b),i) 
    END DO 
END DO 

而且很好。我已經印刷了,它都在那裏。但是,當我去到文件2,做同樣的事情:

PRINT*,'Reading File 2 ' 
open(3, File='File2.txt',status='old') !<- It stays here forever. 
PRINT*,'File2.txt read' 

的文件是普通的TXT,像這樣

文件1的實際值:

11 0 0 0 0 6500 1.2 

文件2

11 0.00 0.00 0.00 0.0 

有什麼想法可能導致相同的代碼第二次失敗?

+1

單位數小於10可能是危險的。 – 2013-04-10 22:33:17

回答

1

你或許應該拋出一些錯誤在那裏檢查,嘗試把

open(3, File='File2.txt',status='old',iostat=io_status, err=100) 

而且某處放

100 write(*,*) 'io status = ', io_status 
stop 

我還建議編寫,檢查第一個可用的FORTRAN單位數的函數,而不是硬編碼它,像getting free unit number in fortran

+0

如果你正在檢查'iostat'(簡單的'if(io_status/= 0)...'語句''open''後面的語句''err'是非常多餘的。另外它非常讓人想起固定格式的F77語法。 – 2014-01-31 18:03:52