Identifying a program as recursive
Code the RECURSIVE attribute on the PROGRAM-ID
clause to specify that a program can be recursively reentered while
a previous invocation is still active.
You can code RECURSIVE only on the
outermost program of a compilation unit. Neither nested subprograms
nor programs that contain nested subprograms can be recursive. You must code RECURSIVE for programs
that you compile with the THREAD option.
Refer to the Example: storage sections,
which shows that a recursive program uses both WORKING-STORAGE and LOCAL-STORAGE.