With the MULTIPE ENLCAVE option enabled, programs cannot perform the following statements:
- DC RETURN NEXT TASKCODE taskcode. (or any other subparameter)
- TRANSFER CONTROL to program NORETURN USING (...).
- TRANSFER CONTROL to program XCTL USING (...).
- TRANSFER CONTROL to program USING (...). (the default is NORETURN)
However, the following statements are allowed:
- DC RETURN. (without any subparameters)
- TRANSFER CONTROL to program LINK USING (...).
- TRANSFER CONTROL to program RETURN USING (...).
Note that the UFF3 abend will not necessarily occur in the program that breaks the above rules. It can occur in a program called later in the application. You need to analyze all programs called up to the point of the abend not just the program named in the error message.
There are two ways to resolve the problem:
- Modify the program to conform to the above restrictions.
- Turn off the multiple enclave option for the program. You can turn it off dynamically with a DCMT command:
DCMT VARY PROGRAM progname MULTIPLE ENCLAVE OFF
To make this change permanent, specify MULTIPLE ENCLAVE IS OFF in the PROGRAM statement in the SYSGEN and re-generate the system.