Desidero visualizzare l'andamento di un calcolo eseguito con un ciclo DO, sullo schermo della console. Posso stampare la variabile di avanzamento al terminale come questo:Come si formatta un'istruzione PRINT o WRITE per sovrascrivere la riga corrente sullo schermo della console?
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
L'uscita del codice di cui sopra sullo schermo della console è:
10,00 20,00 30,00 40,00 50,00 60,00 70,00 80,00 90,00 100,00
Tutti sulla stessa riga, avvolti solo dalla finestra della console.
Il ADVANCE = 'No' argomento e l'TL10 (scheda ha lasciato tanti spazi) descrittore di modifica funziona bene per sovrascrivere il testo sulla stessa riga, per esempio l'output del seguente codice:
WRITE(*, 100, ADVANCE='NO') 100, 500
100 FORMAT(I3, 1X, TL4, I3)
è:
Invece di:
A causa del descrittore TL4 modifica.
Da questi due casi si può concludere che l'istruzione WRITE non può sovrascrivere ciò che è stato scritto da un'altra istruzione WRITE o da una precedente esecuzione dello stesso WRITE satement (come in un DO-loop).
Questo può essere superato in qualche modo?
Sto utilizzando il compilatore FTN95 su Windows 7 RC1. (Il programma di installazione del compilatore G95 bluescreens Windows 7 RC1, anche pensato che funzioni bene su Vista.)
So della domanda Supressing line breaks in Fortran 95 write statements, ma non funziona per me, perché la risposta a questa domanda significa nuova uscita viene aggiunto all'output precedente sulla stessa linea; invece di un nuovo output che sovrascrive l'output precedente.
Grazie in anticipo.
In quale compilatore e sistema operativo si? – DigitalRoss
@digitalross, compiler = FTN95, OS = Windows 7 RC1 – systemovich
Forse dovresti accettare una risposta? –