我想將數組維度作爲虛擬變量傳遞給子例程。數組本身位於Common塊中。這是代碼:將常用塊數組大小傳遞給Fortran中的子例程
PROGRAM test
integer i, nn
integer PARAMETER(Nt=10)
real x(Nt), y(nt), z(Nt)
Common /Bdat/ z
nn=Nt
do i=1,Nt
x(i)=i+1
z(i)=i-1
enddo
call estimate(x,y,nn)
print*, y
return
end
subroutine estimate(x,y,jj)
integer i,jj
real x(jj), y(jj), zq(jj)
COMMON /Bdat/ zq
do i=1, jj
y(i)=x(i)+zq(i)
enddo
return
end
這是我從子程序得到錯誤:
real x(jj), y(jj), zq(jj)
1
錯誤:變量 'JJ' 在(1)在這種情況下必須是恆定
我如果有人能夠幫助如何做到這一點,我會非常感激。
它可以給出一個有意義的問題的答案,但你會考慮一個答案,說:不要」爲此使用通用塊?在過去的30年裏,Fortran已經發生了很大的變化。 – francescalus
我不認爲任何有正確思想的人都應該在Python和MATLAB出現時使用Fortran。有一些舊的代碼,人們必須不時重新訪問。 – emperial