SMP/E often needs to build load modules during APPLY, LINK LMODS,
LINK MODULE, and RESTORE command processing. After determining which
load modules must be built, SMP/E verifies that all the modules needed
to build the load modules are available. If a module is not found,
SMP/E checks whether the target zone contains a MOD entry for that
module. If it finds one, it checks whether the entry points to an
existing LMOD entry and looks for these situations:
- If there is an LMOD entry and it contains a COPY indicator, SMP/E
can include the module from the target library indicated in the LMOD
entry.
- If the LMOD entry does not contain a COPY indicator, SMP/E checks
whether the load module is a single-CSECT load module. If so, SMP/E
can include the load module from the target library indicated in the
LMOD entry.
- If the LMOD entry does not contain a COPY indicator and is not
a single-CSECT load module, SMP/E assumes that the module has been
assembled and looks for an ASSEM or SRC entry with the same name as
the module. If SMP/E finds an ASSEM entry in the target zone, it
assembles the entry and uses the output when it link-edits the load
module. If SMP/E finds an SRC entry in the target zone, the SMPSTS
data set, or the distribution library, it assembles the source and
uses the output when it link-edits the load module.
If SMP/E could not find a usable copy of the module, SMP/E checks
whether there is a DLIB entry corresponding to the distribution library
for the module. If so, SMP/E checks whether the module is in the
target library pointed to by the DLIB entry. If this is true, SMP/E
uses that copy of the module when it link-edits the load module.
If a module is missing from the target zone or the target libraries
and is not a new module, SMP/E checks for it in the distribution zone.
If the FMID, RMID, and UMID in the distribution zone MOD entry match
those in the target zone MOD entry, SMP/E uses the distribution library
version of the module to build the load module.
If SMP/E does not find a required module by the previously described
searches, it then tries to find a copy of the module within the SYSMOD
that last replaced the module in the target system. If the target
zone MOD entry for the module does not indicate that the module was
assembled or updated since its last replacement (RMIDASM is not set
and there are no UMIDs), SMP/E locates the SYSMOD identified by the
RMID subentry in the SMPPTS data set. If the RMID SYSMOD is found
in the SMPPTS data set, the ++MOD statement describing the required
module is located within that SYSMOD. The ++MOD statement describes
how the module is packaged and where the module is located:
- If the module is found inline within the SYSMOD, SMP/E copies
the object module from the SMPPTS data set to the SMPWRK3 data set.
Later, during the link-edit operation, the module is included from
the SMPWRK3 data set.
- If the module is packaged in a RELFILE data set, SMP/E allocates
the associated SMPTLIB data set that contains the module. Later,
during the link-edit operation, the module is included from the SMPTLIB
data set. If the SMPTLIB data set cannot be allocated, SMP/E issues
messages to describe the allocation error and identify the modules
that could not be found.
- If the module is packaged in either an LKLIB or TXLIB data set,
SMP/E allocates the specified data set that contains the module.
Later, during the link-edit operation, the module is included from
the LKLIB or TXLIB data set. If the specified data set could not be
allocated, SMP/E issues error messages to describe the allocation
error and identify the modules that could not be found.
If after this search, the module is still not found, SMP/E takes
one of these actions:
- If the module had been previously installed in the target system,
but not in the distribution system, and no usable copy of the module
could be found, then SMP/E issues error messages identifying each
incomplete load module that was to include the identified module.
- If the module had been previously installed in the target system
and distribution system, but the service level of the module in the
distribution system does not match the service level of the module
in the target system, and no usable copy of the module could be found,
then SMP/E issues error messages identifying each incomplete load
module that was to include the identified module.
- If the module has not been previously installed in the target
system or distribution system, then SMP/E issues a warning message
for each incomplete load module that was to include the identified
module. Processing continues, but the module is not included in the
load module during the link-edit operation. SMP/E does not fail processing
in this case because you can correct the problem by installing the
product that supplies the required module. Once the product that
supplies the needed module is applied, the module can be included
in the incomplete load module.