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----------------------------+