An implicit interface call is a call on a procedure in which the caller has no explicit information on the form of the arguments expected by the procedure; all calls within a Fortran program are of this form. All arguments passed through an implicit interface, apart from label arguments, are passed by address.
Argument |
Address Passed |
scalar |
the address of the scalar |
array |
the address of the first element of the array |
scalar pointer |
the address of its target |
array pointer |
the address of the first element of its target |
procedure |
the address associated with the external name |
Actual arguments of type character are passed as a character descriptor, which consists of two words, see Character Types.
Label arguments (alternate returns) are handled differently: subroutines which include one or more alternate returns in the argument list are compiled as integer functions; these functions return an index into a computed goto; the caller executes these gotos on return. For example:
call validate(x,*10,*20,*30)
is equivalent to
goto (10,20,30), validate(x)