After compiling an IDMS-DC Cobol program under Cobol release 6.x the task abends with
DC027005 Vnn Tnnn TASK:<taskcode> PROG:<pgmname> ABENDED WITH CODE UFC6 AND REASON CODE 0001
UFC6 (4038) is a very generic LE Cobol abend that could be caused by a number of programmatic errors.
----------------- V=IBM P=Z/OS LANG ENV MSGS R=V2R4 I=U4038 ------------------
********************* Text Below Copyright (c) 2022, IBM *********************
U4038 (X'FC6')
Explanation: Language Environment has encountered a software-raised or
user-raised unhandled condition of severity 2 or greater and will terminate.
If the TERMTHDACT run-time option is set appropriately, a Language
Environment dump (CEEDUMP) will be generated, however, no system dump will be generated for this abend.
System action: Enclave terminated.
Programmer response: Examine the resulting Language Environment dump
(CEEDUMP), if available, or the Language Environment message file to help
determine the cause of the unhandled condition. See z/OS Language Environment
Debugging Guide for information on collecting and using Language Environment
dumps. See z/OS Language Environment Programming Reference for details on the TERMTHDACT run-time option.
In this case, further testing showed it was the recently added ABD parameter on the SSRANGE option that caused the UFC6 abend.
Client's compile specified SSRANGE(NOZLEN,ABD) option that caused the abend AND LE was not producing any explanatory msg when the SSRANGE ABD option was set if the CEEUOPT specified TERMTHDACT=(QUIET), which is the default CEEUOPT parameter delivered with RHDCLEFE.
Testing showed an explanatory warning msg will be produced if the compile option is changed to SSRANGE(NOZLEN,MSG). The messages on the IDMS Log would be like the following:
IDMS DC128010 Vnnn Tnnn IGZ0304W The reference to table <tablename> by verb number nn on line nnn in program <pgmname>
IDMS DC128010 Vnnn Tnnn addressed an area outside the region of the table.
or if the compiler option is SSRANGE(NOZLEN,ABD) and the CEEUOPT in RHDCLEFE is changed to have TERMTHDACT=(TRACE) rather than the default of TERMTHDACT=(QUIET), you would get an abend but would also get an explanatory message like the following:
DC128010 Vnnn Tnnn IGZ0006S The reference to table <tablename> by verb number nn on line nnn addressed an
DC128010 Vnnn Tnnn area outside the region of the table.
DC128010 Vnnn Tnnn From compile unit <pgmname> at entry point <EPname> at compile unit offset +nnnnn