MODULE COMMON_DATA
IMPLICIT NONE
SAVE
REAL::X(32)
END MODULE
SUBROUTINE 1…………
…………
USE COMMON_DATA
DO i=1,4,1
IF(i==NOEL)THEN
DO j=1,8,1
IF(j==NPT)THEN
X((i-1)*8+j)=STATEV(2)
END IF
END DO
END IF
END DO
END SUBROUTINE1
SUBROUTINE 2…………
…………
USE COMMON_DATA
DO i=5,8,1
IF(i==NOEL)THEN
DO j=1,8,1
IF(j==NPT)THEN
L=X((i-5)*8+j)
END IF
END DO
END IF
END DO
END SUBROUTINE2
call subroutine1 ! 设定 X
call subroutine2 !读取 X
call subroutine1 !设定新的X
call subroutine2 !读取新的X
风平老涡 发表于 2020-11-4 02:10
没有错,x 是全域变量。不知道你想要什么效果?
[mw_shl_code=fortran,true]call subroutine1 ! 设定 X ...
fcode 发表于 2020-11-4 08:34
这要看你的 SUBROUTINE 1 和 SUBROUTINE 2 的执行顺序是怎样的。
916115735 发表于 2020-11-4 11:10
但是传输过来的数据不对 1~4是 subroutine1计算的结果
5~8是subroutine2读取的结果 ...
fcode 发表于 2020-11-4 11:38
如果你在 subroutine 1 ,subroutine 2 中又一次定义了 X,那么会覆盖掉module中的X
尝试取消在subroutine ...
欢迎光临 Fortran Coder (http://bbs.fcode.cn/) | Powered by Discuz! X3.2 |