Specifying Database Defaults

The following diagrams illustrate the syntax for specifying database defaults:

<defaults specification>

── DEFAULTS ── ( ─┬──────────────────┬─────────────────────────────────►
                  └─<global default>─┘
►─┬──────────────────────────────┬─ ) ─────────────────────────────────┤
  │ ┌◄────────┬──────┬─────────┐ │
  │ │         └◄─ , ─┘         │ │
  └─┴─┬─<data set default>───┬─┴─┘
      ├─<set-subset default>─┤
      └─<item default>───────┘

<global default>

  ┌◄──────────────────┬──────┬─────────────────────┐
  │                   └◄─ , ─┘                     │
──┴─┬─/1\─<buffers>──────────────────────────────┬─┴────────────────────┤
    ├─/1\─ CCSVERSION = <ccsversion name> ───────┤
    ├─/1\─ CHECKSUM ─┬───────────────────────────┤
    │                └─ = ─┬─ FALSE ─────────────┤
    │                      └─ TRUE ──────────────┤
    ├─/1\─ DATAENCRYPT ─┬────────────────────────┤
    │                   └─ = ─┬─ TRUE ───────────┤
    │                         └─ FALSE ──────────┤
    ├─/1\─ DATAENCRYPTKEYSET ────────────────────┤
    │                    └─ = ─┬─ NEWKEYSET ─────┤
    │                          ├─ REPLACEKEYS ───┤
    │                          └─ COPYKEYSET ────┤
    ├─/1\─ DATAMASK ─────┬───────────────────────┤
    │                    └─ = ─┬─ FALSE ─────────┤
    │                          └─ TRUE ──────────┤
    ├─/1\─<disk/pack>────────────────────────────┤
    ├─/1\─ DUMPENCRYPT ─┬────────────────────────┤
    │                   └─ = ─┬─ FALSE ──────────┤
    │                         └─ TRUE ───────────┤
    ├─/1\─ DUMPSTAMP ─┬──────────────────────────┤
    │                 └─ = ─┬─ FALSE ────────────┤
    │                       └─ TRUE ─────────────┤
    ├─/1\─ ILOB COMPRESSION ─┬───────────────────┤
    │                        └─ = ─┬─ LZW ───────┤
    │                              └─ FALSE ─────┤
    ├─/1\─ LOGACCESS ─┬──────────────────────────┤
    │                 └─ = ─┬─ FALSE ────────────┤
    │                       └─ TRUE ─────────────┤
    ├─/1\─ LOGACCESSDMVERBS = <dmverb definition>┤
    ├─/1\─ MEMORY RESIDENT ─┬────────────────────┤
    │                       └─ = ─┬─ FALSE ──────┤
    │                             └─ TRUE ───────┤
    ├─/1\─ OBFUSCATELEVEL = <unsigned integer>───┤
    ├─/1\─ REBLOCK ─┬────────────────────────────┤
    │               └─ = ─┬─ FALSE ──────────────┤
    │                     └─ TRUE ───────────────┤
    ├─/1\─ REBLOCKFACTOR = <unsigned integer> ───┤
    ├─/1\─ RECORDCOUNT ──┬───────────────────────┤
    │                    └─ = ─┬─ FALSE ─────────┤
    │                          └─ TRUE ──────────┤
    ├─/1\─ SECURITYGUARD = <file title> ─────────┤
    ├─/1\─ STRENCRYPT ──┬────────────────────────┤
    │                   └─ = ─┬─ TRUE ───────────┤
    │                         └─ FALSE ──────────┤
    ├─/1\─ <VSSOPTIMIZE>───┬─────────────────────┤
    │                      └─ = ─┬─ FALSE ───────┤
    │                            └─ TRUE ────────┤
    ├─/1\─ VSSWARN ───┬──────────────────────────┤
    │                 └─ = ─┬─ FALSE ────────────┤
    │                       └─ TRUE ─────────────┤
    └────────────────────────────────────────────┘      

<data set default>

               ┌◄────────────────────┬──────┬─────────────────────┐
               │                     └◄─ , ─┘                     │
── DATA SET ( ─┴─┬─/1\─<buffers>────────────────────────────────┬─┴─ ) ─►
                 ├─/1\─ CHECKSUM ─┬─────────────────────────────┤
                 │                └─ = ─┬─ FALSE ───────────────┤
                 │                      └─ TRUE ────────────────┤
                 ├─/1\─ DATAENCRYPT ─┬──────────────────────────┤
                 │                   └─ = ─┬─ TRUE ─────────────┤
                 │                         └─ FALSE ────────────┤
                 ├─/1\─ DATAEXCHANGE ┬──────────────────────────┤
                 │                   └─ = ─┬─ FALSE ────────────┤
                 │                         └─ TRUE ─────────────┤
                 ├─/1\─ DATAMASK ────┬──────────────────────────┤
                 │                   └─ = ─┬─ FALSE ────────────┤
                 │                         └─ TRUE ─────────────┤
                 ├─/1\─ DIGITCHECK ─┬───────────────────────────┤
                 │                  └─ = ─┬─ FALSE ─────────────┤
                 │                        └─ TRUE ──────────────┤
                 ├─/1\─<disk/pack>──────────────────────────────┤
                 ├─/1\─ DUMPENCRYPT ─┬──────────────────────────┤
                 │                   └─ = ─┬─ FALSE ────────────┤
                 │                         └─ TRUE ─────────────┤
                 ├─/1\──DUMPSTAMP────────┬──────────────────────┤
                 │                       └─ = ─┬─ FALSE ────────┤
                 │                             └─ TRUE ─────────┤
                 ├─/1\──EXTENDED────────┬───────────────────────┤
                 │                      └─ = ─┬─ FALSE ─────────┤
                 │                            └─ TRUE ──────────┤
                 ├─/1\─ ILOB COMPRESSION ───┬───────────────────┤
                 │                          └─ = ─┬─ LZW ───────┤
                 │                                └─ FALSE ─────┤
                 ├─/1\─ LOCK TO MODIFY DETAILS ─┬───────────────┤
                 │                              └─ = ─┬─ FALSE ─┤
                 │                                    └─ TRUE ──┤ 
                 ├─/1\─ LOGACCESS ──────────────┬───────────────┤
                 │                              └─ = ─┬─ FALSE ─┤
                 │                                    └─ TRUE ──┤
                 ├─/1\─LOGACCESSDMVERBS = <dmverb definition>───┤ 
                 ├─/1\─ MEMORY RESIDENT ─┬──────────────────────┤
                 │                       └─ = ─┬─ FALSE ────────┤
                 │                             └─ TRUE ─────────┤               
                 ├─/1\─POPULATIONINCR─=┬─<1-100>┬─────────────┬┬┤
                 │                     │        └(┬DISPLAY──┬)┘││
                 │                     │          └NODISPLAY┘  ││
                 │                     └────── 0 ──────────────┘│
                 ├─/1\─POPULATIONWARN─=┬─<1-99>─┬─────────────┬┬┤
                 │                     │        └(┬DISPLAY──┬)┘││
                 │                     │          └NODISPLAY┘  ││
                 │                     └────── 0 ──────────────┘│
                 ├─/1\─ REBLOCK ─┬──────────────────────────────┤
                 │               └─ = ─┬─ FALSE ────────────────┤
                 │                     └─ TRUE ─────────────────┤
                 ├─/1\─ REBLOCKFACTOR = <unsigned integer> ─────┤
                 ├─/1\─ RECORDCOUNT ──┬─────────────────────────┤
                 │                    └─ = ─┬─ FALSE ───────────┤
                 │                          └─ TRUE ────────────┤
                 ├─/1\─ SECURITYGUARD = <file title> ───────────┤
                 ├─/1\─ <VSSOPTIMIZE> ───┬──────────────────────┤
                 │                       └─ = ─┬─ FALSE ────────┤
                 │                             └─ TRUE ─────────┤
                 ├─/1\─ VSSWARN ──┬─────────────────────────────┤
                 │                └─ = ─┬─ FALSE ───────────────┤
                 │                      └─ TRUE ────────────────┤
                 └──────────────────────────────────────────────┘
                

