我正在研究一些遗留代码,这些代码严重依赖于使用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
中指定的实际值。可能是什么原因造成的?
注意:代码是使用英特尔Fortran编译的
答案 0 :(得分:1)
我通过在任何SAVE
的{{1}}声明之前添加END
声明找到了解决此问题的方法,如下所示。
BLOCK DATA