目的
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 でなければなりません。
+------------------------------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
関連情報