Consider the behavior of an empty data set in concatenation
Description
- Before V2R1, REXX EXECIO would fail with RC=4 if EXECIO was used with DISKR or DISKRU to read a DD consisting of a concatenation of 2 or more data sets where one of the data sets was an empty (null) sequential data set.
- Starting with V2R1, REXX EXECIO can read (using DISKR or DISKRU) a DD even if one or more of the data sets within that DD concatenation is an empty data set, as long as all empty data sets within the concatenation are SMS managed empty data sets. If the DD concatenation contains a non-SMS managed empty data set, EXECIO will still fail the read request with RC=4 and messages IRX0670E and IRX0566E.
Table 1 provides more details about this migration action. Use this information to plan your changes to the system.
Element or feature: | TSO/E |
---|---|
When change was introduced: | z/OS V2R1. |
Applies to migration from: | z/OS V1R13. |
Timing: | Before installing z/OS V2R2. |
Is the migration action required? | Yes, if you depend upon the behavior that occurred before z/OS V2R1. |
Target system hardware requirements: | None. |
Target system software requirements: | None. |
Other system (coexistence or fallback) requirements: | None. |
Restrictions: | None. |
System impacts: | None. |
Related IBM Health Checker for z/OS check: | None. |
Steps to take
This item is intended to alert users of EXECIO to a behavioral change that might occur due to a relaxing of the restriction on null data sets within a concatenation being read by EXECIO DISKR or DISKRU. If your exec tests the EXECIO return code and handles RC=4, you will likely have no action that needs to be taken. The RC=4 that was previously returned when EXECIO detected a null data set within the DD concatenation being read by EXECIO is still a possible return code, if the concatenation contains a null data set which is not SMS managed. Yet, if the EXECIO read against a DD containing a null data set completes successfully (i.e. RC=0 or 2), you would typically have no exceptional action to take, since the read operation will have worked as if the empty data set were not even present.
On the other hand, if you have an exec that expects EXECIO to fail whenever it reads a concatenation containing a null data set, and you exec depends on this EXECIO read failure, you should now look for RC=0 or RC=2 to allow for the possibility of success.
For example, if you use EXECIO RC=4 and the associated message IRX0566E to determine whether a DD concatenation contains a null data set, this will no longer work if the null data set is an SMS managed sequential data set. The read would work (RC=0). You could still determine if a data set is empty by allocating that data set alone to a DD and reading it with EXECIO. RC=2 (or RC=0, if execio * were used) and zero records read would indicate that the data set was empty.
Reference information
- For details about EXECIO see, z/OS TSO/E REXX Reference
- For details about messages IRX0670E and IRX0566E, see z/OS TSO/E Messages.