INTERFACE

目的

INTERFACE ステートメントは、インターフェース・ブロックの最初のステートメントです。 これは外部またはダミー・プロシージャーに対して明示インターフェースを指定できます。

構文



>>-INTERFACE--+--------------+---------------------------------><
              '-generic_spec-'
 
 

generic_spec


>>-+-generic_name---------------------+------------------------><
   +-OPERATOR--(--defined_operator--)-+
   '-ASSIGNMENT--(-- = --)------------'
 
 

defined_operator
定義された単項演算子、定義された 2 進演算子、 または拡張組み込み演算子です。

規則

generic_spec を指定した場合、インターフェース・ブロックは 総称になります。 generic_spec を指定しない場合、インターフェース・ブロック は非総称になります。 generic_name は、インターフェース・ブロック内の すべてのプロシージャーを参照する単一名を指定します。 総称名でのプロシージャー参照が発生するたびに、 最大 1 つの特定のプロシージャーが呼び出されます。

+---------------------------------Fortran 95---------------------------------+

INTERFACE ステートメントに generic_spec を指定する場合、それは対応する END INTERFACE ステートメント内の generic_spec と一致しなければなりません。

INTERFACE ステートメント内 の generic_specgeneric_name である場合、 対応する END INTERFACE ステートメントの generic_spec は、 同じ generic_name でなければなりません。

+-----------------------------End of Fortran 95------------------------------+

INTERFACE ステートメントに generic_spec を指定しない場合、generic_spec の あるなしに関係なく、すべての END INTERFACE ステートメントと一致させることができます。

プロシージャーの 1 つの有効範囲単位内に明示インターフェースを複数指定することはできません。

アクセス可能であれば、特定のインターフェースを介していつでもプロシージャーを参照することができます。 プロシージャーに総称インターフェースが存在する場合は、その総称インターフェースを介してプロシージャーを 参照することも可能です。

generic_specOPERATOR(defined_operator) の場合、 インターフェース・ブロックは定義済みの演算子を定義したり、 組み込み演算子を拡張したりできます。

generic_specASSIGNMENT(=) の場合、 インターフェース・ブロックは組み込み割り当てを拡張できます。

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

関連情報

IBM Copyright 2003