<set-subset default>

          ┌◄────────────────── , ──────────────────┐
── SET ( ─┴─┬─/1\─<buffers>──────────────────────┬─┴─ ) ───────────────┤
            ├─/1\─ CHECKSUM ─┬───────────────────┤
            │                └─ = ─┬─ FALSE ─────┤
            │                      └─ TRUE ──────┤
            ├─/1\─<disk/pack>────────────────────┤
            ├─/1\─ DUMPENCRYPT ─┬────────────────┤
            │                   └─ = ─┬─ FALSE ──┤
            │                         └─ TRUE ───┤
            ├─/1\─ DUMPSTAMP ─┬──────────────────┤
            │                 └─ = ─┬─ FALSE ────┤
            │                       └─ TRUE ─────┤
            ├─/1\─MEMORY RESIDENT─┬──────────────┤
            │                     └─ = ─┬─ ALL ──┤
            │                           ├─ COARSE┤
            │                           └─ FALSE ┤
            ├─/1\─ RECORDCOUNT ──┬───────────────┤
            │                    └─ = ─┬─ FALSE──┤
            │                          └─ TRUE ──┤    
            ├─/1\─ SECURITYGUARD = <file title> ─┤
            ├─/1\ ─ VSSWARN ──┬──────────────────┤
            │                 └─ = ─┬─ FALSE ────┤
            │                       └─ TRUE ─────┤
            ├─/1\ ─ <VSSOPTIMIZE>─┬──────────────┤
            │                     └─ = ─┬─ FALSE─┤
            │                           └─ TRUE ─┤
            └────────────────────────────────────┘

<item default>

──┬─ ALPHA ( INITIALVALUE ─┬──────┬─┬─ BLANKS ─────┬─ ) ────────────┬──┤
  │                        ├─ IS ─┤ ├─ HIGH-VALUE ─┤                │
  │                        └─ = ──┘ └─ LOW-VALUE ──┘                │
  ├─ BOOLEAN ( INITIALVALUE ─┬──────┬─┬─ FALSE ─┬─ ) ───────────────┤
  │                          ├─ IS ─┤ ├─ TRUE ──┤                   │
  │                          └─ = ──┘ └─ 0 ─────┘                   │
  ├─ REAL ( INITIALVALUE ─┬──────┬─┬─ HIGH-VALUE ─┬─ ) ─────────────┤
  │                       ├─ IS ─┤ ├─ LOW-VALUE ──┤                 │
  │                       └─ = ──┘ └─ 0 ──────────┘                 │
  │            ┌◄───────────────────── , ─────────────────────┐     │
  └─ NUMBER ( ─┴─┬─ INITIALVALUE ─┬──────┬─┬─ HIGH-VALUE ───┬─┴─ ) ─┘
                 │                ├─ IS ─┤ ├─ LOW-VALUE ────┤
                 │                └─ = ──┘ └─ 0 ────────────┤
                 └─ DIGITCHECK ─┬──────┬─┬──────────────────┤
                                ├─ IS ─┤ ├─ REQUIRED ITEMS ─┤
                                └─ = ──┘ └─ ALL ITEMS ──────┘

<dmverb definition>

──┬──── <dmverb list>────────────────────────────────┬─────────────────┤ 
  └───── ALL───────┬─────────────────────────────────┤
                   └────── EXCEPT ──<dmverb list>────┘

<dmverb list>

  ┌◄──────── , ─────────┐
──┴── ( ─ <dmverb> ──) ─┴───────────────────────────────────────────────┤
    

<dmverb>

────┬─ ASSIGN ───────────────────────────────────┬──────────────────────┤
    ├─ ASSIGNLOB ────────────────────────────────┤
    ├─ CREATESTORE ──────────────────────────────┤
    ├─ DELETE ───────────────────────────────────┤
    ├─ DELETELOB ────────────────────────────────┤
    ├─ FIND ─────────────────────────────────────┤ 
    ├─ FINDLOB ──────────────────────────────────┤
    ├─ FREE ─────────────────────────────────────┤
    ├─ GENERATE ─────────────────────────────────┤
    ├─ INSERT ───────────────────────────────────┤
    ├─ LOCK ─────────────────────────────────────┤
    ├─ LOCKSTORE ────────────────────────────────┤
    ├─ REMOVE ───────────────────────────────────┤
    └─ SECURE ───────────────────────────────────┘

<buffers>

── BUFFERS = <unsigned integer> ─┬────────────────────┬────────────────┤
                                 ├─ PER USER ─────────┤
                                 └─ + <user buffers> ─┘

<user buffers>

──<unsigned integer>───────────────────────────────────────────────────►

►─┬──────────────────────────────────────────────────────────────────┬─┤
  ├─ PER USER ───────────────────────────────────────────────────────┤
  └─ PER RANDOM USER ─┬──────────────────────────────────────────────┤
                      └─ OR <unsigned integer> PER SERIAL USER ──────┘

<disk/pack>

  ┌◄──────── , ────────┐
──┴─┬─/1\─<diskkind>─┬─┴───────────────────────────────────────────────┤
    └─/1\─<diskname>─┘

<diskkind>

──┬──────────┬─┬─ disk ─────┬──────────────────────────────────────────┤
  └─ kind = ─┘ ├─ pack ─────┤
               └─ diskpack ─┘

<diskname>

──┬─ pack ───────┬─ = ──<familyname>───────────────────────────────────┤
  ├─ diskpack ───┤
  ├─ packname ───┤
  └─ familyname ─┘

<VSSOPTIMIZE>

────────────────────────┬─ VSS2OPTIMIZE ─┬─────────────────────────────┤
                        └─ VSS3OPTIMIZE ─┘

The following table describes the elements of the syntax diagrams:

Option

Description

<global default>

Global defaults apply to every audit trail, control file, guard file, global item, data set, set, and subset in the database.

<data set default> <set‑subset default>

If a data set default or set-subset default appears, then all structures of the specified type inherit the default attributes. The default attributes can be overridden when a data set, set, or subset is declared. The default attributes can also be overridden using physical specifications for the structure. If conflicting values are specified for a single attribute, the conflict is resolved in the following order of precedence:

  1. Value specified in physical specifications (highest)

  2. Value specified in data set or set-subset-Access declaration

  3. Value specified in data set default or set-subset default

  4. Value specified in global default

  5. System-supplied default value (lowest)

In the default specification, DATASET, DATA-SET, or DATA can be used in place of the DASDL keyword DATA SET.

<item default>

If an item default statement appears, then all items of the specified type inherit the default item attributes. Item defaults apply to both global items and items declared in data sets. If conflicting values are specified for a single attribute, the conflict is resolved in the following order of precedence:

  1. Value specified in remap record description (highest)

    The value specified for the remap only applies to records accessed using the remap, and not to records accessed using the data set.

  2. Value specified in data set record description

  3. Value specified in item default statement

  4. System-supplied default value (lowest)

BUFFERS

The BUFFERS option controls the number of buffers the system allocates for the structure. This number of buffers is in addition to any buffers the system allocates and deallocates for each program that invokes the structure. Default values for the BUFFERS option are as follows:

  • System buffers are assigned a value of 1.

  • Random user buffers are assigned a value of 1.

  • Serial user buffers are assigned a value of 0 (zero) if REBLOCK is FALSE. If REBLOCK is TRUE, serial user buffers are assigned a value of 2.

The maximum number of system buffers that can be specified at the database default level is 1048575 plus an additional 254 for each random user and for each serial user. To modify the number of system buffers for a specific structure, use the BUFFERS option at the data set or set level. You can also use the Visible DBS CHANGE command. To avoid using excessive memory, take care when setting buffers for sectioned structures. The number of buffers available for the structure is the number of buffers specified, multiplied by the number of sections in the structure.

