ICE185A: Abend issued by DFSORT, another program or an exit
ICE185A means an abend happened while DFSORT was running, and DFSORT's recovery routine reported it. The abend may have come from DFSORT itself, from a program that called DFSORT, or from a user exit such as E15 or E35, and the message names the abend code and the DFSORT phase.
Other names for this code
Also written as ICE185A ABEND WAS ISSUED BY DFSORT, ICE185A S0C4, ICE185A S0C7, ICE185A SB37, AN S0C4 ABEND WAS ISSUED BY DFSORT, ANOTHER PROGRAM OR AN EXIT, DFSORT ICE185A.
What it means
At the start of each run DFSORT sets up a recovery routine (an ESTAE) that traps system and user abends. If the step abends while DFSORT is in control, that routine gets control first. It writes ICE185A, collects extra information, takes care of SMF records, the ICETEXIT termination exit or an EFS program if those are active, and then lets the abend carry on. So ICE185A doesn't replace the abend. The step still ends with the abend code shown in the message.
The message looks like ICE185A 0 AN S0C4 ABEND WAS ISSUED BY DFSORT, ANOTHER PROGRAM OR AN EXIT (PHASE S 1). The abend code is the important part. The phase tells IBM support which part of DFSORT was running, which helps if the problem turns out to be in DFSORT.
The message names all three because the abend could have come from any of them. A COBOL program that uses the SORT verb runs its INPUT PROCEDURE and OUTPUT PROCEDURE as DFSORT exits. A bug there, such as a data exception, shows up inside the sort and produces ICE185A.
Common causes
- A bug in a user exit (E15, E35 or others) or in the INPUT or OUTPUT PROCEDURE of a COBOL internal sort. Program checks such as S0C4 and S0C7 are the usual result.
- An abend in a system service the sort was using, such as running out of space on an output data set or of storage in the region. The abend code in the message points to which.
- A program that calls DFSORT passed it a bad parameter list or storage it no longer owned.
- A DFSORT defect. IBM has fixed several, for example an S0C4 in a DFSORT module and an abend when the ZSORT accelerator was used with E15 or E35 exits.
How to find the problem
- Read the abend code in ICE185A and look it up as you would any abend. For an S0C7 or S0C4, find the failing module and offset in the dump or symptom dump.
- Check whether the failing address is inside your exit or COBOL program, or inside a DFSORT module (names starting ICE). Fault Analyzer, Abend-AID or the IEA995I symptom dump shows the module.
- Make sure the step has a SYSUDUMP, SYSABEND or SYSMDUMP DD statement. Without one you get no dump to work from.
- For an apparent DFSORT problem, add
//SORTDIAG DD DUMMYand rerun to get extra diagnostic messages, and give IBM the phase from ICE185A.
How to fix it
- Fix the exit or the COBOL INPUT or OUTPUT PROCEDURE if the failure is in your code. Treat it as the abend the message names.
- For space or storage abends, give the output data set more space or the step a larger REGION.
- If the failure is inside DFSORT, search IBM support for the abend code with ICE185A and the phase, and apply any matching PTF.
- Leave DFSORT's ESTAE recovery on. Turning it off (ESTAE=NO, or NOESTAE on the DEBUG statement) loses the extra diagnostics it collects.
What it looks like
ICE185A 0 AN S0C4 ABEND WAS ISSUED BY DFSORT, ANOTHER PROGRAM OR AN EXIT (PHASE S 1)
IBM documentation
IBM documentation: ICE185A. Use the documentation for your installed release.
Related codes
Questions
Does ICE185A mean DFSORT is broken?
Not usually. The message says the abend could come from DFSORT, a calling program or an exit. The cause is often in an exit or a COBOL sort procedure, so check those first.
Why does my COBOL program with a SORT verb get ICE185A?
The INPUT and OUTPUT PROCEDUREs run as DFSORT exits. If they abend, DFSORT's recovery routine sees it and writes ICE185A before the abend continues.
What is the PHASE in ICE185A?
It identifies which part of DFSORT was running when the abend happened. It mainly helps IBM support if the problem is in DFSORT.