In version 14.0, a new parameter was introduced for the FORMAT function - LIBFMT= {H | F}. This parameter identifies whether the block number is stored as a 2-byte value (parameter value H for halfword), or as a 4-byte value (parameter value F for fullword). If this is not specified, blocks will use the 2-byte format. The result, as specified in the CA IPC Implementation Guide:
With the old 2-byte block numbering format, the maximum amount of space that can be allocated to one VLS library is 60900 blocks. With the new 4-byte block numbering format, the maximum space limitation for the VLS library is 65,535 tracks.
Here is a table showing three common blocksizes, and the maximum number of blocks or tracks you can allocate, depending on whether you use LIBFMT=H, with its maximum number of blocks, or LIBFMT=F, with the maximum allocation of 65535 tracks (4369 cylinders):
Block | Blocks | LIBFMT=H | LIBFMT=F |
Size | per track | Max Trks | Max Cyls | Max blocks | Max Trks | Max Cyls | Max blocks |
1960 | 28 | 2175 | 145 | 60900 | 65535 | 4369 | 1834980 |
2000 | 26 | 2342 | 156 | 60900 | 65535 | 4369 | 1703910 |
4000 | 12 | 5075 | 338 | 60900 | 65535 | 4369 | 786420 |
To allocate and initialize this VLS file, you can use JCL like this below. Note that secondary allocations are not used with VLS files.
//FMTVLS01 EXEC PGM=VLSUTIL
// INCLUDE MEMBER=IPCSTLIB
// INCLUDE MEMBER=IPCDDOUT
//VLSFILE DD DSN=YOUR.VLS.LIB,DISP=(,CATLG,DELETE),
// UNIT=3390,VOL=SER=DASD04,
// DSORG=DA,SPACE=(CYL,(2000))
//SYSIN DD *
FORMAT BLKSIZE=4000,NAMELEN=24,LIBFMT=F
/*