IEFC452I: Job not run, JCL error
IEFC452I JOB NOT RUN - JCL ERROR means the z/OS converter found an error in a job's JCL before the job started, so no step ran. In most cases another IEFC message in the same output names the statement and the problem.
Other names for this code
Also written as IEFC452, JOB NOT RUN - JCL ERROR, IEFC452I JOB NOT RUN JCL ERROR, job not run JCL error, JCL error job not run, IEF452I.
What it means
Before z/OS runs a batch job, JES hands the JCL to the converter. The converter pulls in any cataloged procedures the job calls, substitutes symbolic parameters and checks every statement for syntax. If it finds an error, the job goes no further. IEFC452I records that the job was never started. No step runs and no data sets are allocated.
The text after the message ID tells you which case you have. Most often it's the job name, which means a statement in the job has an error. JOBFAIL means the error is on the JOB statement and the system couldn't work out the job name. INVALID means the name on the JOB statement breaks the naming rules. If an operator's START command names a procedure that isn't in the procedure library, or that has a JCL error, the name shown is the started task's name.
Now and then the cause is a fault in the system rather than in your JCL, such as an I/O error while the converter reads a procedure library. Then there is no IEFC detail message for a statement, and the console shows the I/O error.
IEFC452I comes earlier than IEF453I. IEF453I JOB FAILED - JCL ERROR appears after the JCL was accepted, when a step can't be set up as it starts. With IEFC452I nothing has run, so you fix the JCL and resubmit the whole job.
Common causes
- A misspelled statement name or keyword, such as EXCE instead of EXEC, or DNS instead of DSN.
- A continuation mistake. A line that should continue is missing the comma after its last parameter, or the next line starts outside columns 4 to 16.
- A parameter that runs past column 71. Columns 72 to 80 aren't part of the statement, so the end of the parameter is lost.
- Unbalanced parentheses or apostrophes, often in a PARM value or a long DCB list.
- An EXEC statement that names a procedure the job can't find, because the name is wrong or the JCLLIB statement points to the wrong library.
- A symbolic parameter or system symbol that resolves to a value the syntax doesn't allow, such as an empty value that leaves a data set name with a missing qualifier.
- A JOB statement error, such as a job name longer than eight characters.
How to find the problem
- Open the job in SDSF from the ST or H panel. Type
?next to the job to list its output data sets. The job log, JESMSGLG, shows IEFC452I with the job name. - Open JESYSMSG. For a JCL error it lists each problem with the JCL statement number and an IEFC message that says what is wrong with that statement.
- Open JESJCL and find that statement number. JESJCL also shows the statements pulled in from procedures, so the error may be inside a procedure and not in the JCL you submitted.
- Look at the line before the flagged one too. A missing comma at the end of one line makes the converter complain about the line after it.
- For a started task, look at the console messages around IEFC452I. The IEFC detail message, such as IEFC612I for a missing procedure, appears there.
How to fix it
- Correct the statement the IEFC message points to and resubmit. Nothing ran, so there are no data sets to clean up and no restart step to choose.
- For a missing procedure, check the name on the EXEC statement. If the procedure is in a private library, add a
// JCLLIB ORDER=(PROD.statement after the JOB statement.PAYROLL. PROCLIB) - For continuation errors, end each continued line with a comma after a complete parameter, and start the next line between columns 4 and 16.
- Before you submit changed JCL, add
TYPRUN=SCANto the JOB statement. The converter checks the syntax and reports the same errors, but the job doesn't run. A scan doesn't check whether data sets exist, so errors like IEF453I can still happen later. - If there is no IEFC detail message and the console shows I/O errors on the JCL or the procedure library, give those messages to your system programmer.
What it looks like
IEFC452I PAYRUN01 - JOB NOT RUN - JCL ERROR
IBM documentation
IBM documentation: IEFC452I. Use the documentation for your installed release.
Related codes
Questions
Did any part of my job run?
No. The converter stops the job before it starts, so no step ran and no data sets were created or deleted. Fix the JCL and resubmit the whole job.
What is the difference between IEFC452I and IEF453I?
IEFC452I means the JCL itself has an error and nothing ran. IEF453I means the JCL was accepted but a step couldn't be set up when it started, often because of a data set problem, so earlier steps may have run.
Why did my START command produce IEFC452I?
The procedure named on the START command wasn't found in the procedure library, or it contains a JCL error. Look at the console messages just before IEFC452I. IEFC612I means the procedure wasn't found, and other IEFC messages point to the bad statement.