数値積分を実行する FORTRAN コードがあります。計算されたすべてのデータは、外部ファイル (data.out) に書き込まれます。ここにコードの簡単なスケッチがあります
OPEN(UNIT=10,FILE='data.out')
DO i=1,n
........
WRITE(10,'(7(E22.16,1x))')a,b,c,d,e,f,g
........
ENDDO
CLOSE(10)
数値積分が終了するまで、プログラムは長時間 (約 1.5 時間) 実行され続けます。実行中に、結果を .out ファイルに表示したいと思います。ただし、.exe の実行中に .out ファイルを開こうとすると、次のメッセージが表示されます。「ドキュメント data.out は別のアプリケーションで使用されているため、アクセスできません。」では、実行中に .out ファイルを開く方法はありますか? 出力値を観察することは重要です (上記の例のように 7 つだけではありません)。そのため、それらを画面出力で送信するのは便利ではありません (コードの速度が大幅に低下します)。よろしくお願いします。
* 編集 *
これは、上記のケースと非常によく似た別のシナリオです。ここで、統合ルーチンは入力ファイルから初期条件を読み取り、出力を別の外部ファイルに書き込みます。以下に、対応するコードのスケルトンを示します
OPEN(UNIT=10,FILE='input.par',STATUS='UNKNOWN')
2 READ(10,*,END=1) x_0,y_0
! INTEGRATION LOOP
DO i=1,n
........
ENDDO
OPEN(UNIT=12,FILE='data.out')
WRITE(12,'(7(E22.16,1x))')a,b,c,d,e,f,g
GOTO 2
1 CLOSE(10)
CLOSE(12)
そのため、ルーチンは UNIT 10 を開き、初期条件を読み取り、積分を実行し、積分の最後に出力を UNIT 12 に書き込みます。次に、別の初期条件のセットを取得し、それがなくなるまで同じ手順を繰り返します。 UNIT 10 の初期条件。繰り返しますが、UNIT 12 を開いて監視できるようにしたいです。あなたのアプローチを試しましたが、この場合は適切に機能しません。UNIT 12 はいつでも開くことができますが、ルーチンはそこにすべての出力を書き込むわけではありません。実際、初期条件の最後のセットの出力のみを書き込みます。何か案は?あなたのアプローチを少し変更するだけでうまくいくと強く信じています。