Thursday, October 18, 2018

Escritura en archivos de salida


Las cuestiones de leer y escribir en un archivo los resultados de un programa en Fortran siguen ciertos pasos, en el siguiente programa se explicará una forma particular en la cual se escriben los cálculos realizados en un archivo de texto, el cual se puede abrir fácilmente con un editor/lector de texto, aunque por simplicidad sólo se está tomando un cierto estilo de formato.


El código a usarse es el siguiente:

PROGRAM muestra_101

  IMPLICIT NONE
  INTEGER :: i
  REAL       :: a, b

  OPEN (UNIT = 1, STATUS = 'REPLACE', FILE = 'Salida.txt')
 
  a = 2.5
 
  DO i = 1, 5
    b  = (a - 1.5 * i) ** i
    WRITE (1, 118) i, b
  END DO

  118 FORMAT ('b(', I2, ')=', F12.6, 4X, '::', 2X, '::')
  
END PROGRAM muestra_101
En el código presentado se hace uso de un bucle 'DO', además se usarán los comandos 'OPEN', 'WRITE' y 'FORMAT'.

Fig.: Código del programa 'muestra_101.f95'.

El comando 'OPEN' es el encargado de abrir, crear o reescribir en un archivo externo, el tipo de archivo será especificado según la extensión dada en el nombre del archivo de salida.
La parte que dice 'UNIT' se encarga del nombre código con el que se escribirá al usar el comando 'WRITE', que se verá luego. Lo de 'STATUS' indica lo que se hará con el archivo, lo cual puede ser abrirlo para su lectura o reemplazar su contenido, en este caso se le indica que se reemplazará el contenido del archivo con 'REPLACE'.


Finalmente se indica el nombre y la extensión del archivo en 'FILE'; por el momento sólo se probará con archivos 'TXT' y 'CSV', pero existe la posibilidad de escribir en otro tipo de archivos. Si el archivo no existe, el comando OPEN se encargará de que se cree un nuevo archivo en el que se esbrirán los datos de salida.


Los comandos 'WRITE' y 'FORMAT' se deben ver en conjunto, e incluso se debe añadir que también se usa parte de una indicación establecida en el comando 'OPEN'.

El comando 'WRITE' se encarga de anotar lo que se indique luego del final del paréntesis de instrucciones, en este caso es anotar los valores de 'b' y de 'i'. Las instrucciones dentro del  paréntesis de instrucciones indican dos cosas, el primer número indica la unidad en la que se va a escribir los valores de 'b' y de 'i', que en este caso indican la unidad '1', la cual corresponde al archivo "Salida.txt", si hubiesen otros archivos de salida, se debe ser cuidadoso al momento de dar esta indicación, o se pueden obtener enredos innecesarios; el segundo número indica el tipo de formato que se le aplicará a los valores previamente mencionados, el formato del ejemplo indica '118', el cual se encuentra en la línea de código que inicie con ese número.

Para el ejemplo tenemos ciertas cosas como:

- Lo que está entre comillas, como 'b(', se comporta similarmente a lo que pasaba al usar el comando PRINT, asi que lo que está en comillas se escribirá tal y como lo que contengan.

- El orden en el que se expresan las variables  numéricas será el que se tome como referencia al momento de usar el formato establecido, en este caso a 'i' le corresponde 'I2', y 'b' le toca 'F12.6'.

- 'I2' indica dos cosas, para su interpretación se deben tomar por separado  sus componentes, la letra 'I' esta indicando que la variable 'i' se tratará como si fuera un número entero, por lo cual no existe el uso de decimales, y el '2' indica la longitud de caracteres a usarse, o el número de dígitos a reservarse para anotar el valor numérico de 'i', lo que quiere decir que solo se pueden escribir números enteros de dos dígitos.

- 'F12.6' indica varias cosas, la 'F' señala que la variable 'b' podrá ser escrita con decimales y de forma común (como 0.002416); el '12' indica el tamaño máximo reservado para escribir el valor numérico de 'b', en este caso se tiene un máximo de 12 dígitos; y finalmente se tiene a '.6', lo cual indica la precisión decimal que se usará para escribir los valores de 'b', por lo que sólo se escribirá con seis cifras significativas (por ejemplo, si b = 0.123456789, al usar 'F12.6' sólo se escribirá: b = 0.123456).

- Lo que se indica con '4X' y '2X' es la cantidad de espacios a usarse, la 'X' indica espaciamiento, mientras el número que precede a 'X' indica el número de espaciamientos a usarse, de este modo, '4X' indica cuatro (04) espaciamientos, y '2X' indicará dos (02) espaciamientos.


No comments:

Post a Comment