Structure BUFFER specifications are ignored when the OVERLAYGOAL parameter is not the number 0, except when any of the following conditions occur:

  • A structure is being accessed randomly and there are no buffer specifications, in which case a maximum of 512 buffers are used.

  • A structure is being accessed randomly and there are buffer specifications, in which case:

    • If the calculated value of SYSTEM BUFFERS + RANDOM BUFFERS PER USER is less than 512, a maximum of 512 buffers are used.

    • If the calculated value of SYSTEM BUFFERS + RANDOM BUFFERS PER USER is greater than 512, the calculated value is used for the maximum number of buffers.

  • An EXTENDED structure is being accessed serially and readahead is activated, in which case the serial buffer specification is used.

  • A non-EXTENDED structure is being accessed serially and readahead is activated, in which case 2 serial buffers are used.

ALLOWEDCORE is the ultimate limiting factor for any or all structures. Regardless of the 512 value or calculated value for SYSTEM BUFFERS + RANDOM BUFFERS PER USER for any individual structure, when ALLOWEDCORE is reached, OVERLAYs will begin and a new buffer allocation will be restricted.

When the aggregate of all buffers for all users exceeds the ALLOWEDCORE value, overlaying of buffers starts.

BUFFERS (cont.)

You can use the BUFFERS option with the REBLOCK option to perform serial optimization (readahead or reblocking). Both readahead and reblocking cause a decrease in total elapsed time. To use the BUFFERS option to activate serial optimization, assign the option a value greater than or equal to 2. To deactivate serial optimization, assign the option a value less than 2.

Readahead is a type of serial optimization that allows the Accessroutines to read blocks before they are needed. Readahead reduces the time required to access records serially by decreasing buffer wait time, which in turn causes a decrease in total elapsed time. For data sets, readahead causes the next physical block of data to be retrieved. When records are accessed serially through a set or a subset, the next set or subset table is retrieved. The data set records pointed to by entries in that set or subset table are also retrieved and placed in the data buffers of the data set.

Reblocking is another type of serial optimization that you activate by using the REBLOCK option. Reblocking enables you to optimize both random and serial access to a structure; that is, you can maintain two block sizes for the same structure simultaneously as follows:

  • The smaller block is specified in the BLOCKSIZE option. The Enterprise Database Server uses this block for random access.

  • The larger block size is a multiple of the BLOCKSIZE option value. You specify in the REBLOCKFACTOR option how many times larger the enlarged block should be (for example, a value of 2 for an enlarged block that is twice the size specified in the BLOCKSIZE option). The Enterprise Database Server uses the enlarged block for serial access.

The capability of maintaining two block sizes is called reblocking.

Depending on the REBLOCKFACTOR option value, reblocking can cause the Accessroutines to read data using an enlarged block rather than the block size specified in the BLOCKSIZE option.

The benefit of reblocking is that the larger block size increases the amount of serially accessed records placed in the buffers for each physical read operation.

The REBLOCK and REBLOCKFACTOR options can affect whether readahead occurs. When the REBLOCK option is turned on and the value of the REBLOCKFACTOR option is set to a value greater than 1, readahead logic is turned off for data set accessing. The system performs this action even if the value of the BUFFERS option stipulates that readahead is to be activated. Readahead logic reads one block (of BLOCKSIZE value) at a time. Readahead logic cannot read the enlarged blocks created by reblocking. When readahead logic is turned off and the value of the REBLOCKFACTOR option is 2 or greater, one physical I/O operation reads as much or more information as readahead logic would read.

BUFFERS (cont.)

The REBLOCK option is not valid for sets and subsets. When accessing data through sets or subsets, readahead logic is used, as follows:

  • For sets and subsets only, when a set or subset is accessed in a serial manner, even if the value of the REBLOCKFACTOR option is greater than 1 for the associated data set.

  • For data sets only, when the order of the data set is different from the order of the accessing set or subset, and the REBLOCK option is turned off or the value of the REBLOCKFACTOR option is set to 1.

However, when a data set is in the same order as the order of its accessing set or subset, reblocking is used if the value of the

In database statistics, a read operation using the reblocking mechanism is counted as a readahead.

REBLOCKFACTOR option is greater than 1.

The Accessroutines detects whether a program is accessing a structure randomly or serially. When a structure is being accessed serially and 2 or more serial buffers are specified, the Accessroutines allocates the appropriate number of serial buffers for the program; otherwise, the specified number of random buffers is allocated. (The size of the serial buffers depends on the REBLOCK attribute.)

The Accessroutines detects serial access on a program‑by‑program basis. If several consecutive accesses are made to the same block or to logically adjacent next blocks, the program enters serial mode. In serial mode, the program performs a readahead or reblock operation each time another block is required. Note that the access of the logically adjacent prior block is not considered to be serial access.

If a program oscillates between serial and random access, the Accessroutines detects this and makes it increasingly more difficult for the program to change modes. This prevents spurious readaheads and buffer allocation and deallocation.

CCSVERSION

The CCSVERSION option enables the user to localize a database for a particular version in a coded character set. If the global CCSVERSION option is used, then every alpha item in the database uses the same ccsversion.

The user must select a ccsversion that is compatible with the coded character set in use on the system. If a ccsversion is designated that is not the system default ccsversion, a warning is issued at compile time.

At run time, if the ccsversion does not match the system default ccsversion, an open error (OPENERROR) occurs.

CHECKSUM

The CHECKSUM option is used to detect I/O errors. A checksum is a value computed for each block by applying an equivalence operator to each word in the block. When the block is physically written, the checksum value is stored in a checksum word appended to the end of the block. When the block is read, the checksum is recomputed and the result is compared to the stored value. A checksum error occurs if the two values are not equal.

For databases not using XE features, if the CHECKSUM option is not specified (either in the Defaults section or at the structure level), the CHECKSUM option is FALSE by default. Specifying CHECKSUM or CHECKSUM = TRUE sets the option. The recommended setting is TRUE.

For databases using XE features, the CHECKSUM option is required for all structures that use the EXTENDED attribute.

If the CHECKSUM option is not specified (either in the Defaults section or at the structure level), then

  • The CHECKSUM option is set to TRUE by default for all new structures regardless of whether the EXTENDED attribute is set.

  • All existing structures retain their CHECKSUM settings.

For existing structures that add the EXTENDED attribute, a record format reorganization is required to add

  • A CHECKSUM word (if CHECKSUM is not specified or if it is being changed from FALSE to TRUE)

  • The required Transtamp and Record Serial Number (RSN) fields for data sets

  • The required Transtamp field for the global data set

The global CHECKSUM default can be overridden in either the global data set and set defaults section, or at the structure level for data sets and their associated sets.

If the CHECKSUM option is not specified at the structure level, the option is FALSE for new structures if the EXTENDED attribute for the structure is FALSE and

  • The global database CHECKSUM option is explicitly set to FALSE, and CHECKSUM is not specified either in the global data set or set-subset defaults or at the structure level.

  • The CHECKSUM option is explicitly set to FALSE at the global data set or set-subset level, and CHECKSUM is not specified at the structure level.

  • The CHECKSUM option is explicitly set to FALSE at the structure level.

Global specifications of CHECKSUM are still in effect for any new non-XE structures.

Be sure to take into account the explicit or implicit setting of the CHECKSUM option when calculating data set BLOCKSIZE and set-subset TABLESIZE specifications.

DATAENCRYPT

The DATAENCRYPT option enables you to encrypt data items within an Enterprise Database Server database.

You can set this option at the global or data set default. You can also set the option at the structure level in the physical options for data sets or for selected items in a data set. The DATAENCRYPT option is not allowed for restart data sets, internal structures, or partitioned data sets.

Only alpha, numeric, real and group data item types are valid for database encryption. The items inside a group cannot specify the DATAENCRYPT option; the group item must be encrypted.

If a data set or remap has the DATAENCRYPT option specified, then alpha, numeric, real and group items in the data set or remap are data encrypted; the other data types will not be encrypted. A remap cannot define the DATAENCRYPT option or redefine the DATAENCRYPT option of a data set record.

If a database has the DATAENCRYPT option defined as a global default, all of the data sets are encrypted.

