This chapter discusses the structuring of an application program.
Note that you must link the application program using the BINDER utility and load it using the functions provided by BLS.
A UTM application can be structured in different forms and loaded in various ways. In general, a distinction can be made between five different areas:
Shareable programs in the system memory
Program components loaded in the system memory are available to all processes of a BS2000 system in common. For this reason, you should primarily load application-independent programs into the system memory, such as the shareable parts of runtime systems of the programming languages. See also section "Shared code in system memory".
Modules must be loaded as a nonprivileged subsystem by the system administrator.
Statically linked program components
The ROOT system modules and the runtime system modules they require (ILCS), as well as the message modules for which no dynamic loading library was specified in the UTM generation, must be incorporated statically in the start LLM. The ROOT table module created by KDCDEF and assembled by you can, however, be linked statically or be loaded dynamically at the start.
Other parts of the application can also be incorporated in the static part, but these must not contain any external references to modules you load into a common memory pool managed by openUTM.
The static part of a UTM application is loaded with the command:
START-EXECUTABLE-PROGRAM
orLOAD-EXECUTABLE-PROGRAM
Shareable programs in common memory pools
Program components that can be shared by all processes of a UTM application, such as the shareable parts of your program units of the UTM application or formats or data areas, should be loaded in common memory pools. See also section "Shared code in common memory pools".
Program components to be loaded when the application starts
Program components which are always required by the UTM application or which contain external references to shareable parts of the application, should be loaded dynamically at the application start.
The ROOT table module created and assembled by KDCDEF is also dynamically loaded if you did not link it statically to the start LLM.
Program components to be loaded when the program is called
Program components that are not always required by the UTM application can be generated such that they are not loaded dynamically until the first call is issued. These program components must be statically linked to LLMs in such a way that all open external references can be resolved from the modules already in the memory when loading.
The values you specified when generating the application with KDCDEF (see openUTM manual “Generating Applications”) determine the memory areas into which the program components are loaded and the time at which they are loaded.
For more information, please refer to the following chapters: |