Я работаю над некоторым устаревшим кодом, который в значительной степени зависит от общих блоков, которые инициализируются с помощью BLOCK DATA
, аналогично коду ниже.
BLOCK DATA filename
PARAMETER (size=100)
CHARACTER*8 somearray(size)
COMMON /block1/ somearray
DATA(somearray(i), i=100)/
*'string1', 'string2', ... , 'string100'/
END
В какой-то момент программы подпрограмма использует этот общий блок, как показано в приведенном ниже коде.
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
Здесь somearray
имеет пару пробелов в каждой строке вместо фактических значений, указанных в BLOCK DATA
. Что может быть причиной этого?
Примечание: код скомпилирован с помощью Intel Fortran.