モジュール内のインターフェイス ブロックの使用と、モジュール内のプロシージャの "明示的なインターフェイス" を作成するための CONTAINS ステートメントの使用について、少し混乱しています。
私は通常、モジュール内のインターフェイス ブロックを使用してプロシージャを記述します。例えば、
MODULE ModExample
INTERFACE
SUBROUTINE Sumatory(a, b, c)
IMPLICIT NONE
INTEGER, INTENT(IN)::a
INTEGER, INTENT(OUT)::b
INTEGER, INTENT(OUT)::c
END SUBROUTINE Sumatory
END INTERFACE
END MODULE ModExample
SUBROUTINE Sumatory(a, b, c)
IMPLICIT NONE
INTEGER, INTENT(IN)::a
INTEGER, INTENT(OUT)::b
INTEGER, INTENT(OUT)::c
!Executable statements here
END SUBROUTINE Sumatory
そして、これは私にとってはうまくいきます。ただし、モジュール内で CONTAINS ステートメントを使用して記述することもできます。実際、これは、私が参照した Fortran の本でプロシージャーの例が記述されている方法です。
MODULE ModExample
CONTAINS
SUBROUTINE Sumatory(a, b, c)
IMPLICIT NONE
INTEGER, INTENT(IN)::a
INTEGER, INTENT(OUT)::b
INTEGER, INTENT(OUT)::c
!Executable statements here
END SUBROUTINE Sumatory
END MODOULE ModExample
では、INTERFCE ブロックの何が問題になっているのでしょうか? どちらも同等の構造ですか? 2つのアプローチのどちらを使用する必要がありますか? この質問はすべて「場合による」という大きな答えになるかもしれませんが、それらの違いについて説明していただきたいと思います。前もって感謝します。