An online COBOL program running under CA IDMS can abend with the following error message:
DC027005 Vnn Tnnn TASK:xxxxxxxx PROG:xxxxxxxx ABENDED WITH CODE UFF3 AND REASON CODE 0007
Other reason codes are also possible.
An error code UFF3 is the same as a U4083 error code, it comes from the IBM Language Environment (LE) runtime system.
Under an IDMS/DC or IDMS/UCF environment this can occur when a program is run with the MULTIPE ENLCAVE option enabled but it does not satisfy the requirements for sharing an LE enclave. By turning on the multiple enclave option for a program you allow it to share the same LE enclave with multiple programs. This option is used to improve the performance of LE programs but there are some restrictions in its use.
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.
For more details on the multiple enclave option refer to the CA IDMS DML Reference - COBOL, which can be found here: