9

モジュール内のインターフェイス ブロックの使用と、モジュール内のプロシージャの "明示的なインターフェイス" を作成するための 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つのアプローチのどちらを使用する必要がありますか? この質問はすべて「場合による」という大きな答えになるかもしれませんが、それらの違いについて説明していただきたいと思います。前もって感謝します。

4

1 に答える 1