是否存在符合标准的方法来在多行上分配Fortran参数数组的段?

时间:2019-08-31 18:26:21

标签: fortran

我有一个参数数组,它跨越源代码中的几千行,每行已经有大约132个字符长。以符合标准的方式分配此数组的一种明显方法是删除parameter属性,并以255行连续的块分配该数组的各段。但是,这很不好,因为数组确实是常量而不是变量。有没有不删除parameter属性的方法?

1 个答案:

答案 0 :(得分:1)

您可以从其他命名常量中建立一个命名常量。

program foo
   integer, parameter :: a(5)  = [1, 2, 3, 4, 5]
   integer, parameter :: b(10) = [a, a]
   print '(5(I0,1X))', a
   print '(10(I0,1X))', b
end program foo

我怀疑这已经被询问并回答了。

另一种选择是将数据读取到PROTECTED实体中。

module mydata

  implicit none

  private

  integer, protected, allocatable :: a(:)
  public a, init_a

  contains

  subroutine init_a
     integer fd, n
     open(newunit=fd,file='a.dat',status='old',access='stream')
     read(fd) n
     allocate(a(n))
     read(fd) a
     close(fd)
  end subroutine init_a

end module mydata

program foo
  use mydata
  call init_a
  print '(5(I0,1X))', a(1:5)
end program foo