在FORTRAN中通过输入参数声明参数

在FORTRAN中通过输入参数声明参数,fortran,gfortran,Fortran,Gfortran,我正在尝试编写一个fortran例程,在其中声明数组,数组的长度来自对输入参数进行的操作 subroutine my_program(N, A,B,m) implicit none integer, intent(in) :: N integer, parameter :: minA = 1, maxA = N integer, parameter :: minB = 0, maxB = N-1 double precision, intent(out) :: max,A(minA:maxA)

我正在尝试编写一个fortran例程,在其中声明数组,数组的长度来自对输入参数进行的操作

subroutine my_program(N, A,B,m)

implicit none
integer, intent(in) :: N
integer, parameter :: minA = 1, maxA = N
integer, parameter :: minB = 0, maxB = N-1
double precision, intent(out) :: max,A(minA:maxA),B(minB:maxB)

A = 0.d0
B = 1.d0
m = maxA*maxB-minA*minB

end subroutine my_program

现在,我有一个错误,来自第5行(1)处的
参数'N'尚未声明,或者是一个变量,它不能简化为常量表达式

N
在编译时是未知的,因此无法使用它初始化
参数
。相反,直接使用
N
来声明
A
B

subroutine my_program(N, A, B, m)
  implicit none
  integer, intent(in)           :: N
  double precision, intent(out) :: m, A(1:N), B(0:N-1)

  integer                       :: minA, maxA 
  integer                       :: minB, maxB

  minA = 1 ; maxA = N
  minB = 0 ; maxB = N-1

  A = 0.d0
  B = 1.d0
  m = maxA*maxB - minA*minB
end subroutine my_program