Defining VSAM subpools

This topic describes control statements in the DFSVSMxx member that you use to define VSAM subpools.

VSRBF control statements

Read syntax diagramSkip visual syntax diagramVSRBF= buffersize, number of buffers, type,HSOHSR,HS n
VSRBF=
The keyword for VSAM subpool definition. It must begin in the first position of the control statement. Only one set of subparameters can appear on each control statement. Each statement defines one subpool.
buffersize
A three- to five-digit number specifying the buffer size for this subpool. Acceptable values are 512, 1024, 2048, 4096, 8192, 12288, 16384, 20480, 24576, 28672, and 32768.
number-of-buffers
A one- to five-digit number (3 to 32767) specifying the number of buffers in this subpool. If you specify a number of buffers less than the minimum number required, IMS increases the number to the minimum and issues a warning message.
type
A one-character field that specifies whether the subpool in the shared resource pool is an index subpool (I) or a data subpool (D). This parameter is optional. If this parameter is invalid or not specified, data subpool (D) is assumed.

If you do not specify a value for type in any VSRBF statements, both data and index occupy the same buffer subpool. When you do specify D or I in any VSRBF statement, you must also specify a type of I for each size that might be required to handle index buffering requests. An error with the message DFS0730I RC O,DC might result if a subpool of sufficient size is not found.

The following example provides 20 2K buffers and 40 4K buffers that can all be used by both data and index if these are the only VSRBF statements in DFSVSMxx.

VSRBF=2048,20
VSRBF=4096,40
In the next example, ten index buffers (2K) are provided in the first line, and ten data buffers (2K) are provided in the second line. The third line provides 20 data buffers (4K). No index buffers of 4K are provided in this example.
VSRBF=2048,10,I
VSRBF=2048,10,D
VSRBF=4096,20

Although the index and data components of a VSAM data set must reside in the same shared resource pool, they can be assigned different subpools. You can define subpools that accommodate each component of the data set. Note that an index subpool cannot exist without a data subpool (within a given shared resource pool), but a data subpool can exist without an index subpool. If any index subpool exists in a local shared resource pool, all index components of VSAM data sets in that shared pool must share the index subpool. The CONTROLINTERVALSIZE parameter in the listing of the VSAM catalog that shows the control interval sizes assigned to the components can help you determine the buffer sizes needed for both index and data components.

HSO│HSR
Optionally specifies the kind of action IMS should take if Hiperspace (extended storage on z/OS®) buffering for this subpool is not available. If this parameter is invalid or not coded when HSn is given, the HSO option is assumed.
HSO
Indicates that Hiperspace buffering is optional and IMS can continue initialization without Hiperspace buffering.
HSR
Indicates that Hiperspace buffering is required and IMS must terminate if Hiperspace buffering is not available.

HSO and HSR are the minimum truncations of which up to the full terms (HSOptional and HSRequired) are recognized.

HSn
Is an optional one- to eight- digit number n ranging from (3 to 16777215) that specifies the number of Hiperspace buffers to build for this subpool.
HSO│HSR and HSn are valid only on 4K and larger boundaries. See the following example.
VSRBF=4096,10,HS40,HSR
VSRBF=8192,10,HS50,HSRE
VSRBF=12288,4,HS12
VSRBF=16384,4,HS20,HSO
VSRBF=20480,4,HSOP,HS8
VSRBF=24576,4,HSOPTIONAL,HS8
VSRBF=28672,1,HS9,HSREQUIRED
VSRBF=32768,1,HSREQ,HS9

Only the buffer size and number-of-buffers parameters are positional. The type and HS parameters can be coded in any order but must be separated by commas without any intervening blanks. If any parameter is invalid, the remainder of the statement is ignored and defaults apply for the remaining parameters.

Using the VSRBF statement without any POOLID statement can still define one, and only one, VSAM local shared resource pool. However, even with one VSAM shared resource pool, you can now use the TYPE parameter to define either an index or data subpool within the shared resource pool.

Restriction: The total Hiperspace buffer pool allocation is limited to 2 GB. If the number of buffers times the buffer size exceeds the limit, a 2 GB pool size is used and a warning message is issued.

DBD control statement

Read syntax diagramSkip visual syntax diagramDBD= dbdname(dataset number,id,ERASE=YESNO,FREESPACE=NOYES)
DBD=
If coded, specifies that the data set having a matching ID parameter, as defined on the POOLID shared pool definition statement, is to be directed to the indicated shared resource pool.

A shared resource pool is assigned to a data set based upon the shared resource pool identifier specified on the DBD statement for that data set. Then a subpool within the assigned shared resource pool is assigned to the data set based upon buffer length.

If no subpool in the shared resource pool is big enough, an attempt to open the data set fails. An open is then retried in the default shared pool, which is the first shared resource pool you define. To avoid another open failure, subpools of the largest sizes that might be encountered in the system should be defined in the default pool.

If no DBD statement is coded for a data set, the default shared resource pool is assigned.
dbdname
Specifies the name on the DBD macro statement NAME= keyword. The DBD name can be for a non-partitioned database, a HALDB partition, or a HALDB master. For a HALDB partition, specify the name of the partition as the dbdname. If you specify a HALDB master name, all the HALDB partitions associated with the HALDB are assigned to the same shared resource pool.

Related reading: See Database Description (DBD) Generation utility in IMS Version 15.3 System Utilities for information about coding the DBD macro statement.

data set number
Identifies the specific data set of a data set group within a database (identified by the dbdname parameter) that requests assignment of a specific shared pool. The number is an IMS internally assigned value between 1 and 10.

For data organizations such as primary index, unique secondary index, and HISAM without dependent segments, the primary data set of the data set group is assigned data set number 1. No secondary data set of the data set group exists for these data organizations.

For data organizations such as non-unique secondary index and HISAM with dependent segments, the primary data set of the data set group is assigned data set number 1, and the secondary data set of the data set group is assigned data set number 2.

For hierarchic direct data organization, the data set group always consists of a single data set. The data set of the first data set group is assigned data set number 1, and data set numbers for subsequent data set groups are sequentially assigned numbers 2,3,...10. The maximum number of data set groups for a database is 10.

Requirement: For High Availability Large Databases (HALDBs), specify the data set number as an alphabetic character. The valid data set numbers defined for HALDB partition data sets are A through J, L, and X. (When HALDB Online Reorganization is used, data sets M through V and Y are automatically directed to the same shared resource pools for data sets A through J and X. The specification of M through V and Y are not valid.) The data set of the first data set group must be assigned the letter A (for both data sets A and M when HALDB Online Reorganization is used). The data set numbers for subsequent data set groups (B through J and N through V when HALDB Online Reorganization is used) must be sequentially assigned the other valid letters (B,C, ..., J). Use the letter L to specify the indirect list data set. For PHIDAM databases, use the letter X (for both data sets X and Y when HALDB Online Reorganization is used) to specify the primary index data set.

For PSINDEX databases, you cannot code an alphanumeric to designate the data set number. You must code a numeric value.

id
Specifies the user-defined identifier that is assigned to a specific shared resource pool. The ID is a one- to four-character alphanumeric field and must be equal to the ID assigned to the specific shared resource pool on the POOLID statement.
ERASE=YES│NO
Indicates the treatment of logical records that are deleted. YES indicates that the deleted record should be erased. NO indicates that the deleted record should not be erased but should be marked as a deleted record. The default is YES.
FREESPACE=YES│NO
Indicates the treatment of the defined free space percent in the KSDS. If YES is specified, the defined free space should be preserved. If NO is specified, the defined free space should not be preserved. The default is NO.