Copyright Digital Equipment Corp. All rights reserved.

INTERFACE

 The first statement of an interface block.  Interface blocks define
 explicit interfaces for external or dummy procedures.  They can
 also be used to define a generic name for procedures, a new
 operator for functions, and a new form of assignment for
 subroutines.  Format:

    INTERFACE [spec]
      [body]...
      [MODULE PROCEDURE nam]...
    END INTERFACE [spec]

    spec  Is one of the following:
          
          A generic name
         
          OPERATOR (op)
          
          The "op" is the defined unary, defined binary, 
          or extended intrinsic operator being defined.

          ASSIGNMENT (=)

          A "spec" can only be included in the END INTERFACE
          statement if one was provided in the INTERFACE
          statement; both "spec"s must be identical.

    body  Is one or more function or subroutine subprograms.  
          A function must end with END FUNCTION and a subroutine 
          must end with END SUBROUTINE.

          The subprogram must not contain a statement function 
          or a DATA, ENTRY or FORMAT statement; an entry name 
          can be used as a procedure name.

          The subprogram can contain a USE statement.

    nam   Is the name of one or more module procedures that 
          are accessible in the host. The MODULE PROCEDURE 
          statement is only allowed if the interface block 
          specifies a "spec" and has a host that is a module 
          (or accesses a module by use association).

          The characteristics of module procedures are not 
          given in interface blocks, but are assumed from
          the module subprogram definitions.  

 Interface blocks can appear in the specification part of the
 program unit that invokes the external or dummy procedure.

 The characteristics specified for the external or dummy procedure
 must be consistent with those specified in the procedure's
 definition.

 An interface block must not appear in a block data program unit.

 An interface block comprises its own scoping unit, and does not
 inherit anything from its host through host association.

 A procedure must not have more than one explicit interface in a
 given scoping unit.

 For more information, see the HP Fortran for OpenVMS Language
 Reference Manual.

 EXAMPLES:

 The following example shows a simple procedure interface block with
 no generic specification:

   SUBROUTINE SUB_B (B, FB)
     REAL B
     ...
     INTERFACE 
       FUNCTION FB (GN)
         REAL FB, GN
       END FUNCTION 
     END INTERFACE

Additional information available:

Generic_Names   Generic_Operators               Generic_Assignment