Using the interfaces provided on BS2000 systems, shareable parts of the application program units and parts of the runtime systems can be loaded either as shareable programs in nonprivileged subsystems.
Shared code loaded in nonprivileged subsystems can be exchanged while the application is running.
The shareable modules must be loaded in the memory by the administrator before the application is started. See also the notes on the following page. In contrast to shared code in common memory pools which can be loaded and exchanged under the control of openUTM, you cannot manage the shareable modules in system memory yourself.
Non-shareable parts of the program units must be described with the PROGRAM statement and, if necessary, assigned to a load module with the LOAD-MODULE statement.
The load module or its private slice is loaded dynamically into the local task memory (class 6 memory) when the application program is started. The links are established dynamically in the shared code using the external references to shareable modules.
The load modules (OM format) that contain the shareable modules of the program unit need not reside in the same program library as the load modules that contain the non-shareable program components.
Notes
Subsystems should be created in LLM format because these subsystems can be exchanged without inconsistencies while the application is running.
The public slice of the old LLM may eventually be loaded in the local task part of the application program when exchanging the subsystem until the private slice is also exchanged (e.g. initialized with KDCPROG).On the other hand, when subsystems in OM format are exchanged during operation, an inconsistency exists between the DSSM subsystem command
START-SUBSYSTEM SUBSYSTEM-NAME=subsystemname - , VERSION=new-version - , VERSION-PARALLELISM=*EXCHANGE-MODE
and the UTM administration command (or a corresponding KDCADMI call in the administration program interface)
KDCPROG LOAD-MODULE=load-module,VERSION=new-version
It may happen in this case that after the DSSM command and before the UTM administration command, a UTM application program is terminated with PEND ER and the affected task of the UTM application program is started with an old private part and a new public part in a new subsystem .
When exchanging subsystems of various versions whose modules are contained in the same library (condition for exchanging load modules with openUTM), please make sure that different LINK-ENTRYs are specified as otherwise the DSSM may not be able to implement the exchange.
When creating a subsystem, the corresponding LLM format (e.g. Format 2) should be used because in this case only a subsystem entry need be specified. See also the “BINDER User Guide”.