我不理解的的重要性,通過定義主程序外的子程序中包含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