IEF212I
A DD statement asked for a file that is not in the catalog, so the step never started.
Also written DATA SET NOT FOUND, JCL ERROR
Why it matters. It's the most common JCL error. The message points at the exact DD, so you can fix it fast.
Syntax
IEF212I jobname stepname ddname - DATA SET NOT FOUND
- Typo in DSN
- Compare the name letter by letter with LISTCAT.
- File never made
- Run the job that makes it, or use DISP=NEW.
- Wrong high-level qualifier
- A name without your prefix. Batch JCL uses the name as written.
- Not in the catalog
- Catalog it, or name its volume with VOL=SER.
- Wrong system
- The file is on another LPAR. Check which system you submitted to.
Try it IEF212I
- 1
Job CUSTCHK copies the customer file. Send it from your DEV JCL library to run.
SUBMIT 'ZB0001.DEV.JCL(CUSTCHK)' - 2
Read the output. Find the IEF212I line.
OUTPUT CUSTCHK - 3
SYSUT1 names ZBANK.DATA.CUSTOMR. Check the catalog for the real name. List everything that starts with ZBANK.DATA.
LISTCAT LEVEL(ZBANK.DATA) - 4
You're editing job CUSTCHK. Write the SYSUT1 DD again with the right name. Share the file.
JCL //SYSUT1 DD DSN=ZBANK.DATA.CUSTOMER,DISP=SHR - 5
Submit the job CUSTCHK again.
SUBMIT 'ZB0001.DEV.JCL(CUSTCHK)' - 6
Read the output of the new job.
OUTPUT CUSTCHK
Remember
- IEF212I names the job, the step and the DD.
- The step did not run, so there is no return code.
- Compare the name on that DD with LISTCAT, letter by letter.
The usual mistake
Changing the program because the step failed
IEF212I comes before the program starts. The program never ran, so it cannot be the cause.
Fix the dataset name on the DD that IEF212I names
On real z/OS
The message is as on z/OS, and the job ends in a JCL error with no return code. Real output also puts the lines in both the job log and the step messages, and the order of lines differs a little. MF/OS only shows this message for a file that is missing from its own catalog.
Where can I practise fixing IEF212I?
Right here, at ZedBank. You take a junior job at a simulated bank, meet IEF212I in real work and fix it, with Zed beside you. There's nothing to install.
Start at ZedBankRelated
- DD statementThe JCL statement that connects a name inside a program to a real dataset outside it.
- Job stepOne program execution within a job. A job is simply a sequence of steps that run in order.
- JCLJob Control Language: the language used to tell the mainframe what programs to run, in what order, and with what files.
- CatalogThe system's index of where datasets live, so you can refer to a dataset by name without knowing which disk it is on.
- DatasetWhat a mainframe calls a file: a named collection of records with a defined structure, rather than a loose stream of bytes.