The sequence in which the various program components of the UTM application are loaded and how the external references are resolved are illustrated in figure 1 and described in the following section. The numbers indicate the sequence in which the program components are / must be loaded. The arrows specify the direction in which the unresolved external references of the load modules are resolved when loading, if the autolink function is not used.
Figure 1: Memory structure of a UTM application (CMP = Common Memory Pool)
All load procedures are initiated and controlled by openUTM with the exception of loading the subsystems (performed by the system administrator) and loading the static part (initiated by a START-EXECUTABLE-PROGRAM command):
1,2,3
1,2,3 | |
Shared modules are loaded by the system administrator before the start of the UTM application. | |
4 | |
The start LLM with all linked load modules is loaded with the START-EXECUTABLE-PROGRAM or LOAD-EXECUTABLE-PROGRAM command. Due to the load performance, open external references should only be resolved from the shared code, but can also be resolved from libraries. The command for starting the start LLM should be as follows:*) or LOAD-EXECUTABLE-PROGRAM The parameters UNRESOLVED-EXTRNS=*DELAY and LOAD-INFORMATION=*REFERENCES are mandatory for starting UTM applications. /START-EXECUTABLE-PROGRAM FROM-FILE=*LIB-ELEM - *) / (LIBRARY=lm-lib - / ,ELEMENT=lm-name, TYPE=L) - / ,DBL-PAR=(LOADING= - / (LOAD-INFORMATION=REFERENCES,PROGRAM-MODE=ANY) - / ,RESOLUTION=(ALTERNATE-LIBRARIES=*BLSLIB## - / ,AUTOLINK=*ALTERNATE-LIBRARIES) - / ,ERROR-PROCESSING=(UNRESOLVED-EXTRNS=*DELAY)) |
The command for starting the start LLM should be as follows: *) or LOAD-EXECUTABLE-PROGRAM The parameters UNRESOLVED-EXTRNS=*DELAY and LOAD-INFORMATION=*REFERENCES are mandatory for starting UTM applications. AUTOLINK=*ALTERNATE-LIBRARIES specifies that only the alternative libraries are to be used for the autolink function, and ALT-LIB=*BLSLIB## specifies that only libraries | |
5 | All load modules generated with LOAD-MODE=POOL and with a common memory pool with SCOPE=GLOBAL are loaded in the sequence of the MPOOL statements. |
6 | The load modules generated with LOAD-MODE=STARTUP are loaded dynamically at the start of the application program. The sequence of the LOAD-MODULE statements Open external references can be resolved from the system memory, from the common memory pools and from the modules already loaded. External references to the runtime |
The same is true when loading the private slices of load modules generated with LOAD-MODE=(POOL,...,STARTUP | ONCALL). | |
7 | Load modules generated with LOAD-MODE=ONCALL are loaded the first time an associated program unit is called. Open external references are resolved as for load |