This is really isn't an assembler question. IBM-MAIN is a better place to discuss this.
First I would ask: why do you need so many active allocations at once? You can free allocations after you close the files. You can even allocate them with FREE=CLOSE so this happens automatically. Second, have you looked into using the XTIOT for dynamic allocations? For ages now, VSAM data sets can be allocated using the XTIOT and uncaptured UCBs. As of z/OS 1.12 almost all other access methods also support XTIOT and uncaptured UCBs. XTIOT allocations do not use entries in the regular TIOT. This support was added for DB2 because it needs so many simultaneously open data sets. And XTIOTs with uncaptured UCBs use less below-the-line storage than TIOT allocations. The only performance problem with a large TIOT is that it allows many non-XTIOT allocations. Functions that access the TIOT must perform a linear search of the TIOT entries, so DYNALLOC, OPEN, CLOSE, RDJFCB, EOV and the like all get slower with more old-style allocations. The TIOT can also get messy to manage if there have been many allocations and deallocations. A large TIOT does not slow down job steps with few allocations. David