使用DATA语句初始化数组时的fortran语法eorr

使用DATA语句初始化数组时的fortran语法eorr,fortran,Fortran,我遇到了以下无法使用gfortran编译的Fortran代码: CHARACTER(LEN=20) :: filename(max_xoms,2) DATA(filename = RESHAPE(SOURCE=(/'XobsXOM0.txt','XobsXOM1.txt','XobsXOM2.txt','XobsXOM3.txt','XobsXOM4.txt', & 'XobsXOM5.txt','XobsX

我遇到了以下无法使用
gfortran
编译的Fortran代码:

  CHARACTER(LEN=20) :: filename(max_xoms,2)
  DATA(filename = RESHAPE(SOURCE=(/'XobsXOM0.txt','XobsXOM1.txt','XobsXOM2.txt','XobsXOM3.txt','XobsXOM4.txt',  &
                                   'XobsXOM5.txt','XobsXOM6.txt','XobsXOM7.txt','XobsXOM8.txt','XobsXOM9.txt',  &
                                   'XobsXOS0.txt','XobsXOS1.txt','XobsXOS2.txt','XobsXOS3.txt','XobsXOS4.txt',  &
                                   'XobsXOS5.txt','XobsXOS6.txt','XobsXOS7.txt','XobsXOS8.txt','XobsXOS9.txt'/),  &
                                   SHAPE=(/max_xoms,2/)))
代码附带的
makefile
使用
ifort
。我将编译器更改为
gfortran
,并在编译上述代码时收到错误消息:

gfortran  -c -fbacktrace -ffree-line-length-none -Wall hype_indata.f90
hype_indata.f90:48.16:

  DATA(filename = RESHAPE(SOURCE=(/'XobsXOM0.txt','XobsXOM1.txt','XobsXOM2.txt'
                1
Error: Syntax error in DATA statement at (1)
我已尝试在
1
处删除
=
,但这无法修复该语句

有人能解释一下我该如何修正这句话吗

谢谢

顺便说一句,
gfortran--version
返回:

GNU Fortran (tdm64-2) 4.8.1
Copyright (C) 2013 Free Software Foundation, Inc.

如果
max_oms
是一个
参数
(即一个常数,很可能是一个),您可以执行以下操作:

CHARACTER(LEN=20) :: filename(max_xoms,2) = RESHAPE(SOURCE=(/'XobsXOM0.txt','XobsXOM1.txt','XobsXOM2.txt','XobsXOM3.txt','XobsXOM4.txt',  &
                                   'XobsXOM5.txt','XobsXOM6.txt','XobsXOM7.txt','XobsXOM8.txt','XobsXOM9.txt',  &
                                   'XobsXOS0.txt','XobsXOS1.txt','XobsXOS2.txt','XobsXOS3.txt','XobsXOS4.txt',  &
                                   'XobsXOS5.txt','XobsXOS6.txt','XobsXOS7.txt','XobsXOS8.txt','XobsXOS9.txt'/),  &
                                   SHAPE=(/max_xoms,2/))
否则移动

filename = RESHAPE(SOURCE=(/'XobsXOM0.txt','XobsXOM1.txt','XobsXOM2.txt','XobsXOM3.txt','XobsXOM4.txt',  &
                                   'XobsXOM5.txt','XobsXOM6.txt','XobsXOM7.txt','XobsXOM8.txt','XobsXOM9.txt',  &
                                   'XobsXOS0.txt','XobsXOS1.txt','XobsXOS2.txt','XobsXOS3.txt','XobsXOS4.txt',  &
                                   'XobsXOS5.txt','XobsXOS6.txt','XobsXOS7.txt','XobsXOS8.txt','XobsXOS9.txt'/),  &
                                   SHAPE=(/max_xoms,2/))
到第一个可执行语句的位置

通常,避免使用Fortran 90及更高版本中的
数据