Examine source for dynamic allocation callers that set the S99DSABA and S99ACUCB flags

Description: TIOTs and XTIOTs contain entries for each DD statement allocated by either batch (JCL) or dynamic allocation. The TIOT is a below-the-line control block that contains contiguous DD entries, which allows for a sequential search. Because of limits on its size and structure, a TIOT can only accommodate a specific number of DD statements (for example, 3273 single unit DD statements for a TIOT size of 32k.)

To overcome this restriction, device allocation introduced XTIOTS or extended TIOTs above the 16M line, but the support was limited to authorized dynamic allocation callers only because the authorized flag S99TIOEX had to be set in order to build XTIOTs. Later, this restriction was relaxed when unauthorized dynamic allocation callers could request XTIOTs by setting S99ACUCB; however, the ability to get an above-the-line data set association block (DSAB) that contains a pointer to the TIOTs/ XTIOTs was limited to requests by authorized callers only, because the S99DSABA flag (which can be set by authorized or unauthorized callers) is honored only if the authorized S99TIOEX flag also has been set.

In z/OS V1R12, the Basic Access Method (BAM) added support for XTIOTs. Because it makes sense to allow unauthorized callers to get DSABs above the line, in z/OS V1R13, device allocation added support to build DSABs above the line when the S99DSABA bit flag is set and either S99ACUCB or S99TIOEX is also set. Thus, unauthorized users can fully utilize the virtual storage constraint relief (VSCR) capabilities provided by allocation and get the benefits of both the above-the-line DSABs and XTIOTs.

If any unauthorized dynamic allocation caller indicates through S99DSABA that above-the- line DSABs are supported but encounters a programming error in the user code when referencing above-the-line DSABs, action is required. Before z/OS V1R13, if the dynamic allocation callers set the S99DSABA and S99ACUCB flags, allocation built below-the-line DSABs, scanned the below-the-line DSAB queue, and found them below the line. For z/OS V1R13, if dynamic allocation callers request above-the-line DSABs through S99DSABA and S99ACUCB, allocation builds above-the-line DSABs, scans the above-the-line DSAB queue, and finds them above the line. If the dynamic allocation callers have an existing programming error when they attempt to reference above-the-line DSABs , they will continue to encounter errors. If these dynamic allocation callers need to use below-the-line DSABS , they should not set the S99DSABA.

Steps to take: For mission critical code, examine source for use of S99DSABA. If found, verify that field DSQDSABA is not used and that 4 byte (31 bit) pointers are used if the DSAB is accessed by the program itself.

Reference information: For details about S99DSABA and S99ACUCB, see z/OS MVS Programming: Authorized Assembler Services Guide.