gtpc3m1u | Concepts and Structures |
Some ECB-controlled system utility programs are used for database management and need to access all subsystems and subsystem users in a subsystem. A mechanism to "switch" among subsystems and subsystem users is needed. Switch, in this case, means to change an index to a relevant MFST and FCTB used to resolve file references during online execution. See Figure 46. Two important cases are:
File recoup, a system utility used to reconcile lost pool addresses, is an example of such a requirement. Remember, pool addresses are shared among all subsystem users on a given subsystem, so pool address accessing is independent of an SSU ID. However, the specific fixed file records that hold pointers to the pool records can be subsystem user unique.
To appreciate this, think about the problem of an ENTER macro service routine, invoked from an Entry not executing on the basic subsystem, that requests the service of an ECB-controlled program accessible only to the basic subsystem.
For example, the long message transmission (LMT) program, which resides on the basic subsystem (BSS), must operate on messages whose message content exceeds the size of a small working storage block. That part of the message that is not contained in the storage block is formatted as segments of chained pool records. The pool record addresses are obtained in the subsystem of the program that invokes LMT. An MDBF utility that runs in the BSS is used by LMT. This utility switches to the subsystem of the invoker (so the file reference to the chained pools are resolved correctly) and copies the records by recreating chains of pool records in the basic subsystem. Thereafter, the remainder of the LMT package runs oblivious to the concept of subsystem or subsystem user.
Because file resident ECB-controlled programs are shared, they are accessible to all subsystem users within a given subsystem and are called the program base of the subsystem. Also observe that ECB-controlled system programs in the program base of the basic subsystem have the potential to be shared among all subsystems. This is different from sharing programs or data within a single subsystem. Shared programs or data within a subsystem are referenced in the subsystem FCTB; no switching is required.
Three fields are included in the ECB to identify the subsystem and subsystem user of an execution environment. System programs use these fields to switch among subsystems and subsystem users.
DBI and PBI locate a subset of modules; SSU ID locates a unique reference in the FCTB (see Figure 46). So, it is possible to be running the system with a PBI that is different from the DBI; the normal application environment runs with PBI=DBI and an appropriate SSU ID. These fields can be modified with the Cross Subsystem Access Services (CROSC) macro.