If there are any items with the DATAENCRYPT option in the data set, these items will be encrypted and moved to the end of the record. This is done to maximize the performance and minimize the disk usage. The record size will be increased and the size will depend on the encryption algorithm specified. The encrypted data will always be different in each record even if the records contain the same original (unencrypted) value.

If there are any Filler data items along with the items with DATAENCRYPT option in the data set, the Filler in the record is located after all non-encrypted data items and encrypted data items. When substituting a filler item with new data items type, a reorganization is required.

A reorganization must be performed when changing the DATAENCRYPT option from TRUE to FALSE or FALSE to TRUE.

The key items in a set or subset can have the DATAENCRYPT option specified but not the key items in an Access. The key data cannot contain encrypted data items. For more information about using the DATAENCRYPT option with key items, refer to Sets, Subsets, and Accesses.

DATAENCRYPTKEYSET

When a database has encrypted items, the DATAENCRYPTKEYSET option must be specified to cause the system to create an encryption key set for the database. The option can be specified for a new DASDL compilation or a DASDL UPDATE compilation. When the DATAENCRYPTKEYESET option is specified and the database does not have an associated key set, a new key set is created. If the database already has an associated key set, the existing key set will be used. The name of the key set is stored as a part of the control file and can be listed using the LIST or WRITE statement in DMUTILITY.

The key set contains the database encryption keys and an RSA Master Key. The database encryption keys are the AES-256 keys that are used to encrypt data in the database. There are 16 database encryption keys in a key set. The RSA Master Key is an RSA 4096-bit key that is used to protect the database encryption keys.

The users are responsible for backing up the key set manually using the Security Center. A syntax error will be issued by the DASDL compiler if the database contains any encrypted items but the DATAENCRYPTKEYSET option is not specified.

For security purposes, users can change the existing key set by choosing either the NEWKEYSET or REPLACEKEYSETS option listed below. However, when the key set has been changed, it can no longer be used to decrypt an old database backup. Therefore, it is strongly recommended that a full database backup be taken after the key set is changed.

Select one of the following options:

  • NEWKEYSET

    The NEWKEYSET option allows users to generate completely new database encryption keys and a new RSA Master Key. This change requires that a database reorganization be performed to decrypt the data with the old key set and then encrypt it again with the new key set. This is not considered to be a record format change so you do not need to recompile the applications. However, if a set or subset contains any FLE key, or the structure is SLE, then the sets or subsets must be generated from the data set. Note that reorganization cannot generate a manual subset with encryption keys.

    Note: Only OFFLINE and USEREORGDB reorganizations are supported if an index sequential set contains any encrypted key items. ONLINE reorganization and online garbage collection are not supported if an index sequential set contains any encrypted key items. There is a restriction of up to 300 structures in one reorganization at a time.

DATAENCRYPTKEYSET (cont.)

  • REPLACEKEYS

    The REPLACEKEYS option allows users to generate a new RSA Master Key and re-encrypt all the existing database encryption keys. Since the database encryption keys remain the same, there is no need to perform a reorganization to decrypt and to re-encrypt the data. This change only requires a control file update to reflect the change and the applications do not need to be recompiled.

  • COPYKEYSET

    Users can copy the database from one usercode to another, and can also retitle the database with a different database name. Since the database name includes the usercode as part of the key set name, copying the database under a new usercode is considered to be a new/different database from the original one, which requires a different key set name. The option COPYKEYSET is used to create a new key set from an existing key set. A new RSA Master Key is created. All the database encryption keys from the original key set are copied to the new key set and encrypted with the new RSA Master Key. The COPYKEYSET option is only performed if a different usercode is specified under CONTROL FILE. This change only requires a control file update to reflect the change.

DATAMASK

The DATAMASK option enables you to obscure or unidentify specific data within an Enterprise Database Server database ensuring the data security is maintained, and sensitive customer information is not leaked outside of authorized environments. You can set this option at the global database or data set level. You can also set the option at the structure level in the physical options for data sets or for the selected items in a data set. The DATAMASK option is not allowed for restart data sets, internal structures, or partitioned data sets. Only alpha, numeric, and real data item types are valid for data masking. However, the reserved internal items with type alpha, numeric and real, are not allowed for data masking. To change the CCSVERSION option to an item with the DATAMASK option set, the DATAMASK option must be reset first before changing the CCSVERSION option. This process requires two separate DASDL updates. The size of the item with type Numeric must be greater than 1 if it has the DATAMASK option set. If a data set or remap has the DATAMASK option specified, then the entire alpha, numeric and real items in the data set or remap are data scrambled; the other data types will not be scrambled. A remap cannot define the DATAMASK option or redefine the DATAMASK option of a data set record. If a database has the DATAMASK option defined, then all of the data sets are obscured.

For adding a new group item, DATAMASK items can only be specified for individual items within the group. This process requires two separate DASDL updates. The first DASDL update is to add the group item, this update requires a database reorganization. The second DASDL update enables the setting of the DATAMASK option to individual item(s) within the group item. At the end, an additional compilation is required. A reorganization must be performed when changing the DATAMASK option from TRUE to FALSE, or FALSE to TRUE.

Key or key data cannot have the DATAMASK option specified.

An item specified with the DATAMASK option is not allowed to be used with the WHERE or SELECT condition.

<disk/pack>

The disk/pack attribute controls the location of database files. The location of the audit trail, control file, guard file, data sets, sets, and subsets can be specified using a global default. All files created by the database management system are placed on the indicated device. Guard files are created by the user using the SYSTEM/GUARDFILE utility. The user must ensure that the guard file is created on the device specified in the global default statement.

The location of data sets, sets, and subsets can be controlled separately using data set defaults and set-subset defaults. Global defaults are overridden for these structures if data set defaults or set-subset defaults appear.

In the absence of any specification, database files are assigned to disk. When DISKPACK or PACK is stipulated, but no family name appears, the files are assigned to a system resource pack. When a family name follows DISKPACK or PACK, the database files are assigned to the indicated pack name. Database files can also be assigned to a named pack by using the PACKNAME or FAMILYNAME option with KIND = DISKPACK or KIND = PACK. The PACKNAME and FAMILYNAME options are synonymous.

The value for the <disk/pack> attribute can also be changed by performing a DMCONTROL operation.

If you decide to change the family name by way of a DASDL update after you have changed the name by using a DMCONTROL operation, you must perform a control file override. The override enables the system to recognize that the family name in the DASDL update takes precedence over the name you specified in the DMCONTROL operation.

For additional information about the DMCONTROL operation and its OVERRIDE FAMILY option, refer to the Enterprise Database Server Utilities Operations Guide.

DUMPENCRYPT

The DUMPENCRYPT option enables automatic tape encryption during a DMUTILITY DUMP operation. When this option is set to TRUE, an explicit request is issued for a structure or structures to be encrypted automatically by DMUTILITY. At run time, you can override the DUMPENCRYPT option by using the DMUTILITY DUMP specifications.

If you choose to encrypt data sets, sets, and subsets during a DMUTILITY DUMP operation, the DUMPENCRYPT option provides a method for DMUTILITY dump scripts to continue running with minimal or no syntax change. You can set this option at the global database, data set, or set level. You can also set the option at the structure level in the physical options for data sets and their associated sets.

Note: If you explicitly set the DUMPENCRYPT option to TRUE in global defaults, then the option is set to TRUE for all structures, unless you override it at the structure level.

The DUMPENCRYPT option defaults to FALSE.

Refer to the Enterprise Database Server Utilities Operations Guide for examples and additional information about the DUMPENCRYPT option.

DIGITCHECK

The DIGITCHECK option allows you to verify that a NUMBER item contains only digits during a STORE operation. If a NUMBER item with DIGITCHECK set contains a nondigit hexadecimal (leading signs of 4 ‘C' and 4 ‘D' are allowed), a DATAERROR 01 exception is returned.

The DIGITCHECK option is reset by default.

