z/OS message

IEC149I: 813 abend, tape label data set name mismatch

IEC149I means the data set name in a tape's header label didn't match the name z/OS expected from the JCL, so the open failed with system abend 813. IBM documents one return code for it, 04.

Other names for this code

Also written as IEC149I 813-04, 813-04, abend 813, S813, IEC149I, system abend 813.

What it means

A tape with standard labels has a header label in front of each data set on it. The header label records the data set name. When a program opens a tape data set, z/OS reads that label and compares the name in it with the name in the job file control block (JFCB), which comes from the DSN on the DD statement. If they don't match, z/OS writes IEC149I and ends the step with abend 813 and return code 04.

A standard tape label only has room for 17 characters of the data set name. It stores the last 17 characters, and that is what gets compared. So two names that end in the same 17 characters look the same to this check, and a name that differs only in its first qualifiers still matches.

The message gives the abend and return code, the module that called the routine that issued it, the job name, step name and DD name, the device number, the volume serial and the data set name from the JCL. At the end, after LBL=, it shows the data set name actually found in the tape label. That last field usually tells you straight away what went wrong.

The step ends unless a DCB abend exit ignores or recovers the error. IEF450I follows with ABEND=S813 and REASON=00000004.

Common causes

  • The DD statement names the wrong volume serial, so z/OS mounted a tape that holds a different data set.
  • The DSN on the DD statement is misspelled or uses the wrong generation or date qualifier.
  • LABEL=(n) points at the wrong file on a multifile tape, so the header found belongs to another data set.
  • The first file on the tape was never written. The tape holds only a volume label and a dummy header, for example a scratch tape given by mistake.
  • A program changed the JFCB before the open and put the wrong name in it.

How to find the problem

  1. In SDSF, open JESYSMSG and find IEC149I. Compare the data set name from the JCL with the name after LBL=. Remember that only the last 17 characters count.
  2. Check the volume serial in the message against the volume your catalog or tape management system holds for that data set, with LISTCAT ENTRIES('PROD.PAYROLL.ARCHIVE') VOLUME.
  3. If the DD statement codes VOL=SER or LABEL, check both against the catalog or tape inventory.
  4. If LBL= doesn't show a real data set name, the tape may have no data set written on it. Ask operations whether it is a scratch tape.

How to fix it

  • Correct the DSN, the volume serial or the LABEL file number on the DD statement.
  • For a cataloged data set, remove VOL=SER from the DD statement and let the catalog supply the right volume.
  • If the tape is empty, find the job that should have written it and rerun that job first.
  • If a program builds the JFCB itself, check the code that sets the data set name.

IBM documentation

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

Report a correction to WND Software.

Questions

Why does 813 compare only part of the name?

The header label on a standard-labeled tape has room for 17 characters, so it keeps the last 17 characters of the data set name. That is all z/OS can compare.

Can I bypass the label check?

LABEL=(,BLP) skips label processing, but most installations restrict it, and using it without authority can end the step with a 913 abend instead (IEC150I return code 64). Fix the name or the volume rather than bypassing the check.

What does LBL= show?

The data set name found in the tape's header label. Comparing it with the name from the JCL usually shows the mistake at once.