A procedure that can reference itself, directly or indirectly, is called a recursive procedure. Such a procedure can reference itself indefinitely until a specific condition is met. For example, you can determine the factorial of the positive integer N as follows:
INTEGER N, RESULT, FACTORIAL READ (5,*) N IF (N.GE.0) THEN RESULT = FACTORIAL(N) END IF CONTAINS RECURSIVE FUNCTION FACTORIAL (N) RESULT (RES) INTEGER RES IF (N.EQ.0) THEN RES = 1 ELSE RES = N * FACTORIAL(N-1) END IF END FUNCTION FACTORIAL END
For details on syntax and rules, see FUNCTION, SUBROUTINE, or ENTRY.
+-------------------------------IBM Extension--------------------------------+
You can also call external procedures recursively when you specify the -qrecur compiler option, although XL Fortran disregards this option if the procedure specifies either the RECURSIVE or RESULT keyword.
+----------------------------End of IBM Extension----------------------------+