This option is useful when a database is transported between different enterprise servers. When a NUMBER item, which is stored as a packed decimal, contains nondigits, the value of the same data can be different for different enterprise servers under certain circumstances. This difference in values can occur when a NUMBER item is specified as a DESCENDING key. Using the DIGITCHECK option guarantees that NUMBER items contain only correctly formed packed decimal values.

If the NULL value of the NUMBER item is not the default value or the high value, you might need to perform extra checking when the data is stored.

DIGITCHECK can be set in <data set default> or <item default>, but not in both.

If the DIGITCHECK option is set in <data set default>, all explicitly or implicitly required NUMBER items in that data set are examined. It is set for all data sets by specifying DIGITCHECK or DIGITCHECK = TRUE.

If the DIGITCHECK option is set in the <item default> variable, it can be set for REQUIRED ITEMS or for ALL ITEMS. If DIGITCHECK is set for REQUIRED ITEMS, then all explicitly or implicitly required NUMBER items are examined. If DIGITCHECK is set for ALL ITEMS, then all NUMBER items are examined.

Note that DIGITCHECK can also be set for an individual structure or an individual item. Refer to Data Set Physical Options in Data Set Declaration for additional information. If conflicting values are specified for this attribute, the conflict is resolved in the following order of precedence:

  • Value specified at the item level (highest)

  • Value specified at the data set level

  • Value specified at the database level

Refer to “Using the REQUIRED Keyword” in Data Set Declaration for information regarding required items.

DUMPSTAMP

The DUMPSTAMP option is available with XE features only.

The DUMPSTAMP option allows the use of the incremental and accumulated dump feature in DMUTILITY. This option allocates a new word to each block to store the last update timestamp of each data block. This option is valid for data sets, sets, and subsets. The incremental and accumulated dump feature in DMUTILITY uses the timestamp value to detect when data blocks have been modified. This information is then used to determine whether each data block is to be included in the incremental or accumulated dump.

When you choose to back up data sets, sets, and subsets using the incremental or accumulated dump feature, you must set the DUMPSTAMP option. You can set the default at the global database, data set, or set level or at the structure level in the physical options for data sets and their associated sets. Specifying DUMPSTAMP or DUMPSTAMP=TRUE sets the option. Setting DUMPSTAMP to TRUE for existing structures requires a file format reorganization to add the DUMPSTAMP word, but no recompilation of application programs is necessary.

Once the DUMPSTAMP option is set, it remains set unless the CHECKSUM option is reset. In this case, the DUMPSTAMP option is automatically reset by DASDL, and the incremental and accumulated dump capabilities are disabled. A file format reorganization is required when the DUMPSTAMP setting is changed. INDEPENDENTTRANS and CHECKSUM must also be set when DUMPSTAMP is set to TRUE. The DUMPSTAMP option is not allowed for partitioned data sets.

Provided that the CHECKSUM option is set, the DUMPSTAMP option is set by default under either of the following conditions:

  • For all new structures

  • When the EXTENDED attribute is set for an existing structure

Note: Explicitly setting DUMPSTAMP to TRUE sets DUMPSTAMP to TRUE for all structures, unless overridden at the structure level. Setting DUMPSTAMP to TRUE is different from DUMPSTAMP defaulting to TRUE. When DUMPSTAMP defaults to TRUE, it affects only newly created structures, or structures that are reorganized to be extended.

Refer to the Enterprise Database Server Utilities Operations Guide for additional information about the incremental and accumulated dump feature.

ILOB COMPRESSION

The ILOB COMPRESSION option provides a capability to compress the data of an internal LOB item. There is only one compression algorithm per database.

You must set the ILOB COMPRESSION option with the INTERNAL LOBS option. An error occurs if this is not done.

Changing the ILOB COMPRESSION option requires a database reorganization. However, changing the option to FALSE from LZW or blank is not supported. The applications that access the internal LOB do not need to be recompiled.

Refer to the ASSIGN Statement in the ALGOL Programming Reference Manual, Volume 2, or the ASSIGN Statement in the COBOL ANSI-85 Programming Reference Manual, Volume 2 for additional information about using LOB with compression.

LOGACCESS

The LOGACCESS option provides database access information. LOGACCESS is reset by default. It is set by specifying LOGACCESS or LOGACCESS=TRUE. This log cannot be used for recovery purposes. Refer to the Enterprise Database Server Utilities Operations Guide under “Logging Data Access” for additional information.

LOGACCESSDMVERBS

The LOGACCESSDMVERBS option only allows logging for the DMVERBS that you select. This option requires that the LOGACCESS option be set for the structure. You can change the DMVERB list by specifying a DMCONTROL LOGACCESS statement.

The <dmverb list> is the list of permitted verbs.

The ALL option specifies all DMVERBS. While the <dmverb list> displayed in the control file listing for the structure includes FINDLOB, ASSIGNLOB and DELETELOB, these DMVERBS only apply to XE structures.

When specifying the EXCEPT <dmverb list> option, the <dmverb list> construct following the word EXCEPT indicates the DMVERBS that are to be removed from the list of DMVERBS that were permitted by the ALL option.

MEMORY RESIDENT

Once the MEMORY RESIDENT option is set for a structure, the buffers used by the structure stay in memory until the last user of a structure closes the database or until the MEMORY RESIDENT option is explicitly reset through the Visible DBS facility.

The DASDL compiler does not allow specifying MEMORY RESIDENT in the global database defaults or the global data set defaults if any of the following occurs:

  • The database is partitioned.

  • The RESIDENT LIMIT is not specified.

  • The RESIDENT LIMIT exceeds 70% of the ALLOWEDCORE

You cannot specify the MEMORY RESIDENT option for a global data set, restart data set or any implicit structures. If you specify the MEMORY RESIDENT option at the global default, the structures of the disallowed types will not be set.

Changing the MEMORY RESIDENT option during a DASDL update increases the update level. The new update level requires the control file and tailored software to be recompiled.

Note that if the database has Remote Database Backup enabled, then any global default or global data set default for the MEMORY RESIDENT option is ignored at runtime.

The COARSE option is meaningful only for an index sequential set; it means only the coarse tables are kept in memory. If you use the ALL option, the entire structure is made memory resident. Note that the buffers become permanent residents only when they are accessed. Memory is not prefilled.

OBFUSCATELEVEL

The OBFUSCATELEVEL option instructs the Enterprise Database Server to select the methodology of masking the data content. The OBFUSCATELEVEL option value must be an integer from 1 to 3. The default value of OBFUSCATELEVEL option is 1.

If the OBFUSCATELEVEL option value is 1, this indicates the entire database is using the same methodology of masking data. If the OBFUSCATELEVEL value is 2, this indicates each structure in the database is using a different method to scramble the data content. OBFUSCATELEVEL value of 3 is only allowed for XE structures. Each record of the structure will use its own methodology to scramble data. DASDL does not allow changing the OBFUSCATELEVEL to 3 while at the same time changing the structure(s) to XE (from a non-XE structure).

A reorganization must be performed when changing the OBFUSCATELEVEL option from one level to another.

POPULATIONINCR

The POPULATIONINCR option enables the Enterprise Database Server to automatically increase the size of a structure beyond the limits declared in the database DASDL source file.

Expansion is accomplished by allowing the number of areas in the structure to increase with a maximum of 1000 areas. Structures requiring more than 1000 areas can be accommodated by using the sectioning mechanism. Each automatic increase is applied to the AREAS target. For example, a structure that started with a maximum population equal to 100 areas and a POPULATIONINCR value of 100 would first be expanded by 100% of 100 areas; resulting in a new target of 200 areas. The next expansion would be 100% of 200 areas, resulting in the new target of 400 areas and so on.

Even though the POPULATIONINCR option is specified once per structure, it is applied individually to each member file of an XE structure. As a result, member files of a sectioned structure can report unique values for AREAS and AREASINUSE when this option is used.

The actual number of records that can be stored within a structure is based upon the number of areas designated for the structure and the structure type. For instance, the record calculation for

  • Variable-format data sets is based on the maximum allowed record size

  • Compact data sets is based on the average record size

