DL/1 D106 Abends under CICS with LE z/VSE
LEzVSE 0600025UDN Visits (5620)
For this blog entry I want to discuss a possibly forgotten or missed change that was made a number of years ago with regards to DL/1 D106 abends under CICS with LE z/VSE.
With the introduction of APAR PQ15103 two noticeable changes occurred to LE z/VSE abend/condition handling under CICS. First is probably the most obvious (and at the time welcomed) change with the removal of issuing 4083/xx abends under CICS. Instead the original CICS abend code is produced by CICS and LE does not continue with any condition handling if there was a reason for issuing a 4083/xx abend.
The second change was the removal of handling DL/1 D106 abends under CICS. This was done within LE z/VSE in a similar manner as for the 4083/xx abend. The difference that may affect user applications is that this change effectively removed any chance of the application program being able to "handle" a DL/1 D106 abend itself. This specifically applies to the use of the "EXEC CICS HANDLE ABEND LABEL(xxxxx)" that is supported by COBOL/VSE. As LE does not support the D106 abend it is not able to provide the required processing that is requested by CICS in response to triggering this "LABEL" handling code so no transfer to a label can be performed. If this is attempted by a COBOL/VSE CICS application due to a D106 abend various other abends may occur instead. Including an APC2 abend. This also, cannot be handled with a "LABEL" CICS handle command, so should not be attempted.
If you have applications that may potentially experience a DL/1 D106 abend and they are using the "EXEC CICS HANDLE ABEND LABEL(xxxxx)" command then the simplest replacement solution for handling abends under CICS is to use "EXEC CICS HANDLE ABEND PROGRAM(XXXXX)" instead. Avoiding the use of the "LABEL" option. This change will allow CICS to directly call your handle routine without needing to involve LE z/VSE processing.
The other option, which is a lot more involved, is to change from the currently used non-LE DL/1 interface routine calls (ie EXEC DLI, Call DLZLIxxx, Call xxxTDLI etc) to the language independent LE z/VSE provided DL/1 interface routine - CEETDLI. Using this interface routine will ensure the correct environment is available to LE z/VSE when a DL/1 abend (eg D106) occurs and CICS then calls LE z/VSE to process the "HANDLE LABEL" that has been triggered. Documentation on CEETDLI can be found in the appropriate LE z/VSE Programming Reference (eg http