배열 차원을 서브 루틴에 더미 변수로 전달하고 싶습니다. 배열 자체는 Common 블록에 있습니다. 이 코드입니다 :Fortran에서 일반 블록 배열 크기를 서브 루틴으로 전달
real x(jj), y(jj), zq(jj)
1
오류 : 변수 'JJ'에서 (1)이 문맥에서 일정
내가해야
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
이 나는 서브 루틴에서 얻을 오류입니다 아무도이 일을하는 방법을 도울 수 있다면 정말로 감사 할 것입니다.
질문에 대한 의미있는 대답을 할 수 있지만라는 대답을 바라 보는 것 : 돈 ' 이 목적을 위해 공통 블록을 사용합니까? Fortran은 지난 30 년 동안 엄청난 움직임을 보였습니다. – francescalus
Python과 MATLAB이있을 때 올바른 생각을 가진 사람이 Fortran을 사용해야한다고 생각하지 않습니다. 사람들이 지금 당장 다시 방문해야하는 오래된 코드가 있습니다. – emperial