ISPF - The temporary data set qualifier is invalid.

Published on: 2024-03-09

I was just getting ready for a client conference when I ran into an issue with ISPF on my ZVDT instance.

Error on srchfor

When I tried to run srchfor in sys1.proclib I got the following message

The temporary data set qualifier is invalid.
The log, list and temporary cntl data sets will be allocated without it.
***

I asked Aria, the Opera AI assistent, for help and it pointed me to a nice article that discussed the same issue. As much as it was interesting to learn about TSO ISPVCALL for tracing ISPF processing it did not help me much. I had the same issue for all users and so could not compare a good and bad trace. Also deleting the &SYSUID..SPFLOGx.LIST datasets did not help.

The ISPVCALL trace did however contain some clues. There was an error mentioning ISPA001. Looked into the ISPF Messages and Codes manual and it said:

This message precedes further messages for which ISPF system data received the allocation error.

So I looked further down the trace and found ISPA008. Checking the Messages and Codes manual again the Explanation it said

The temporary data set qualifier, specified in the
configuration utility, did not adhere to the qualifier
naming convention.

ISPF Configuration Table

So I fired up the the ISPF Planning and Customizing manual and read through chapter 2 _ The ISPF Configuration Table_.

There I learned about the config table load module ISPCFIG and its user and VSAM variants ISPCFIGU and ISPCFIGV respectively.

Then

  1. Check the STEPLIB concatenation of my TSO logon procedure but none of its libraries contained an ISPCFIG or ISPCFIGU load modules.
  2. Look into the LNKLST concatenation. Found a ISFCFIGU load module in XYZ.LIBRARY PDS.
  3. Start the ISPF Configuration Utility via TSO ISPCCONF
  4. On the initial panel specify a PDS and a member where to store the keyword file under the Keyword File Data Set section Dataset and Member field.
  5. Pick option 7 _Convert Configuration Table Loadmod to Keyword File
  6. Specify 'XYZ.LIBRARY' as Input Data Set Name and ISPCFIGU as Input Member

This converted the load module back to a kewyord format specified on the initial panel.

The ISPF_TEMPORARY_DATA_SET_QUALIFIER keyword

Now

  1. Select option 2 Edit Keyword File Configuration Table
  2. Find ISPF_TEMPORARY_DATA_SET_QUALIFIER and see that it is defined as
ISPF_TEMPORARY_DATA_SET_QUALIFIER           = &SYSNAME(5:4)

Now it all made sense. It was most likely copied from another system which had 8 character &SYSNAME and only the last 4 (positions 5-8) were use. Well my system only had a 4 character name and that is why it was failing.

The fix was to change the ISPF_TEMPORARY_DATA_SET_QUALIFIER to

ISPF_TEMPORARY_DATA_SET_QUALIFIER           = &SYSNAME
  1. Exit the editor via PF03
  2. Let the utility verify the table.
  3. On the main panel select option 4 Build Configuration Table Load Module

After logging out of TSO and logging back in all worked.

Comment out instead

Another possibility instead of changing the value of ISPF_TEMPORARY_DATA_SET_QUALIFIER is to completely remove it or comment it out by placing /* to the first two columns or the table record.

That way the extra qualifier is not used at all and temp datasets are stored directly at &SYSUID..SPFLOGx.LIST instead of &SYSUID..<qual>.SPFLOGx.LIST.

P.S.

This is a shortened version of the story. There was a number of try and fail steps in between.