ICE000I is the first message many DFSORT steps produce. It is informational (the I suffix): it does not indicate an error. It identifies the DFSORT product and version, the date and time of the run, and then lists the control statements that were read from SYSIN. Understanding ICE000I helps you confirm that the correct control statements were used and which DFSORT level ran, and it is a useful reference when debugging a failed step. This page explains what each part of the message means and how to use it.
The exact format of ICE000I can vary slightly by DFSORT level, but it typically includes: (1) the product identifier (e.g. 5694-A01, z/OS DFSORT), (2) the version and release (e.g. V2R5 for version 2 release 5), (3) the time in hours and minutes (hh:mm) and the date (day of week, month abbreviation, day of month, year), and (4) the control statements that were read from SYSIN. So in one message you see who (the product), when (date/time), and what (the control statements). That makes it easy to confirm that the right step and the right options were in effect.
| Part | Example or meaning |
|---|---|
| Product identifier | e.g. 5694-A01, z/OS DFSORT |
| Version and release | e.g. V2R5 (version 2, release 5) |
| Time and date | hh:mm ON day mmm dd, yyyy |
| Control statements | The lines read from SYSIN |
After the header line, ICE000I (or continuation lines associated with it) lists the control statements that DFSORT read from SYSIN. That is the same content as your in-stream data or the dataset pointed to by SYSIN. So you see SORT, MERGE, OPTION, INCLUDE, OMIT, INREC, OUTREC, OUTFIL, SUM, JOINKEYS, REFORMAT, and so on, exactly as parsed. If you used a PROC that builds SYSIN, the echo shows what the PROC produced. If a continuation was in the wrong column, the echo shows what DFSORT actually read—which may differ from what you intended. When a step fails with a syntax or logic error, comparing the echoed statements to what you meant to submit is a good first step.
The version (V) and release (R) in ICE000I (e.g. V2R5) identify the DFSORT level that ran. Different levels support different features: for example, some date arithmetic or JOINKEYS options may exist only in later releases or with specific PTFs. When you look up a message or a keyword in the IBM manual, the documentation may say "V2R5 and above" or "requires PTF UK90025". Knowing your level from ICE000I lets you match your environment to the documentation. If you report a problem to support or to a colleague, including the version from ICE000I helps them give accurate advice.
ICE000I has the suffix I, which in IBM message conventions means informational. So it is not a warning and not an error. Seeing ICE000I at the start of a step is normal. If the step goes on to fail, the failure will be indicated by another message (often with suffix A) that appears later in the same SYSOUT. So do not treat ICE000I as the cause of a failure; use it as context and then look for the first A-level or error message to find the real cause.
If you do not see ICE000I in the step output, possible reasons are: (1) message output was suppressed with OPTION MSGPRT (e.g. MSGPRT=NONE), so informational messages are not printed; (2) messages were redirected with OPTION MSGDDN=ddname to another dataset, and you are looking at the default SYSOUT instead of that DD; or (3) the step failed before DFSORT could print (e.g. program load failure, missing required DD), so no DFSORT messages appear. In the first two cases, check your OPTION statement and look at the correct dataset. In the third, look at JCL or system messages for the earlier failure.
When the sort program starts, it says "Hi, I'm the sort program, version 2.5, and today is Monday Jan 15 2024. Here are the instructions you gave me." That "Hi" message is ICE000I. It is not saying something went wrong—it is just introducing itself and showing the instructions it read. So when you see it, that's normal. If something goes wrong later, the program will print a different, scarier message that tells you what actually failed.
1. What does the ICE000I message contain?
2. Is ICE000I an error?
3. Why would you look at the control statements in ICE000I after a job fails?
4. What does the version in ICE000I (e.g. V2R5) tell you?
5. If you do not see ICE000I in your step output, what might that mean?