コンソール画面で、DOループで行われた計算の進捗状況を表示します。私はこのような端末に進捗変数を印刷することができる:コンソール画面の現在の行を上書きするためにPRINTまたはWRITE文をフォーマットするにはどうすればよいですか?
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 =「いいえ」引数とTL10(タブは非常に多くのスペースを残して)編集記述子は、例えば、同じ行にテキストを上書きするために適しています次のコードの出力:
WRITE(*, 100, ADVANCE='NO') 100, 500
100 FORMAT(I3, 1X, TL4, I3)
です:
の代わりに:のでTL4編集記述子の
。
これらの2つのインスタンスから、WRITEステートメントは、別のWRITEステートメントまたは同じWRITEサテイメント(DOループと同じ)の以前の実行によって上書きされないと結論づけることができます。
これは何とか解決できますか?
Windows 7 RC1でFTN95コンパイラを使用しています。 (G95コンパイラのセットアッププログラムは、Windows 7 RC1をbluescreenしても、Vista上で正常に動作すると思っていました)
私は質問Supressing line breaks in Fortran 95 write statementsについて知っていますが、その質問に対する答えは新しい出力を意味するので同じ行の前の出力に追加されます。以前の出力を上書きする新しい出力の代わりに。
ありがとうございます。
あなたはどのコンパイラとOSをお使いですか? – DigitalRoss
@ digitalross、コンパイラ= FTN95、OS = Windows 7 RC1 – systemovich
あなたは答えを受け入れるべきでしょうか? –