配列次元をダミー変数としてサブルーチンに渡したいとします。配列自体は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
エラー:定数でなければなりません(1)で変数 'JJ' は、この文脈で
Iもし誰かがこれをやる方法を手伝ってもらえると本当に感謝しています。
質問に意味のある答えを与えることが可能であるが、あなたが言う答え考えるでしょう:ドン」をこの目的のために共通のブロックを使用しないでください。 Fortranは過去30年間にひどい動きをしています。 – francescalus
私はPythonとMATLABの周りにFortranを使うべきだとは思わない。そこには人々が今や毎回再訪しなければならない古いコードがいくつかあります。 – emperial