1

私はこのコードを長い間検索してきましたが、これが機能しない理由を見つけることができないようです...部外者の見解が役立つかもしれません。

!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

同じコードが 2 回目に失敗する原因について何か考えはありますか?

4

1 に答える 1

1

おそらくそこにいくつかのエラーチェックをスローする必要があります。入れてみてください

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

そしてどこかに置く

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

また、fortran で空きユニット番号を取得するなど、ハードコーディングするのではなく、最初に使用可能な fortran ユニット番号をチェックする関数を作成することをお勧めします。

于 2013-04-09T20:56:23.620 に答える