FORTRAN程序一直提示Q1为定义但是前面已经在主程序定了COMMON/Q/Q1(LND,LND),
问题描述:
FORTRAN程序一直提示Q1为定义但是前面已经在主程序定了COMMON/Q/Q1(LND,LND),
SUBROUTINE BHALG(t,U,X1,Y1,B)
M=t-1
DO 10 I=3,M
IF(U(N,H).GT.X1(I)) GOTO 10
IF(ABS(U(N,H)-X1(I-1)).GE.ABS(U(N,H)-X1(I))) GOTO 20
J=I-1
GOTO 15
10 CONTINUE
I=t-1
GOTO 20
15 I=J
20 P=(U(N,H)-X1(I))* (U(N,H)-X1(I+1))/(X1(I-1) -X1(I))/(X1(I-1)-X1(I+1))
Q=(U(N,H)-X1(I-1))*(U(N,H)-X1(I+1))/(X1(I)-X1(I-1))/(X1(I)-X1(I+1))
R=(U(N,H)-X1(I-1))*(U(N,H)-X1(I))/(X1(I+1)-X1(I-1))/(X1(I+1)-X1(I))
Q1(N,H)=P*Y1(I-1)+Q*Y1(I)+R*Y1(I+1)
RETURN
END
答
77风格的看着真头大,可能的话,用module来共享数据吧.
具体到这个错误,我印象中common是需要在用到的所有程序单元里在写一遍的,在子程序开头再加一个COMMON/Q/Q1(LND,LND)试试