Quiero mostrar el progreso de un cálculo hecho con un bucle DO, en la pantalla de la consola. Puedo imprimir la variable de progreso a la terminal de la siguiente manera:¿Cómo formateo una instrucción IMPRIMIR o ESCRIBIR para sobrescribir la línea actual en la pantalla de la consola?
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
La salida del código anterior en la pantalla de la consola es:
10,00 20,00 30,00 40,00 50,00 60,00 70,00 80,00 90,00 100,00
Todos en la misma línea, envueltos solo por la ventana de la consola.
El ADVANCE = 'no' argumento y el TL10 (pestaña dejó tantos espacios) descriptor de edición funciona bien para sobrescribir el texto en la misma línea, por ejemplo, la salida del siguiente código:
WRITE(*, 100, ADVANCE='NO') 100, 500
100 FORMAT(I3, 1X, TL4, I3)
es:
En lugar de:
Debido a la TL4 descriptor de edición.
De estas dos instancias se puede concluir que la instrucción WRITE no puede sobrescribir lo que ha sido escrito por otra instrucción WRITE o por una ejecución previa del mismo estado de ESCRITURA (como en un DO-loop).
¿Se puede superar esto de alguna manera?
Estoy utilizando el compilador FTN95 en Windows 7 RC1. (El programa de instalación del compilador G95 bluescreens Windows 7 RC1, incluso si funciona bien en Vista.)
Sé de la pregunta Supressing line breaks in Fortran 95 write statements, pero no funciona para mí, porque la respuesta a esa pregunta significa una nueva salida se agrega a la salida anterior en la misma línea; en lugar de una nueva salida sobrescribiendo la salida anterior.
Gracias de antemano.
¿En qué compilador y sistema operativo está usted? – DigitalRoss
@digitalross, compilador = FTN95, sistema operativo = Windows 7 RC1 – systemovich
¿Tal vez debería aceptar una respuesta? –