DOループで行った計算の進行状況をコンソール画面に表示したい。次のように、進行状況変数を端末に出力できます。
PROGRAM TextOverWrite_WithLoop
IMPLICIT NONE
INTEGER :: Number, Maximum = 10
DO Number = 1, MAXIMUM
WRITE(*, 100, ADVANCE='NO') REAL(Number)/REAL(Maximum)*100
100 FORMAT(TL10, F10.2)
! Calcultations on Number
END DO
END PROGRAM TextOverWrite_WithLoop
コンソール画面での上記のコードの出力は次のとおりです。
10.00 20.00 30.00 40.00 50.00 60.00 70.00 80.00 90.00 100.00
すべてが同じ行にあり、コンソール ウィンドウによってのみラップされます。
ADVANCE='No'引数とTL10 (タブが非常に多くのスペースを残した) 編集記述子は、同じ行のテキストを上書きするのにうまく機能します。たとえば、次のコードの出力です。
WRITE(*, 100, ADVANCE='NO') 100, 500
100 FORMAT(I3, 1X, TL4, I3)
は:
500
それ以外の:
100 500
TL4 編集記述子のためです。
これら 2 つの例から、WRITE ステートメントは、別の WRITE ステートメントによって、または同じ WRITE ステートメントの前の実行 (DO ループなど) によって書き込まれたものを上書きできないと結論付けることができます。
これはどうにか克服できるでしょうか?
Windows 7 RC1 で FTN95 コンパイラを使用しています。(G95 コンパイラのセットアップ プログラムは Windows 7 RC1 をブルースクリーンしますが、Vista では問題なく動作します。)
Fortran 95 書き込みステートメントで改行を抑制するという質問については知っていますが、その質問に対する答えは、同じ行の前の出力に新しい出力が追加されることを意味するため、私にはうまくいきません。新しい出力が以前の出力を上書きする代わりに。
前もって感謝します。