io - ejemplos - lista completa de comandos linux pdf
Leer entero desde el final del archivo con `` Formato faltante para la transferencia de datos FORMATTED hecho` (2)
Como no lo especifica explícitamente, su instrucción open
asume un archivo formatted
(texto). Cuando lee un archivo de texto, también debe proporcionar un formato:
read(18, *) i1
Alternativamente, si su archivo unformatted
está unformatted
(binario), abra su archivo en consecuencia:
open (unit=18, file=''resLast'', status=''old'', action=''read'', form=''unformatted'')
Estoy actualizando un programa Fortran para mis necesidades. El programa compila usando f95
y gcc
versión 4.1.2 (sé que es antiguo, pero no puedo actualizarlo). Quiero leer los parámetros de un archivo y pruebo esto a través de
inquire (file="resLast", exist=resExist)
if (readStart.eq.1.and.resExist) then
open (unit=18,file=''resLast'', status=''old'', action=''read'')
read (18) startConf
read (18) avlength, stdlength, avenergy
read (18) i,h2(1)
read (18) i,h2(2)
read (18) i,h2(4)
read (18) i,h2(5)
read (18) i,h2(8)
read (18) i,h2(9)
read (18) i,h2(13)
read (18) i,h2(16)
read (18) i,h2(17)
read (18) i,h2(18)
read (18) i,h2(20)
read (18) i,h2(25)
read (18) i,h2(32)
close (18)
else
startConf = 0
do i=1,32
h2(i)=0
comh2(i)=0
enddo
avlength=0d0
stdlength=0d0
avenergy=0d0
endif
El archivo de entrada se ve como
0
196.090732114834 38451.5752213317 53.4452884569457
1 9.188750409521163E-004
2 4.548226133920252E-004
4 8.704101492185146E-005
5 2.175445697503164E-004
8 4.992044341634028E-005
9 2.108949411194772E-005
13 4.304789035813883E-005
16 4.693072696682066E-005
17 8.976260141935199E-005
18 2.737747854553163E-005
20 5.637826689053327E-005
25 3.860405195155181E-005
32 3.193027441739105E-005
Cuando intento ejecutar esto obtengo un error
Fortran runtime error: Missing format for FORMATTED data transfer
done
Lo que apunta a la primera línea de read
. La startConf variable, as well as
i`` es un número entero. El resto de las variables son de doble precisión.
He usado este método para leer datos en enteros previamente (incluso en el mismo código) sin problemas, ¿dónde está mi falla actual?
leer (18, *) es una mejor opción. puedes probar esto