Therefore, even if a population is specified, the actual run-time evaluation of the allowed number of records might differ from the specified number. This effect is particularly noticeable when the specified population is small compared to the number of records that can be contained in an area.

The value for POPULATIONINCR can also be changed dynamically while the database is running by using the POPULATIONINCR Visible DBS command.

To change the value for POPULATIONINCR using a DASDL update after you change the value using the STRUCTURE CHANGE POPULATIONINCR Visible DBS command, perform a control file override. The override enables the system to recognize that the DASDL update value takes precedence over the value you specified with the Visible DBS command.

For additional information about the POPULATIONINCR Visible DBS command or the DMCONTROL OVERRIDE POPULATIONINCR option, refer to the Enterprise Database Server Utilities Operations Guide.

The POPULATIONINCR option cannot be specified for the global data set.

The POPULATIONINCR option cannot be specified for a sectioned direct data set.

For a sectioned data set, record calculation is for all sections in the data set.

POPULATIONINCR (cont.)

The following parameters are available for use with the POPULATIONINCR option:

  • 0

    Switches off the option. To explicitly turn off the POPULATIONINCR option, include the following statement in the database DASDL source file:

    POPULATIONINCR = 0
  • 1–100

    Defines the percentage of the automatic population increase. The percentage is an integer. By default, the allowed structure size is increased by 10 percent. To set the automatic population increase to another value, follow the POPULATIONINCR keyword with the percentage increase required. To set the percentage increase to 20 percent, include the following statement in the database DASDL source file:

    POPULATIONINCR = 20
  • (DISPLAY)

    Updates the control file and enables the delivery of a message when an automatic population increase has occurred. DISPLAY is the default.

    For instance, if the following statement is included in the database DASDL source file, the control file is updated and a message is issued when the population of a structure has increased by 30 percent.

    POPULATIONINCR = 30 (DISPLAY)
  • (NODISPLAY)

    Updates the control file only. No message is sent.

    For instance, if the following statement is included in the database DASDL source file, the control file is updated, but no message is issued when the population of a structure has increased by 30 percent.

    POPULATIONINCR = 30 (NODISPLAY)

You can use the POPULATIONINCR option at both the database and the structure level. Specifications applied at the structure level take precedence over those at the database level.

Two possible side effects of increasing population through the population increase mechanism (rather than by performing a reorganization to increase the area size) are as follows:

  • The spanning sets for the structures also grow, but without the benefit of table balancing. Thus, the number of table levels might eventually increase and cause some performance degradation.

POPULATIONINCR (cont.)

  • The container size of the POPULATION item for the structure can overflow. This causes truncation of the POPULATION item value and might lead to erroneous application results.

Physical file limitations can prevent the full requested increase from occurring. Under those circumstances, the following additional message is emitted:

MYDB: WARNING - Rows 975 through 1000 have
been made available to CUSTOMERS. 1000 AREAS
is the maximum number allowed by the system. 
Automatic expansion is no longer available 
to this structure until it has been reorganized.

When this warning occurs, avoid limit errors and unplanned database downtime by reorganizing the structure and increasing the AREASIZE option value as soon as practicable. Once the area size is increased, the population increase mechanism can again be used to increase the structure automatically

Typically, the allocation of areas is the result of creating new records in the database. However, new areas can also be allocated as the result of delete operations. Therefore, a large number of record deletions can also cause the automatic population increase to occur. This increase can result in an exception condition if the structure is near the limit of 1000 areas.

Note: The POPULATIONINCR option is set when you generate or update a database, unless you explicitly disable the option.

While updating the AREAS value for a data set where the POPULATIONINCR option is set, note that an automatic population increase might have increased the control file AREAS value. The DMCONTROL program determines whether to use the old control file value or the new DASDL value based on the assumption that the automatic increase mechanism has been invoked at least once.

If a reorganization of the structure is required, the user-specified value from the DASDL is inserted in the new control file, regardless of whether the specified value is enough to hold all records in the data set. The population increment timestamp is reset.

If a reorganization of the structure is not required but the user has changed the value of AREAS, the larger of the user-specified DASDL value or the control file value is used for the new control file AREAS value in the new control file.

If the user-specified value is used, the timestamp is reset; otherwise, it is retained.

If the user-specified AREAS value is not enough and the population increase mechanism is enabled, then the Reorganization program itself causes the automatic population increase mechanism to be invoked.

POPULATIONINCR (cont.)

If the population increase mechanism is not enabled, then the Reorganization program might receive a fatal limit error.

If the automatic population increase mechanism has never been invoked, the DASDL AREAS specification is always used.

The messages associated with this option appear in the form of waiting entries on the operator display terminal (ODT). An asynchronous WFL job is used to emit the messages so as not to affect transaction processing operations. Messages remain as waiting entries until they are acknowledged. Should the system halt/load prior to acknowledgment of a message, the use of the asynchronous WFL job enables the message to reappear when the system recovers from the halt/load.

Once an automatic population increase takes place for a structure, its state information continues to reflect the most recent occurrence until one of the following conditions occurs:

  • DASDL is updated to specify a larger number of areas for the structure.

  • DASDL is updated so that a reorganization is required for the structure.

To determine whether an automatic population increase has occurred for a database or structure, run DMUTILITY and DBANALYZER or run dbaTOOLS.

POPULATIONWARN

The POPULATIONWARN option instructs the Enterprise Database Server to issue a notification when a data set reaches a percentage of its allowed population. (The population calculations are based on areas.) Notification is placed in the control file and, by default, is also sent to the operator display terminal (ODT) in the form of a task that is placed in the waiting mix.

In general, knowing when structures are approaching their population limit enables steps to be taken to avoid having applications receive limit errors and to avoid the resulting unplanned database downtime.

The POPULATIONWARN option is off by default. That is, the control file is not updated and no notifications are issued.

The value for POPULATIONWARN can also be changed dynamically while the database is running by using the POPULATIONWARN Visible DBS command.

If you decide to change the value for POPULATIONWARN by way of a DASDL update after you change the value by using the STRUCTURE CHANGE POPULATIONWARN Visible DBS command, you must perform a control file override. The override enables the system to recognize that the DASDL update value takes precedence over the value you specified with the Visible DBS command.

For additional information about the POPULATIONWARN Visible DBS command or the DMCONTROL OVERRIDE POPULATIONWARN option, refer to the Enterprise Database Server Utilities Operations Guide.

The POPULATIONWARN option cannot be specified for the global data set.

The POPULATIONWARN option cannot be specified for a sectioned direct data set.

POPULATIONWARN (cont.)

The following parameters are available for use with the POPULATIONWARN option:

  • 0

    Switches off the option. To explicitly turn off the POPULATIONWARN option, include the following statement in the database DASDL source file:

    POPULATIONWARN = 0
  • 1–99

    Specifies the percentage of total structure capacity that triggers a warning message. The percentage is expressed as an integer. For instance, to trigger a warning when a structure is 85 percent full, include the following statement in the database DASDL source file:

    POPULATIONWARN = 85
  • (Display)

    Updates the control file and enables the delivery of a warning message when a structure reaches its warning level capacity. DISPLAY is the default.

    For instance, if the following statement is included in the database DASDL source file, the control file is updated and a warning message is issued when a structure becomes 75 percent full:

    POPULATIONWARN = 75 (DISPLAY)
  • (NODISPLAY)

    Updates the control file only. The warning message is not sent.

    For instance, if the following statement is included in the database DASDL source file, the control file is updated, but a warning message is not issued when a structure becomes 75 percent full:

    POPULATIONWARN = 75 (NODISPLAY)
Note: The total structure capacity might be different from that specified in the database DASDL source file if automatic population increases have occurred because of the use of the POPULATIONINCR option.

The POPULATIONWARN option can be used at both the database and the structure level. Specifications applied at the structure level take precedence over those at the database level.

When the designated percentage of total structure capacity is reached

  • The control file is updated to reflect the time of the event.

  • Unless the NODISPLAY switch is set, a message similar to the following is sent to the operator display terminal (ODT) in the form of a task that is placed in the waiting mix:

