AEID: EOF not handled
An AEID abend means a CICS terminal control RECEIVE received an end-of-file indicator and the program didn't handle the EOF condition. In practice it shows up with sequential terminals, where CICS reads simulated terminal input from a data set and that data set has run out.
Other names for this code
Also written as AEID abend, CICS AEID, abend AEID, CICS EOF condition, AEID EOF, sequential terminal EOF.
What it means
EOF is a terminal control condition. IBM documents it for the RECEIVE command on terminals that are not attached through z/OS Communications Server. It is raised when the input contains an end-of-file indicator. EIBRESP is 4. The default action is to abend the task with AEID. A program that codes RESP(WS-RESP) gets control back and can test for DFHRESP(EOF).
Most people meet it through sequential terminals. CICS can treat a pair of sequential data sets as a terminal. It reads input from one as if a user had typed it and writes output to the other. Sites use this to test transactions without a person at a screen. Each input message in the data set ends with an end-of-data indicator, a backslash (X'E0') by default, and the installation can choose another character in the system initialization table. CICS looks only for that character and ignores the physical record boundaries, so each message has to start on a new record and fit in the terminal's input buffer.
Reaching the end of the input data set also counts as an end-of-data indicator. IBM notes that any RECEIVE issued after end of file has been detected makes the task abend.
EOF has nothing to do with VSAM files. The end of a file control browse is ENDFILE (AEIT), and an empty transient data queue is QZERO (AEIW).
Common causes
- The input data set for a sequential terminal ran out while a transaction was still issuing RECEIVE for more input.
- A program loops on RECEIVE and doesn't test for EOF, so it fails as soon as the input ends.
- A test script lost its last messages, or a message is missing its end-of-data character, so input runs together and ends sooner than the transaction expects.
- A program written for a real terminal is now driven by a sequential terminal, and nobody added EOF handling.
How to find the problem
- The terminal message
DFHAC2206names the transaction. In the dump, EIBFN shows the RECEIVE and EIBRESP is 4. - Check which terminal the task ran on and how it is defined. A sequential terminal points at an input and an output data set.
- Browse the input data set. Check that every message ends with the end-of-data character your region uses and that the transaction gets all the input it reads.
- Look at the output data set to see the last screen the transaction sent before it failed.
How to fix it
- Add the missing input messages to the test data set, each ending with the end-of-data character.
- Code
RESP(WS-RESP)on RECEIVE and end the transaction cleanly onDFHRESP(EOF). - Don't issue another RECEIVE after EOF. The task abends if you do.
- Keep test scripts in step with the transactions they drive. When a screen gains or loses a step, update the script.
What it looks like
DFHDU0203I 10/18/2026 02:16:44 CICSPRD1 A transaction dump was taken for dumpcode: AEID, Dumpid: 1/0120. DFHAC2206 02:16:44 CICSPRD1 Transaction TST1 failed with abend AEID. Updates to local recoverable resources backed out.
IBM documentation
IBM documentation: AEID. Use the documentation for your installed release.
Related codes
Questions
Is AEID about reaching the end of a VSAM file?
No. A browse that runs past the end of a file raises ENDFILE and abends with AEIT. AEID comes from terminal control RECEIVE.
Can a normal 3270 user get AEID?
It isn't something 3270 users normally see. IBM documents EOF for RECEIVE on terminals not attached through z/OS Communications Server, and sequential terminals are the usual case.
What character marks the end of each input message?
A backslash, X'E0', by default. Your installation can set a different one in the system initialization table.