z/OS and TSO message

IKJ56228I: Data set not in catalog or catalog can't be accessed

IKJ56228I means a TSO command, CLIST or REXX exec asked for a data set by name, and z/OS couldn't find that name in the catalog, or couldn't read the catalog that should hold it.

Also written as IKJ56228, IKJ56228I not in catalog, data set not in catalog or catalog can not be accessed, TSO data set not in catalog, ALLOCATE not in catalog.

What it means

z/OS finds data sets by name through catalogs. The master catalog points each high-level qualifier (the first part of the name) to a user catalog, and the user catalog records which disk or tape volume holds the data set. When a TSO command needs a data set, it asks dynamic allocation to look the name up. If the lookup fails, TSO reports IKJ56228I with the full name it searched for.

That full name is the first thing to read. TSO adds a prefix, normally your user ID, to any data set name you type without single quotes. So PROD.PAYROLL.MASTER typed bare becomes PAYU07.PROD.PAYROLL.MASTER, which probably doesn't exist.

The I at the end of the message number stands for informational. The command that needed the data set has failed, and TSO is waiting for your next command, not for an answer to this message.

Common causes

  • The name was typed without single quotes, so TSO added your prefix in front of it.
  • A typo in one of the qualifiers.
  • The data set doesn't exist yet, or it was deleted. The job that creates it may not have run, or storage management may have removed it after it expired.
  • The data set exists on a volume but isn't cataloged. This happens with some older non-SMS data sets and after a catalog entry was removed.
  • The catalog can't be reached. The high-level qualifier has no alias on this system, or the user catalog is on a volume that is offline.
  • You're on a different system from the one that holds the data set, and the two don't share catalogs.
  • In a CLIST or REXX exec, a variable held the wrong value, so the exec built a name that doesn't exist.

How to find the problem

  1. Read the data set name in the message. If your user ID appears in front of a name you typed without it, the quotes are the problem.
  2. Type PROFILE at the READY prompt to see your current prefix setting.
  3. Run LISTCAT ENTRIES('PROD.PAYROLL.MASTER'). If the name isn't cataloged, LISTCAT says ENTRY NOT FOUND. Then try LISTCAT LEVEL('PROD.PAYROLL') to list similar names, which catches typos quickly.
  4. In ISPF, option 3.4 with a pattern such as PROD.PAYROLL.* shows what exists under that qualifier.
  5. If LISTCAT reports an error reaching the catalog rather than a missing entry, the problem is on the storage side. Note the messages and pass them to your storage administrators.

How to fix it

  • Put the full name in single quotes, for example ALLOC FI(PAYIN) DA('PROD.PAYROLL.MASTER') SHR REUSE.
  • In REXX, build the quotes into the command string, for example "ALLOC FI(PAYIN) DA('"dsn"') SHR REUSE", and check the return code after it.
  • Correct any typo, or run the job that creates the data set first.
  • To test whether a data set exists before allocating it, use the REXX function SYSDSN. It returns OK when the data set is there and a short reason when it isn't.
  • For an uncataloged data set, ask whether it should be cataloged, or allocate it with its volume and unit given explicitly.
  • For a missing alias or an unavailable catalog, contact the storage administrators. Users can't fix catalog structure themselves.

What it looks like

READY
ALLOC FI(PAYIN) DA(PROD.PAYROLL.MASTER) SHR
IKJ56228I DATA SET PAYU07.PROD.PAYROLL.MASTER NOT IN CATALOG OR CATALOG CAN NOT BE ACCESSED
READY

Questions

Why does the message show my user ID in front of the data set name?

TSO adds your prefix to any name typed without single quotes. Put quotes around the full name and TSO uses it exactly as typed.

Is IKJ56228I the same as a JCL data set not found error?

It's the TSO version of the same problem. In a batch job the equivalent is IEF212I DATA SET NOT FOUND, usually followed by IEF453I JOB FAILED - JCL ERROR.

I can see the data set in ISPF 3.4. Why does TSO say it isn't cataloged?

Check the quotes first, because 3.4 shows the real name while TSO may have added your prefix. If the name matches exactly, check that both sessions are on the same system.