gtpi1m5wSystem Installation Support Reference

Components of the Global Area

This section contains information about the components of the global area.

Global Records

A data record can be thought of as an item stored on DASD or as a block of data in main storage. Global records on DASD are large (1055-byte) fixed-file records with the FACE ID #GLOBL. They are defined via the System Test Compiler (STC) and loaded via the command ZSLDR.

The main storage copy of a global record is loaded during system restart. The record can be assigned various attributes such as keypointability, SSU uniqueness or commonality, I-stream uniqueness or commonality.

Certain global records are termed global blocks, and are described in Global Blocks. Most of the others are called application core-resident records, or simply core-resident records.

Still other records stored in the global area, called special program records, are special-purpose tables used exclusively by the system.

Keypointable Global Records

The process of periodically copying a dynamic main storage record to a file on DASD is called keypointing. As with most of the control program keypoint records, the records resident in the global area are also maintained on file. Some of these records contain information that rarely changes; these records need not be copied to file. Other records contain temporary information and also need not be copied to file. However, some records contain information that is changeable and must be saved for a restart if a system malfunctions; the file copy must be updated to reflect the changes. These records are classified as keypointable records. Records that do not require dynamic file updating are classified as nonkeypointable records. Global records are defined as keypointable or nonkeypointable in the main storage allocator record (see GOA List Entry.)

Global Directories

The first 448 bytes of the GL1 area and the first 544 bytes of the GL3 area contain the directories for these areas. Data macro GL0BA defines the GL1 directory as 56 doublewords (448 bytes). The first 48 doubleword slots are for keypointable global records, and the remaining 8 are for nonkeypointable records. The GL0BY data macro defines the GL3 directory as 68 doublewords (544 bytes). The first 64 doubleword slots are for keypointable global records, and the remaining 4 are for nonkeypointable records. Each global area, and therefore each directory, must start on a 4096-byte boundary, and each area must be a multiple of 4096. The first 4096 bytes of GL1 and GL3, including the directory, are directly addressable via the GLOBZ macro.

You can alter the GL0BA and GL0BY data macros and increase the number of slots per directory. However, because GLOBZ provides addressability to a single block of 4096 bytes, care must be taken in increasing the directory size, because the amount of storage remaining for global field use is reduced correspondingly. Also, even if the directory size changes, the number of keypointable slots must remain at 48 for GL1 and 64 for GL3.

These directories are built dynamically with each restart of the system. Each directory slot contains the main storage and the file address of a global block, data record, or special program record as follows:

Each directory slot has a corresponding entry in a special table in the global area called the global attribute table (GAT). The entry contains an indicator byte as follows:

The indicator byte contains information used by system programs during normal online operation, such as whether:

Global Blocks

Global blocks are a series of global records, usually unrelated in content, that are loaded immediately following the global directories. These records contain the global fields described in the next section. Each global block has its own DSECT as follows:

Global Area 1
 
GL0BA    Directory area
GL0BB    Nonkeypointable miscellaneous fields
GL0BC    Keypointable miscellaneous fields
GL0BD    Fare quote (F/Q) nonkeypointable fields
GL0BE    Fare quote (F/Q) keypointable fields
GL0BF    Expansion for nonkeypointable
GL0BG    Expansion for keypointable
 
 
Global Area 3
 
GL0BY    Directory area
GL0BP    Nonkeypointable TPF global
GL0BQ    Keypointable TPF global

You can create other blocks, for example, GL0BH and GL0BI, to be added to those provided. Extra space must be allocated in the GLOB macro if this is done, and care must be taken that the total space occupied by the directory and the global blocks does not exceed 4096 bytes.

DSECTs GL0BC, GL0BE, GL0BG, and GL0BQ define keypointable fields; GL0BB, GL0BD, GL0BF, and GL0BP define nonkeypointable fields. These DSECTs provide addressability to the global fields and are all pointed to by the macro GLOBZ. Use of GLOBZ and other pertinent macros is explained in Using the Global Area by Applications.

The standard TPF DSECT header is used for global blocks. It contains the following:

The header area can be retained or removed when a nonkeypointable global block is loaded into main storage. Removing the header from a keypointable block causes an error condition during a load sequence. Each global block can individually contain as many as 1056 bytes of data. However, to maintain addressability to the fields in the global blocks, the total length for the directory and the global blocks must not exceed 4096 bytes.

The global blocks are followed by protected data records.

Global Fields

A global field is an addressable unit of storage in a global block. Each of the existing global blocks is designed to contain several global fields and each installation can allocate storage for the global fields as needed.

The rules governing global fields are as follows:

  1. Each global field can be from 1 to 256 bytes long.
  2. Subsystem user unique fields should be defined only in the GL1 area (MDBF only).
  3. Subsystem user common fields can reside only in the GL3 area (MDBF only).
  4. Global fields are directly addressable via the GLOBZ macro.
  5. Global fields are I-stream unique by default. Each I-stream can only access its own global fields.

Typical coding using global fields is:

        GLOBZ   REGC=R3       Get addressability to GL3
        LA      R2,@GLFLD     Field is directly addressed by R2
        .                     (This assumes that "@GLFLD" is
        .                      defined in GL0BQ or GL0BP)
        .
 

Typical coding using global records is:

        GLOBZ   REGR=R3       Get addressability to GL1
        L       R4,@GLREC     Pick up address of a global record from directory
        .                     (This assumes that "@GLREC" is
        .                      defined in GL0BA)
        .
 

Examples of the type of data that can be in the global fields follow: