lenguaje - Los datos del bloque FORTRAN parecen no estar funcionando
fortran iv (1)
Estoy trabajando en algún código heredado que dependa en gran medida de bloques comunes que se inicializan con BLOCK DATA
similar al código siguiente.
BLOCK DATA filename
PARAMETER (size=100)
CHARACTER*8 somearray(size)
COMMON /block1/ somearray
DATA(somearray(i), i=100)/
*''string1'', ''string2'', ... , ''string100''/
END
En algún punto del programa, una subrutina usa este bloque común como se muestra en el siguiente código.
SUBROUTINE SUB(array)
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
CHARACTER*8 array(*), somearray(100)
COMMON /block1/ somearray
DO 100 I=1, iterations
array(I)=somearray(I)
...
100 CONTINUE
END
Aquí somearray
tiene un par de espacios en cada cadena en lugar de los valores reales especificados en BLOCK DATA
. ¿Cuál podría ser la causa de esto?
Nota : el código está compilado con Intel Fortran
Encontré una solución a este problema agregando una declaración SAVE
antes de la instrucción END
de cualquier BLOCK DATA
como se ve a continuación.
BLOCK DATA filename
PARAMETER (size=100)
CHARACTER*8 somearray(size)
COMMON /block1/ somearray
DATA(somearray(i), i=100)/
*''string1'', ''string2'', ... , ''string100''/
SAVE
END