FORTRAN块数据似乎无法正常工作

时间:2016-07-01 10:03:48

标签: fortran fortran77 intel-fortran fortran95

我正在研究一些遗留代码,这些代码严重依赖于使用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编译的

1 个答案:

答案 0 :(得分:1)

我通过在任何SAVE的{​​{1}}声明之前添加END声明找到了解决此问题的方法,如下所示。

BLOCK DATA