ICE005A: Blank needed in column 1 or operation not defined correctly
ICE005A means DFSORT couldn't find a valid operation definer, such as SORT, INCLUDE or OUTREC, at the start of a control statement. Most often the statement starts in column 1, where DFSORT expects a blank or a label.
Other names for this code
Also written as ICE005A DFSORT, ICE005A BLANK NEEDED IN COLUMN 1, ICE005A OPERATION NOT DEFINED CORRECTLY, DFSORT ICE005A, sort ICE005A error.
What it means
Every DFSORT control statement starts with an operation definer. That is the word that says what the statement does, such as SORT, MERGE, INCLUDE, OMIT, INREC, OUTREC, OUTFIL, OPTION, SUM, RECORD, JOINKEYS or END. DFSORT reads column 1 as the place for an optional label. So the operation definer has to come after at least one blank, and it has to be followed by a blank on the first line of the statement.
When DFSORT reads a statement and can't find a valid definer in the right place, it issues ICE005A. The A at the end marks a critical error. DFSORT stops without sorting anything, and the step normally ends with return code 16.
The rules differ a little by where the statement comes from. In SYSIN and SORTCNTL a statement may start with a label in column 1. Statements in DFSPARM, or passed in a parameter list from a calling program, may not start with a label. A PARM in DFSPARM also has to fit on one line, because it can't be continued.
Common causes
- The operation definer starts in column 1, for example
SORT FIELDS=(1,typed hard against the left margin. This is by far the most common cause.10, CH, A) - The statement has no recognizable definer at all, for example a misspelled word such as
SROT, or a line of parameters that lost its first line. - The definer isn't followed by a blank, for example
SORT,FIELDS=.... - A label was used in DFSPARM or in a parameter list, where labels aren't allowed.
- A DFSPARM PARM was continued onto a second line.
- A line that continues an earlier statement which already had an error. DFSORT can report ICE005A against the continuation as well.
How to find the problem
- Open the SYSOUT data set of the sort step in SDSF or your output viewer. DFSORT lists the control statements it read, followed by its ICE messages.
- Look at the listed statement just above ICE005A. DFSORT marks the point where it gave up, so check what sits in column 1 of that line.
- In ISPF EDIT, type
COLSon a line command to show a column ruler, then check that every statement starts in column 2 or later. - If the statements come from a library member or a generated file, look at the member itself. A program or edit macro that strips leading blanks can cause this.
How to fix it
- Indent every control statement by at least one blank, for example
SORT FIELDS=(1,.10, CH, A) - Correct any misspelled operation definer and make sure a blank follows it.
- Remove labels from DFSPARM statements and parameter-list statements.
- Put a DFSPARM PARM on one line.
- After fixing the first error, rerun before chasing later messages. One bad line often causes several messages after it.
IBM documentation
IBM documentation: ICE005A. Use the documentation for your installed release.
Related codes
Questions
Why does DFSORT care about column 1?
DFSORT treats column 1 as the label position. A word that starts there is read as a label, so DFSORT then finds no operation definer after it.
Does ICE005A mean the data is wrong?
No. It is a control statement problem. DFSORT stops before it reads any input records.
What return code does ICE005A give?
Critical DFSORT errors normally end the step with return code 16. Some sites set DFSORT to abend instead, so check how your installation is set up.