Ich möchte den Fortschritt einer Berechnung, die mit einer DO-Schleife durchgeführt wird, auf dem Konsolenbildschirm anzeigen. Ich kann die Fortschrittsvariable wie folgt auf dem Terminal ausgeben:
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
Die Ausgabe des obigen Codes auf dem Konsolenbildschirm lautet:
10.00 20.00 30.00 40.00 50.00 60.00 70.00 80.00 90.00 100.00
Alles in derselben Zeile, nur umhüllt vom Konsolenfenster.
En ADVANCE='Nein' und das Argument TL10 (tab links so viele Leerzeichen) funktioniert gut, um Text in derselben Zeile zu überschreiben, z. B. die Ausgabe des folgenden Codes:
WRITE(*, 100, ADVANCE='NO') 100, 500
100 FORMAT(I3, 1X, TL4, I3)
Ist:
500
Anstelle von:
100 500
Wegen des TL4-Bearbeitungsdeskriptors.
Aus diesen beiden Beispielen kann man schließen, daß die WRITE-Anweisung nicht überschreiben kann, was durch eine andere WRITE-Anweisung oder durch eine vorherige Ausführung derselben WRITE-Anweisung (wie in einer DO-Schleife) geschrieben wurde.
Kann dies irgendwie überwunden werden?
Ich verwende den FTN95-Compiler unter Windows 7 RC1 (das Setup-Programm des G95-Compilers zeigt einen Bluescreen für Windows 7 RC1, obwohl es unter Vista gut funktioniert).
Ich kenne die Frage Unterdrückung von Zeilenumbrüchen in Fortran 95-Schreibanweisungen aber bei mir funktioniert es nicht, weil die Antwort auf diese Frage bedeutet, dass eine neue Ausgabe zur vorherigen Ausgabe in derselben Zeile hinzugefügt wird, anstatt dass die neue Ausgabe die vorherige überschreibt.
Vielen Dank im Voraus.