Support for new device types that include user-defined block sizes can be implemented in Adabas by modifying one of the table of device-constant entries (TDCEs) reserved for this purpose. A TDCE is X’40’ bytes long and the first free TDCE can be identified by X’0000’ in its first two bytes (TDCDT).
Under BS2000, the address of the first TDCE is at offset ADAIOR+ X‘34’ for all versions of Adabas.
Adabas direct access files are always mapped to UPAM files, removing the need to consider physical device characteristics. PAM pages in a file are addressed relative to the beginning of the file.
Adabas blocks comprise one or more PAM pages. An Adabas virtual track is made up of a fixed number of blocks, and an Adabas virtual cylinder comprises a fixed number of tracks. The definition of tracks and cylinders are independent of the physical device.
There are a number of predefined virtual devices for BS2000 that should meet most of the storage capacity needs that arise. It should be noted that the virtual memory requirement increases significantly with a larger block size.
Support for new device types, including user-defined block sizes, can be implemented in ADAIOR by modifying one of the TDCEs reserved for this purpose.
Note:
The default device type for BS2000 in Adabas 8.2 is 2300. This device
type is compatible with NK4 disks and has 4K rounded blocks for use with
D3475-8F devices. The Adabas 8.1 default was 2002; the default 2000 of previous
versions will not fulfill both of these conditions.
This document covers the following topics:
The information in the following tables must be zapped into the first free TDCE. The rules described in the section General Rules for Defining Device Block Sizes must be followed when changing the TDCE.
Label | Offset | Contents |
---|---|---|
TDCDT | 00 | Device type in unsigned decimal (X’3385’), must be numeric, and unique among all TDCEs |
TDCKSN | 02 | Constant set number: must be uniquely chosen from the values X’28’ (reserved for BS2000 device type 2006), X’2B’, or X’2E’ |
TDCF | 03 | The flag bit must be set—TDCFFBA (X’80’) for FBA/PAM devices or TDCFCKD (X’40’) for CKD devices |
TDCDT1 | 04 | Set to zero under BS2000 |
TDCDT2 | 05 | Set to zero under BS2000 |
TDCDT3 | 06 | Set to zero under BS2000 |
TDCDT4 | 07 | Set to zero under BS2000 |
TDCMSBS | 08 | In BS2000, 32760 for compatibility. Refer to the TDCMSBS default table in Maximum Sequential Block Size in the Adabas z/OS installation instructions for more system- and device-related information. |
TDCTPC | 0A | Number of tracks per cylinder |
TDCCIPT | 0C | Number of FBA blocks or PAM pages per track (if TDCFFBA is set). For BS2000 less than or equal to 16. |
TDCBPCI | 0E | Number of bytes per FBA block or PAM page (2048 if TDCFFBA is set) |
TDCABPT | 10 | Number of Associator blocks per track |
TDCABS | 12 | Associator block size |
TDCACPB | 14 | Number of FBA blocks or PAM pages per Associator block (if TDCFFBA is set) |
TDCDBPT | 16 | Number of Data Storage blocks per track |
TDCDBS | 18 | Data Storage block size |
TDCDCPB | 1A | Number of FBA blocks or PAM pages per Data Storage block (if TDCFFBA is set) |
TDCWBPT | 1C | Number of Work blocks per track |
TDCWBS | 1E | Work block size |
TDCWCPB | 20 | Number of FBA blocks or PAM pages per Work block (if TDCFFBA is set) |
TDCTSBPT | 22 | Number of TEMP or SORT blocks per track (if TDCFFBA is set) |
TDCTSBS | 24 | TEMP or SORT block size |
TDCTSCPB | 26 | Number of FBA blocks or PAM pages per TEMP or SORT block (if TDCFFBA is set) |
TDCPBPT | 28 | Number of PLOG blocks per track |
TDCPBS | 2A | PLOG block size |
TDCPCPB | 2C | Number of FBA blocks or PAM pages per PLOG block (if TDCFFBA is set) |
TDCCBPT | 2E | Number of CLOG blocks per track |
TDCCBS | 30 | CLOG block size |
TDCCCPB2 | 32 | Number of FBA blocks or PAM pages per CLOG block (if TDCFFBA is set) |
In addition, the sequential protection log block size may have to be increased in the corresponding PTT entry in CSECT I_PTT of the load module ADAIOI. PTT entries begin at offset 0 into CSECT I_PTT.
Each PTT entry is X’10’ bytes long and has the structure shown below:
Label | Offset | Contents |
---|---|---|
PTTPN | 00 | Program number |
PTTFT | 01 | File type |
PTTN | 02 | DD name characters 2 - 8 |
PTTF | 08 | Flags:
OUT (X’80’) output BSAM (X’40’) BSAM BACK (X’20’) read backwards JCL (X’10’) BLKSIZE/LRECL/RECFM taken from DATADEF statement or label UNDEF (X’04’) undefined record format VAR (X’02’) variable record format |
- | 09 | Reserved |
PTTMBS | 0A | Maximum block size |
- | 0C | Reserved |
The PTT entry for the sequential protection log can be identified by X‘12F1’ in its first two bytes.
The following general rules must be followed when defining Adabas device block sizes:
all block sizes must be multiples of the number of PAM blocks per track (see Device Types and Block Sizes, elsewhere in this section)
a single block cannot be split between tracks (block size must be less than or equal to the track size)
The following rules apply for Associator and Data Storage blocks:
Associator block size must be greater than one-fourth the size of the largest FDT, and should be large enough to accept definitions in the various administrative blocks (RABN 1 - 30) and in the FCB
The block sizes for Associator and Data Storage should be a multiple of 256, less four bytes (for example, 1020) to save Adabas buffer pool space
The Associator and Data Storage block sizes must be at least 32 less than the sequential block size
Data Storage block size must be greater than: (maximum compressed record length + 10 + padding bytes)
The Work block size must be greater than either (maximum compressed record length + 110) or (Associator block size + 110), whichever is greater.
If ADAM direct addressing is used:
size > (maximum compressed record length + ADAM record length + 24); size > 277 (maximum descriptor length + 24)
However, TEMP and SORT are generally read and written sequentially; therefore, the larger the TEMP/SORT block size, the better.
Block size for TEMP and SORT must be greater than the block size for Data Storage.
The following rules apply for PLOG or SIBA blocks:
The PLOG or SIBA block size must be greater than either (maximum compressed record length + 110) or (Associator block size + 110), whichever is greater.
It is also recommended that PLOG/SIBA be defined larger than the largest Data Storage block size. This avoids increased I/O caused by splitting Data Storage blocks during online ADASAV operations.
The block size (BLKSIZE) of a sequential file is determined as follows:
if PTTF(JCL) then BLKSIZE is taken from file assignment statement or label; if PTTMBS > 0 then BLKSIZE = PTTMBS; if PTTMBS = 0 then if tape then BLKSIZE = 32760; else BLKSIZE = TDCMSBS; else if BLKSIZE in file assignment statement or label then use it; if PTTF(OUT) then if QBLKSIZE > 0 then BLKSIZE = QBLKSIZE; if tape then BLKSIZE = 32760; else BLKSIZE = TDCMSBS; else error.
Note:
QBLKSIZE is an ADARUN
parameter.
The use of hardware compression (IDRC) is not recommended for protection log files.
The primary access method for direct access data sets used by Adabas under BS2000 is PAM (primary access method). The device types defined by Adabas establish a logical structure on a PAM data set in order to process a fixed number of consecutive PAM blocks. For example, for device 2300, one ASSO RABN (Adabas block) consists of two PAM blocks and one logical track consisting of four RABNs.
These device types are “artificial”; there is no relation to the physical devices being used. A maximum of 16 PAM blocks per track can be combined into one I/O call. For more than 16 PAM blocks per track, parameter chaining is used.
The artificial device types defined by Software AG for BS2000 systems are summarized in the following table. The ASSO, DATA, WORK, PLOG, CLOG, and TEMP/SORT/DSIM block sizes are given with PAMs/RABN and RABNs per track.
Device | PAM Pages per Cyl1 | PAM Pages per Track | PAMs per Block/Block size:Blocks per Track | NK4 Compati- ble2 | 4K Rounded3 | |||||
---|---|---|---|---|---|---|---|---|---|---|
ASSO | DATA | WORK | PLOG | CLOG | TEMP/SORT/DSIM | |||||
2000 | 80 | 8 | 1/2048:4 | 2/4080:2 | 2/4096:2 | 2/4096:2 | 2/4096:2 | 2/4080:2 | No | No |
2002 | 152 | 8 | 2/4092:4 | 4/8188:2 | 4/8192:2 | 4/8192:2 | 8/16384:1 | 8/16384:1 | Yes | No |
2004 | 255 | 15 | 3/6140:5 | 5/10236:3 | 5/10240:3 | 5/10240:3 | 15/30720:1 | 15/30720:1 | No | No |
2005 | 220 | 20 | 1/2044:20 | 2/4092:10 | 4/8192:5 | 4/8192:5 | 5/10240:4 | 5/10240:4 | No | No |
2006 | 220 | 20 | 2/4092:10 | 4/8188:5 | 5/10240:4 | 5/10240:4 | 5/10240:4 | 5/10240:4 | No | No |
2008 | 272 | 16 | 2/4092:8 | 16/32656:1 | 16/32760:1 | 16/32760:1 | 16/32760:1 | 16/32760:1 | Yes | No |
2010 | 240 | 16 | 2/4092:8 | 4/8188:4 | 8/16380:2 | 8/16380:2 | 8/16380:2 | 8/16380:2 | Yes | No |
2200 | 240 | 16 | 2/4092:8 | 4/8088:4 | 8/16380:2 | 8/16380:2 | 8/16380:2 | 8/16380:2 | Yes | No |
2201 | 180 | 12 | 2/4092:6 | 6/12184:2 | 6/12288:2 | 6/12288:2 | 6/12288:2 | 6/12288:2 | Yes | No |
2202 | 240 | 16 | 2/4092:8 | 8/16280:2 | 8/16380:2 | 8/16380:2 | 8/16380:2 | 8/16380:2 | Yes | No |
2300 | 152 | 8 | 2/4096:4 | 4/8192:2 | 4/8192:2 | 4/8192:2 | 8/16384:1 | 8/16384:1 | Yes | Yes |
2301 | 240 | 16 | 2/4096:8 | 8/16384:2 | 8/16384:2 | 8/16384:2 | 8/16384:2 | 8/16384:2 | Yes | Yes |
23035 | 224 | 14 | 2/4096:7 | 14/28672:1 | 14/28672:1 | 14/28672:1 | 14/28672:1 | 14/28672:1 | Yes | Yes |
Notes:
If the current database device is not of a compatible type for NK4 disks and it is necessary to migrate it to those disks, you must use the ADAORD RESTRUCTUREDB utility as described in Adabas Utilities.
To calculate the size of a container in PAM pages, take the number of RABNs for the container and multiply it by the RABN STD block size.
To check your container file, multiply the highest RABN from the ADAREP
utility by the RABN STD block size, and compare it with the HIGH-US-PA field of
the SHOW-FILE-ATTRIBUTES
file-name,ALL
command output. If the
HIGH-US-PA field is less than the highest PAM page calculated from the ADAREP,
you will receive a DMS0922 error from the operating system when accessing
this.
In Adabas 8.2 and later versions, I/O is performed, wherever possible, in track units (see the "PAM Pages per Track" column in the device table earlier in this section). This unit is only a logical unit on this platform and is not associated with the number of PAM pages that the system allocates. If the container is to be increased onto another volume, the number of blocks allocated will be rounded automatically to the "PAM Pages per Track" value.
For private volumes, splitting is possible under every LOGON user ID:
In ISP format:
/FILE data-set,DEVICE=D3480,VOLUME=PRIV01,SPACE=60000 /FILE data-set,DEVICE=D3480,VOLUME=PRIV02,SPACE=60000
In SDF format:
/CREATE-FILE data-set,PRIV-DISK(SPACE=(60000),VOLUME=PRIV01) /MOD-FILE-ATTR data-set,PROT=(USER-ACC=*ALL) /MOD-FILE-ATTR data-set,SUP=PRIV-DISK(SPACE=(60000),VOLUME=PRIV02)
For public volumes, the splitting is possible under every LOGON user ID if the master catalog entry of the pubset has the attribute:
PHYSICAL-ALLOCATION=USER-ALLOWED
This attribute is set by issuing the following command under TSOS:
/MOD-MASTER-CAT CAT-ID=ABC,PHYSICAL-ALLOCATION=USER-ALLOWED
Once this attribute is set, it is possible to split a data set across two or more public volumes under any LOGON user ID that has the right of space allocation on that particular pubset.
In ISP format:
/FILE data-set,VOLUME=ABC.00,DEVICE=D3480,SPACE=60000 /FILE data-set,VOLUME=ABC.01,DEVICE=D3480,SPACE=60000
In SDF format:
/CREATE-FILE data-set,PUB(SPACE=(60000),VOLUME=ABC.00) /MOD-FILE-ATTR data-set,PROT=(USER-ACC=*ALL) /MOD-FILE-ATTR data-set,SUP=PUB(SPACE=(60000),VOLUME=ABC.01)
At this point, even a particular physical allocation can be made.
In ISP format:
/FILE data-set,VOLUME=ABC.02,DEVICE=D3480,SPACE=(20002,60000,ABS)
In SDF format (following the CREATE-FILE and MOD-FILE_ATTR...PROT specifications listed earlier):
/MOD-FILE-ATTR data-set,SUP=PUB(SPACE=ABSOLUTE(20002,60000),VOLUME=ABC.02)
The example extent covers physical PAM pages 20002 through 80001 on volume ABC.02. The required disk space must, of course, be available. If you are unsure of the available disk space, consult your system administrator.
The utility ADAR2E converts the extent list of given data sets into a JOB containing /CREATE-FILE commands. For more information, see the section on the ADAR2E utility in the Adabas Utilities documentation.