z/OS message

IEC130I: DD statement missing at open

IEC130I means a program tried to open a file whose DD name isn't allocated to the job step. z/OS doesn't abend the step for this. The open fails, and what happens next is up to the program.

Other names for this code

Also written as IEC130I DD STATEMENT MISSING, DD STATEMENT MISSING, IEC130I SYSLIB DD STATEMENT MISSING, IEC130I, DD statement missing error.

What it means

A program opens a file by its DD name, the eight-character name on the left of a DD statement such as //PAYIN DD. z/OS looks for that name among the files allocated to the step. If it isn't there, the open can't go ahead. z/OS writes IEC130I with the DD name and the text DD STATEMENT MISSING, and the open fails.

Unlike most IEC open messages, IEC130I has no abend of its own. The step keeps running and the program is told the open didn't work. The program decides what happens next. A well-written program reports the problem and ends with a return code. A COBOL program that checks its FILE STATUS sees status 35 after an OPEN INPUT of a missing file. One that doesn't check usually ends with IGZ0035S and, under Language Environment, a U4038 abend.

Some programs and utilities open DD names that are optional, just to see whether you supplied them. In those cases IEC130I is harmless noise. IBM has fixed at least one compiler that issued it for every COPY statement when a library DD wasn't allocated. The compile still worked. Vendor products that look for an optional options file can produce it too.

The message itself carries only the DD name. To see which job and step issued it, look at where it appears in the job log.

Common causes

  • The DD name in the JCL is spelled differently from the one in the program, for example PAYIN in the JCL and PAYINP in the COBOL ASSIGN clause.
  • A DD statement was left out of the step, or removed during a change.
  • A DD override for a cataloged procedure names the wrong step, so the DD statement went to a different step.
  • The program runs under TSO or ISPF in the foreground, and nobody allocated the file first.
  • The program or utility probes an optional DD name, and the message is only a side effect.

How to find the problem

  1. Take the DD name from the message. In SDSF, open the job's JESJCL listing, which shows procedures expanded, and check whether the failing step has that DD name.
  2. Compare the name with the program. In COBOL it is the name in the SELECT ... ASSIGN clause. In other languages, look at the file definition or the open call.
  3. Look at the next messages in the job log. IGZ0035S or a COBOL file status 35 shows the program treated the missing file as an error. If the step ends normally with a zero return code, the message was probably an optional probe.
  4. Under TSO, list the files allocated to your session with LISTALC STATUS, or with the ISRDDN command from ISPF.

How to fix it

  • Add the missing DD statement, or correct the DD name so the JCL and the program agree.
  • If the step doesn't need the file this run, code it as //PAYIN DD DUMMY. The open then works and the first read returns end of file.
  • In COBOL, declare the file OPTIONAL in the SELECT clause if it may really be absent. An OPEN INPUT of a missing optional file returns status 05 instead of failing.
  • For a procedure, put the override on the right step name, such as //STEP020.PAYIN DD.
  • Under TSO, allocate the file before running the program, for example ALLOC FI(PAYIN) DA('PROD.PAYROLL.INPUT') SHR.

IBM documentation

IBM documentation: IEC130I. Use the documentation for your installed release.

Report a correction to WND Software.

Questions

Is IEC130I an error or a warning?

It reports that an open failed because the DD name wasn't allocated. Whether that matters depends on the program. Some programs stop, and others were only checking for an optional file and carry on.

Why does IEC130I appear when my job ends with return code 0?

The program or utility probably looked for an optional DD name that you didn't supply. If the output is correct, you can ignore it or add the DD statement as DD DUMMY to silence it.

What COBOL file status goes with IEC130I?

An OPEN INPUT, I-O or EXTEND of a file that isn't OPTIONAL gives file status 35 when its DD statement is missing.