The CALL statement invokes a subroutine to be executed.
Executing a CALL statement results in the following order of events:
A subprogram can call itself recursively, directly or indirectly, if the subroutine statement specifies the RECURSIVE keyword.
If a CALL statement includes one or more alternate return specifiers among its arguments, control may be transferred to one of the statement labels indicated, depending on the action specified by the subroutine in the RETURN statement.
An external subprogram can also refer to itself directly or indirectly if the -qrecur compiler option is specified.
The argument list built-in functions %VAL and %REF are supplied to aid interlanguage calls by allowing arguments to be passed by value and by reference, respectively. They can only be references to non-Fortran procedures
The VALUE attribute also allows you to pass arguments by value.
INTERFACE SUBROUTINE SUB3(D1,D2) REAL D1,D2 END SUBROUTINE END INTERFACE ARG1=7 ; ARG2=8 CALL SUB3(D2=ARG2,D1=ARG1) ! subroutine call with argument keywords END SUBROUTINE SUB3(F1,F2) REAL F1,F2,F3,F4 F3 = F1/F2 F4 = F1-F2 PRINT *, F3, F4 END SUBROUTINE