我需要在Fortran程序中从文件中读取大量数据。由于数据大小是可变的,因此我想动态分配数组。我的想法是编写一个子例程来读取所有数据并分配内存。程序的简化版本如下:
program main
implicit none
real*8, dimension(:,:), allocatable :: v
integer*4 n
!This subroutine will read all the data and allocate the memory
call Memory(v,n)
!From here the program will have other subroutines to make calculations
end
subroutine Memory(v,n)
implicit none
real*8, dimension(:,:), allocatable :: v
integer*4 n,i
n=5
allocate(v(n,2))
do i=1,n
v(i,1)=1.0
v(i,2)=2.0
enddo
return
end subroutine Memory
这个程序给我返回了以下错误信息:
Error: Dummy argument 'v' of procedure 'memory' at (1) has an attribute that requieres an explicit interface for this procedure
这是构建此类程序的正确方式吗?如果是,我该如何解决错误?
谢谢。
subroutine main()
,其中包含整个程序。并且在“包含”之前只放置“implicit none”,全局数组的定义和“call main()”。 - Jonatan Öström