目的
INTERFACE ステートメントは、インターフェース・ブロックの最初のステートメントです。 これは外部またはダミー・プロシージャーに対して明示インターフェースを指定できます。
構文
>>-INTERFACE--+--------------+--------------------------------->< '-generic_spec-' |
>>-+-generic_name---------------------+------------------------>< +-OPERATOR--(--defined_operator--)-+ '-ASSIGNMENT--(-- = --)------------'
規則
generic_spec を指定した場合、インターフェース・ブロックは 総称になります。 generic_spec を指定しない場合、インターフェース・ブロック は非総称になります。 generic_name は、インターフェース・ブロック内の すべてのプロシージャーを参照する単一名を指定します。 総称名でのプロシージャー参照が発生するたびに、 最大 1 つの特定のプロシージャーが呼び出されます。
+---------------------------------Fortran 95---------------------------------+
INTERFACE ステートメントに generic_spec を指定する場合、それは対応する END INTERFACE ステートメント内の generic_spec と一致しなければなりません。
INTERFACE ステートメント内 の generic_spec が generic_name である場合、 対応する END INTERFACE ステートメントの generic_spec は、 同じ generic_name でなければなりません。
+-----------------------------End of Fortran 95------------------------------+
INTERFACE ステートメントに generic_spec を指定しない場合、generic_spec の あるなしに関係なく、すべての END INTERFACE ステートメントと一致させることができます。
プロシージャーの 1 つの有効範囲単位内に明示インターフェースを複数指定することはできません。
アクセス可能であれば、特定のインターフェースを介していつでもプロシージャーを参照することができます。 プロシージャーに総称インターフェースが存在する場合は、その総称インターフェースを介してプロシージャーを 参照することも可能です。
generic_spec が OPERATOR(defined_operator) の場合、 インターフェース・ブロックは定義済みの演算子を定義したり、 組み込み演算子を拡張したりできます。
generic_spec が ASSIGNMENT(=) の場合、 インターフェース・ブロックは組み込み割り当てを拡張できます。
例
INTERFACE ! Nongeneric interface block FUNCTION VOL(RDS,HGT) REAL VOL, RDS, HGT END FUNCTION VOL FUNCTION AREA (RDS) REAL AREA, RDS END FUNCTION AREA END INTERFACE INTERFACE OPERATOR (.DETERMINANT.) ! Defined operator interface FUNCTION DETERMINANT(X) INTENT(IN) X REAL X(50,50), DETERMINANT END FUNCTION END INTERFACE INTERFACE ASSIGNMENT(=) ! Defined assignment interface SUBROUTINE BIT_TO_NUMERIC (N,B) INTEGER, INTENT(OUT) :: N LOGICAL, INTENT(IN) :: B(:) END SUBROUTINE END INTERFACE
関連情報