Searching for modules in libraries
When program libraries are searched for modules, the RUN-MODE operand controls the selection of the modules as follows:
When RUN-MODE=*STD is set, the search is limited to object modules (OMs). LLMs are ignored.
When RUN-MODE=*ADVANCED is set, LLMs and object modules (OMs) are compared. In this comparison the element name of an LLM (element type L) or a symbol name in an LLM takes precedence over the element name of an object module (OM) (element type R) or a symbol name in an OM.
In the commands START/LOAD-EXECUTABLE-PROGRAM it is possible to control the search order by means of the TYPE operand. The order L,C,R is set by default.
This search strategy favors the migration from object module (OM) to link and load module (LLM). Compatibility exists when no LLM is found with the same element name as an OM.
Searching in alternate libraries
By default, the Tasklib is ignored if RUN-MODE=*ADVANCED is set. The optional inclusion of the Tasklib is only possible in connection with the commands START/LOAD-EXECUTABLE-PROGRAM.
Handling name conflicts
How name conflicts are handled is dependent on the selected operating mode (RUN-MODE=*STD or RUN-MODE=*ADVANCED) as follows (see also "Handling name conflicts"):
When RUN-MODE=*STD is set, name conflicts between CSECTs are always detected, regardless of whether the symbols in a module are masked or not. Name conflicts between masked or nonmasked ENTRYs are always accepted. Only the first ENTRY is used for resolving external references. The user has no means of controlling how name conflicts are handled.
When RUN-MODE=*ADVANCED is set, name conflicts are detected only if the symbols in a module are not masked. The user is informed by means of a message each time there is a name conflict which could cause errors to occur. The NAME-COLLISION operand in the load call gives the user a means of controlling how name conflicts are handled.