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