How does Datacom dynamic extend of an area allocate extents for non-SMS files
How is the volume for the new extent selected?
Release: 19.0
Datacom calls z/OS macros to request additional extents. z/OS performs the allocation of extents on DASD based on z/OS rules.
For non-SMS datasets up to 16 extents per volume are allowed and a maximum of 64k tracks per volume. Total number of volumes allowed by z/OS is 59 volumes. Datacom has a limit of 16m tracks for any given dataset.
For datasets defined with DSNTYPE=LARGE more than 64k tracks per volume can be allocated assuming the 3390 device type has more than 64k tracks defined to it.
For extended address volume (EAV) DASD with more than 65520 cylinders, non-VSAM sequential datasets will only be allocated in extended address space (EAS), that is cylinder numbers greater than 65520, if the dataset is allocated with EATTR=OPT.
Datacom starts on volume 1 and fills it to the limit, either 16 extents or 64k track limit based on how it was the defined when the dataset was allocated. As each volume fills we move to the next volume going from left to right as listed in the z/OS catalog. Datacom never stores the list of volumes, it always uses the z/OS catalog.
Datacom allows you to change the secondary size value using directed extend. If the secondary size is zero then Data Dictionary value for the secondary extent size is used.
Once you move to another volume, we never go back to allocate new space on a previous volume, space usage is constantly going from left to right to the next volume.
Primary allocation will try to satisfy the primary size in one large extent or up to 5 extents. If after 5 extents it cannot satisfy the primary space that volume is rejected. Secondary allocations always need to satisfy the size in one contiguous extent. If the volume does not have that at the time of the secondary allocation that volume is skipped and onto the next one. If there are no more volumes then it returns an x37 abend.
If you request large secondary extents like 4000 cylinders and the dataset is not allocated with DSNTYPE=LARGE the 64k limit will stop you allocating further extents on the volume after 1 extent (4,000 cylinders times 15 tracks = 60,000 tracks). The next extent will be forced into the next volume. In this case you will see the volume with enough space for another extent but due to the attributes selected at allocation time, it makes space that appears to be useable not available at the time of the dynamic extend. z/OS controls this not Datacom.
See documentation sections Creating and Maintaining Data Areas and DYNAMIC_EXTEND
See article Adding multiple disk pack volumes to Datacom files without SMS