An interface block can be used to define a generic operator. The only procedures allowed in the interface block are functions that can be referenced as defined operations. Statement format for initial line in block: INTERFACE OPERATOR (op) op Is one of the following: A defined unary operator (one argument) A defined binary operator (two arguments) An extended intrinsic operator (number of arguments must be consistent with the intrinsic uses of that operator) The functions within the interface block must have one or two nonoptional arguments with intent IN, and the function result must not be of type character with assumed length. A defined operation is treated as a reference to the function. EXAMPLES: INTERFACE OPERATOR(.BAR.) FUNCTION BAR(A_1) INTEGER, INTENT(IN) :: A_1 INTEGER :: BAR END FUNCTION BAR END INTERFACE The following example shows a way to reference function BAR by using the new operator: INTEGER B I = 4 + (.BAR. B) The following is an example of a procedure interface block with a defined operator extending an existing operator: INTERFACE OPERATOR(+) FUNCTION LGFUNC (A, B) LOGICAL, INTENT(IN) :: A(:), B(SIZE(A)) LOGICAL :: LGFUNC(SIZE(A)) END FUNCTION LGFUNC END INTERFACE The following example shows two equivalent ways to reference function LGFUNC: LOGICAL, DIMENSION(1:10) :: C, D, E N = 10 E = LGFUNC(C(1:N), D(1:N)) E = C(1:N) + D(1:N)