我不理解的的重要性,通过定义主程序外的子程序中包含Fortran 90的包含声明
声明例如
PROGRAM BLABLA
IMPLICIT NONE
INTEGER :: i,j,k
i = 1; j = 1;k =1
PRINT *, i,j,k
CALL ABC(i,j,k)
PRINT *, i,j,k
CONTAINS
SUBROUTINE ABC(r,s,t)
IMPLICIT NONE
INTEGER, INTENT(IN) :: r,s
INTEGER, INTENT(OUT) :: t
t = r + s
END SUBROUTINE ABC
END PROGRAM BLABLA
和一个。我理解函数,需要指定函数的类型,但对于子例程,它不是必需的。我有兴趣了解这样做是否有任何额外的注意事项?
PROGRAM BLABLA
IMPLICIT NONE
INTEGER :: i,j,k
i = 1; j = 1;k =1
PRINT *, i,j,k
CALL ABC(i,j,k)
PRINT *, i,j,k
END PROGRAM BLABLA
SUBROUTINE ABC(r,s,t)
IMPLICIT NONE
INTEGER, INTENT(IN) :: r,s
INTEGER, INTENT(OUT) :: t
t = r + s
END SUBROUTINE ABC
当我没有** CONTAINS **时,它编译,但然后给我一个错误的答案(任意大)。当我有** CONTAINS **时,它不允许我编译。所以我猜** CONTAINS **作为参数的附加检查。到目前为止,我正在编写没有** CONTAINS **的代码。如果相同的代码用** CONTAINS **编译**,我可以确信,其他代码在参数上是正确的。更确切地说,如果在任何代码中都没有传递参数(但在MODULES中保存为全局变量),两者是否都相同? – Vaidyanathan