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.
srchforWhen 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.
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
STEPLIB concatenation of my TSO logon procedure but none of its libraries contained an ISPCFIG or ISPCFIGU load modules.ISFCFIGU load module in XYZ.LIBRARY PDS.TSO ISPCCONF'XYZ.LIBRARY' as Input Data Set Name and ISPCFIGU as Input MemberThis converted the load module back to a kewyord format specified on the initial panel.
Now
ISPF_TEMPORARY_DATA_SET_QUALIFIER and see that it is defined asISPF_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
After logging out of TSO and logging back in all worked.
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.
This is a shortened version of the story. There was a number of try and fail steps in between.