POPULATIONWARN (cont.)

MYDB: WARNING - CUSTOMER has reached 75% of its
capacity of 750 rows.

Use the IB (Instruction Block) system command to display the text of the message.

Once the warning condition for a structure has been met— even if automatic population increases occur—further warnings are not issued for that structure until the related control file information has been reset.

To reset the control file information for a structure, perform either a

  • DASDL UPDATE to increase the allowed number of areas

  • Reorganization or garbage collection that reduces the number of in-use areas (ROWSINUSE) below the target percentage

The actual number of records that can be stored within a structure is based upon the number of areas designated for the structure and the structure type. For instance, the record calculation for variable-format data sets is based on the maximum allowed record size, and the record calculation for the compact data sets is based on the average record size.

Therefore, even if a population is specified, the actual run-time evaluation of the allowed number of records might differ from the specified number. This effect is particularly noticeable when the specified population is small compared to the number of records that can be contained in an area.

REBLOCK

REBLOCKFACTOR

The REBLOCK and REBLOCKFACTOR options enable you to optimize both random and serial access to a structure; that is, you can maintain two block sizes for the same structure simultaneously, as follows:

  • The smaller block is specified in the BLOCKSIZE option. The Enterprise Database Server uses this block for random access.

  • The larger block size is a multiple of the BLOCKSIZE option value. You specify in the REBLOCKFACTOR option how many times larger the enlarged block should be (for example, a value of 2 for an enlarged block that is twice the size specified in the BLOCKSIZE option). The Enterprise Database Server uses the enlarged block for serial access.

The capability of maintaining two block sizes is called reblocking.

Note: For recommendations about table size values in anticipation of the deployment of 512-byte physical sector technology, refer to Preparing for Open Disk Technology.

The REBLOCK attribute controls whether the Accessroutines employs reblocking at run time. Reblocking occurs only when REBLOCK is set for the structure.

REBLOCK is reset by default. It is set by specifying REBLOCK or REBLOCK = TRUE.

The size of the blocks used during reblocking is determined by the BLOCKSIZE and REBLOCKFACTOR physical attributes. In terms of reblocking, BLOCKSIZE controls the size of the smaller block used for random access. REBLOCKFACTOR controls the number of small blocks contained in each large block used for serial access. If a structure is not reblocked, all blocks are of the size specified in the BLOCKSIZE option.

The most critical choice you must make for reblocking is the block size. Choosing a block size often requires a trade-off between pack space versus core utilization and I/O time. Try to minimize the block size as much as possible without wasting too much pack space.

The choice of the reblock factor is not as critical as the block size. The larger the reblock factor, the less I/O time required for serial users. However, there is a point at which an increase in the reblock factor does not decrease the overall elapsed time of serial programs. If serial programs are run when system resources are limited, a smaller reblock factor helps minimize core usage.

The REBLOCKFACTOR option is valid only if the REBLOCK option is set for the structure. Otherwise, REBLOCKFACTOR is ignored. The value for REBLOCKFACTOR can be an unsigned integer between 1 and 60, inclusive.

The default value for REBLOCKFACTOR is the smaller of either the number 2 or the number of blocks per area. Specifying the value 1 for REBLOCKFACTOR is allowed for compatibility reasons, but might actually cause poorer run time performance than if REBLOCKFACTOR were not specified.

REBLOCK

REBLOCKFACTOR (cont.)

If REBLOCK is set for a structure but REBLOCKFACTOR is not specified, the DASDL compiler computes a default reblock factor to give a large block size of approximately 1000 words.

Set or reset reblocking through the Visible DBS facility for any structure that has REBLOCK set in the DASDL description. Both REBLOCK and REBLOCKFACTOR can be modified through the Visible DBS facility. This gives the user a tremendous amount of control over core utilization, especially during critical periods such as high volume daily access.

REBLOCK can be set only when the serial buffers specification is greater than or equal to 2. If REBLOCK is TRUE in DASDL and the serial buffers specification is greater than or equal to 2, REBLOCK is initialized to SET in the control file; otherwise, it is initialized to RESET. The BUFFERS specification can be changed through the Visible DBS facility. If REBLOCK is reset in DASDL, neither REBLOCK nor REBLOCKFACTOR can be modified through the Visible DBS facility.

If a program oscillates between serial and random access, the Accessroutines detects this and make it increasingly more difficult for the program to change modes. This prevents spurious readaheads and buffer overlays.

REBLOCK and REBLOCKFACTOR are valid only for direct and standard data sets.

The system activates reblocking when all the following conditions exist:

  • REBLOCK is set.

  • The Accessroutines detects that a program is accessing a structure serially.

  • The specified number of serial buffers is greater than or equal to 2. However, when REBLOCK is set, the following rules apply:

  • Large block size equals BLOCKSIZE multiplied by REBLOCKFACTOR.

  • Reblocking is activated under any of the following circumstances:

    • On a large block boundary

    • On a large block

    • If there are enough records remaining to be read for a large block read

Reblocking is deactivated when the number of records remaining to be read is less than the size of a large block even if the program is still accessing the structure serially.

RECORDCOUNT

The RECORDCOUNT option enables you to collect the number of records in the structure without locking the global structure of the database. This option is only valid for a disjoint dataset and set. A reorganization is required when RECORDCOUNT is changed from reset to set. However, it only requires performing a DMCONTROL UPDATE operation to disable the option. For additional information about the DMCONTROL operation and its UPDATE option, refer to the Enterprise Database Server Utilities Operations Guide.

The RECORDCOUNT information is stored in the control file under each structure and can be retrieved through the DMUTILITY LIST/WRITE command.

  • If the RECORDCOUNT option is not set for a structure, the value of STR RECORD COUNT shows NOT AVAILABLE

  • If a data set has SECTIONS option set or an index sequential set has PHYSICAL SECTIONS option specified, the value of STR RECORD COUNT is only displayed for section 0. NOT APPLICABLE is displayed for all subsequent sections

Caution

The RECORDCOUNT value is not valid while a structure is being reorganized. Additionally, for a Remote Database Backup secondary database, the value is not valid for a reorganized structure until Tracker completes application of the reorganization and emits a message stating, “RESTART POINT CREATED AFTER SUCCESSFULLY TRACKING THRU A REORG REGION.”

SECURITYGUARD

The SECURITYGUARD option sets the SECURITYGUARD file attribute to the name and location of the guard file that controls direct access to the database files by programs other than the Accessroutines. Standard system security rules prevail. The following conditions are some of the causes of security errors:

  • If a nonprivileged program that is run under a nonprivileged usercode attempts to directly access the database files and is not in the guard file

  • If the guard file is not present when the database file is accessed by a program that is nonprivileged and runs under a nonprivileged usercode

STRENCRYPT

The STRENCRYPT option enables you to encrypt an entire selected data set within an Enterprise Database Server database. This prevents any tool capable of reading files from a disk from accessing the data in clear text.

Note: Databases that support Remote Database Backup do not support Structure Level Encryption (SLE).

When the STRENCRYPT option is set for a data set, all of the items within the data set are encrypted regardless of their data type. Additionally, any index sequential sets and subsets that belong to the data set are automatically encrypted.

You can specify this option in global default or at the structure level in the physical options for the data set. If you define the STRENCRYPT option as a global default, all disjoint standard data sets with fixed formats and their index sequential spanning sets and subsets are encrypted.

Note: The CHECKSUM attribute must also be set when enabling the STRENCRYPT option for a data set.

The block size is increased by the encryption algorithm; encrypted data must be a multiple of 16 bytes in length (in addition to 30 bytes for the algorithm). If the VSS2OPTIMIZE or VSS3OPTIMIZE option is set with a specification of BLOCKSZ for the structure with the STRENCRYPT option, you must adjust the block size of the structure to maintain the VSS2OPTIMIZE or VSS3OPTIMIZE setting.

If you change the STRENCRYPT option setting for an existing structure (for example, from TRUE to FALSE or FALSE to TRUE) you must perform a file format change reorganization to convert the data of the structure to a different format. A reorganization of a set or subset must be generated from its data set. Note that reorganization cannot generate a manual subset with encrypted keys. User programs do not need to be recompiled.

