Ich möchte den Fortschritt einer Berechnung, die mit einer DO-Schleife durchgeführt wurde, auf dem Konsolenbildschirm anzeigen. Ich kann so den Fortschritt Variable an das Terminal ausdrucken:Wie formatiere ich eine PRINT oder WRITE-Anweisung, um die aktuelle Zeile auf dem Konsolenbildschirm zu überschreiben?
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 ist:
10,00 20,00 30,00 40,00 50,00 60,00 70,00 80,00 90,00 100,00
Alle in derselben Zeile, nur vom Konsolenfenster umschlossen.
Die ADVANCE = ‚Nein‘ Argument und die TL10 (Tab links so viele Leerzeichen) Bearbeitungsbeschreibung funktioniert gut Text auf der gleichen Linie zu überschreiben, z.B. die Ausgabe des folgenden Code:
WRITE(*, 100, ADVANCE='NO') 100, 500
100 FORMAT(I3, 1X, TL4, I3)
ist:
Statt:
Wegen der TL4 Bearbeitungsbeschreibung.
Aus diesen beiden Instanzen kann man schließen, dass die WRITE-Anweisung nicht überschreiben kann, was von einer anderen WRITE-Anweisung oder von einer vorherigen Ausführung derselben WRITE-Anweisung (wie in einer DO-Schleife) geschrieben wurde.
Kann das irgendwie überwunden werden?
Ich verwende den FTN95-Compiler auf Windows 7 RC1. (Das Setup-Programm des G95-Compilers Bluescreens Windows 7 RC1, sogar dachte, es funktioniert gut auf Vista.)
Ich weiß über die Frage Supressing line breaks in Fortran 95 write statements, aber es funktioniert nicht für mich, weil die Antwort auf diese Frage neue Ausgabe bedeutet wird zur vorherigen Ausgabe in derselben Zeile hinzugefügt; anstelle eines neuen Ausgangs, der die vorherige Ausgabe überschreibt.
Vielen Dank im Voraus.
Mit welchem Compiler und Betriebssystem arbeiten Sie? – DigitalRoss
@digitalross, Compiler = FTN95, OS = Windows 7 RC1 – systemovich
Vielleicht sollten Sie eine Antwort akzeptieren? –