VSSWARN

The VSSWARN option provides a run-time indication of discrepancy between the blocking attributes of a structure and the storage device type upon which it resides. This option is specifically associated with VSS-2 devices.

When the VSSWARN option is set to TRUE, the Accessroutines generates a durable warning message if the blocking attributes of the structure are not optimized for the operational characteristics of the members of the pack family. The message is sent as a task that is placed in the waiting mix. You can view the message by using the IB (Instruction Block) system command.

The VSSWARN option is most useful when a VSS-2 device is unexpectedly configured in a 180-byte aligned pack family.

The default is FALSE.

VSS2OPTIMIZE

The VSS2OPTIMIZE option, when set to TRUE, is an explicit request for an existing structure (or structures) that uses the default blocking attributes of DASDL to be automatically reorganized for VSS-2 optimization. A setting of FALSE indicates to ignore an existing structure (or structures) that is not optimized.

A setting of FALSE cannot be used to “unoptimize” a structure.

VSS-2 optimized structures are aligned on block boundaries that are multiples of 60 words. Placing VSS-2 optimized structures on 180-byte aligned disks does not impact performance.

New structures, whether created as part of new databases or added to existing databases, are by default automatically optimized for VSS-2 if they allow DASDL to supply the blocking specifications. Specifying this option for these new structures serves as documentation only.

The default applies to existing structures and is FALSE.

VSS3OPTIMIZE

VSS3OPTIMIZE supports MCP 4096-byte physical sector disks.

The VSS3OPTIMIZE option, when set to TRUE, aligns structures on block boundaries that are multiples of 660 words. The specified BLOCKSIZE option value must be a multiple of 22 segments.

For existing structures that use the default blocking attributes of DASDL, setting VSS3OPTIMIZE to TRUE, automatically reorganizes for VSS-3 optimization.

Setting VSS3OPTIMIZE to FALSE ignores existing structures that are not optimized. Setting VSS3OPTIMIZE to FALSE does not “unoptimize” a structure.

The REAPPLYCOMPLETED option determines audit I/O when an ENDTRANSACTION occurs. Since the audit I/O size is typically not a multiple of 660 words, storing the audit on VSS-3 disks is not recommended. If the audit must be on VSS-3 disks, you can maximize performance by ensuring that the VSS3OPTIMIZE option is set for the audit trail or as a global default.

When VSS3OPTIMIZE is declared as a global database default, a data set default, or a set default, the internal Enterprise Database Server files are VSS-3 optimized for a new database. However, if the database is being updated, existing internal structures will not become VSS-3 optimized to prevent reorganization required for those internal structures. If new internal structures are added to the database during the update, they will be optimized for VSS-3.

The VSS2OPTIMIZE and VSS3OPTIMIZE options are mutually exclusive. VSS3OPTIMIZE structures are aligned on block boundaries that are multiples of 660 words while VSS2OPTIMIZE structures are aligned on block boundaries that are multiples of 60 words. If both the VSS2OPTIMIZE option and VSS3OPTIMIZE option are specified at the same level, DASDL gives a syntax error.

New structures (whether created as part of new databases or added to existing databases), are not, by default, automatically optimized for VSS-3. This differs from the VSS2OPTIMIZE option. The VSS3OPTIMIZE default applies to existing structures and is FALSE.

When both the VSS3OPTIMIZE and BLOCKSIZE options are specified, the DASDL compiler uses them to calculate the optimal block size in words.If the calculation results in wasting more than one segment (30 words), the DASDL compiler will ignore the VSS3OPTIMIZE option. To preserve the VSS3OPTIMIZE option, users can either remove the BLOCKSIZE option, add a new filler item or expand an existing filler item.

For an existing structure, changing the block size requires a file format conversion reorganization.

The following database files are not affected by the global VSS3OPTIMIZE option. These files are not updated frequently enough for optimization to be beneficial.

  • RDB/CONTROL

  • TRACKERINFO

DIGITCHECK

The DIGITCHECK option allows you to verify that a NUMBER item contains only digits during a STORE operation. If a NUMBER item with DIGITCHECK set contains a nondigit hexadecimal (leading signs of 4 ‘C' and 4 ‘D' are allowed), a DATAERROR 01 exception is returned.

The DIGITCHECK option is reset by default.

This option is useful when a database is transported between different enterprise servers. When a NUMBER item, which is stored as a packed decimal, contains nondigits, the value of the same data can be different for different enterprise servers under certain circumstances. This difference in values can occur when a NUMBER item is specified as a DESCENDING key. Using the DIGITCHECK option guarantees that NUMBER items contain only correctly formed packed decimal values.

If the NULL value of the NUMBER item is not the default value or the high value, you might need to perform extra checking when the data is stored.

DIGITCHECK can be set in <data set default> or <item default>, but not in both.

If the DIGITCHECK option is set in <data set default>, all explicitly or implicitly required NUMBER items in that data set are examined. It is set for all data sets by specifying DIGITCHECK or DIGITCHECK = TRUE.

If the DIGITCHECK option is set in the <item default> variable, it can be set for REQUIRED ITEMS or for ALL ITEMS. If DIGITCHECK is set for REQUIRED ITEMS, then all explicitly or implicitly required NUMBER items are examined. If DIGITCHECK is set for ALL ITEMS, then all NUMBER items are examined.

Note that DIGITCHECK can also be set for an individual structure or an individual item. Refer to Data Set Physical Options in Data Set Declaration for additional information. If conflicting values are specified for this attribute, the conflict is resolved in the following order of precedence:

  • Value specified at the item level (highest)

  • Value specified at the data set level

  • Value specified at the database level

Refer to “Using the REQUIRED Keyword” in Data Set Declaration for information regarding required items.

EXTENDED

The EXTENDED attribute is not allowed for the restart data set.

Note: Setting and removing the EXTENDED attribute for existing data sets require a record format reorganization.

The EXTENDED data set attribute, when set to TRUE, causes all user-declared data sets except the restart data set to have records that contain two additional words at the beginning of the record:

  • A Record Serial Number (RSN) field containing a unique data set number that is used as duplicate set tiebreaker

  • An internal Transtamp field whose value allows an unlimited number of locked records among XE data sets and speeds up database availability during halt/load recovery if the EXTENDED attribute is set for all data sets

User programs need to be aware of these two additional words when moving data to and from the data set record area.

If not specified, the EXTENDED attribute is FALSE by default. The EXTENDED attribute default value can be overridden at the data set level.

If the database is audited and the EXTENDED attribute is set to TRUE for at least one structure, then the INDEPENDENTTRANS database option must also be specified.

If the database is unaudited, the EXTENDED attribute can be set to TRUE, but the INDEPENDENTTRANS database option must not be set.

An embedded data set and its owner data set must have the same value set for the EXTENDED attribute.

Sets and subsets that span an EXTENDED data set implicitly have the EXTENDED default set to true.

The EXTENDED attribute is not allowed for the Restart data set.

The following internal data set structures do not have the EXTENDED attribute set by way of a physical data set specification:

  • RX-GLOBAL-TR

  • RX-SIBDESCS (for databases with Open Distributed Transaction Processing enabled)

  • PARTITIONINFO (for partitioned databases)

In addition, global default settings for the EXTENDED attribute do not have any effect on the preceding internal structures.

INITIALVALUE

The INITIALVALUE option controls the value assigned to data items when a new record is created. The only values allowed are those shown. Field items and virtual items cannot be assigned an initial value; thus, the default initial value will not apply to them.

LOCK TO MODIFY DETAILS

The LOCK TO MODIFY DETAILS option can be used to ensure that user programs lock the master record before they add, delete, or modify records belonging to the master. This guarantees that two programs cannot concurrently modify records subordinate to the same master.

The LOCK TO MODIFY DETAILS option is reset by default. It is set by specifying LOCK TO MODIFY DETAILS or LOCK TO MODIFY DETAILS = TRUE.