A function SYSMOD can delete another function by naming the function
to be deleted as an operand of the ++VER DELETE operand. SMP/E deletes
that function and all functions, PTFs, APARs, and USERMODs dependent
on it. The functions specifically named in the DELETE operand list
are considered explicitly deleted SYSMODs; all
SYSMODs deleted because of their dependence on the explicitly deleted
SYSMODs are termed implicitly deleted SYSMODs.
When one function SYSMOD deletes another, SMP/E attempts to remove
from the target zone all information related to the deleted SYSMOD.
In addition, SMP/E removes from the target libraries all elements
currently owned by the deleted function SYSMOD. The following processing
is done:
- SMP/E determines whether there are any function SYSMODs in the
hierarchy of the function SYSMOD being deleted, and considers those
function SYSMODs to also be eligible for delete processing.
- SMP/E deletes any SYSMOD having the same FMID value as one of
the function SYSMODs being deleted.
- SMP/E determines all the elements that are currently owned by
one of the function SYSMODs to be deleted.
- SMP/E deletes from the target libraries all
the elements of the SYSMODs to be deleted. After the elements are
successfully deleted, SMP/E deletes the element entries from the target
zone.
If a module is being deleted, SMP/E checks whether the module
is contained in any cross-zone load modules. If
so, SMP/E deletes the contents of the MOD entry, except the XZLMOD
subentries. If the module is not reintroduced and the AUTOMATIC option
is in effect for the cross-zone, the module is deleted from the cross-zone
load module during cross-zone processing. For more information, see SMP/E for z/OS Reference.
- For load modules composed entirely of modules that are to be deleted,
SMP/E deletes the load modules and any aliases for the load modules
from the target libraries. If
the load modules were successfully deleted, SMP/E deletes the MOD
and LMOD entries from the target zone. The load modules are also deleted
from the SMPLTS, if applicable.
Note: If all the modules in a load
module are being deleted or replaced, SMP/E checks whether the load
module contains cross-zone modules. If so, SMP/E does not delete
the load module. Instead, it removes the deleted modules from the
load module (leaving a stub load module in the target libraries)
and leaves the LMOD entry in the target zone.
- For load modules composed of modules to be deleted and modules
not to be deleted, SMP/E delinks the CSECTs in the deleted modules
from the load module. In priority order,
SMP/E obtains the CSECT information in the following manner:
- By gathering the list of CSECT names in the target zone MOD entry
- By determining the CSECT operand on the ++MOD statement from the
lowest function or service level SYSMOD being installed that contains
that module
- By assuming that the CSECT name is equal to the distribution library
name
The MOD entries are deleted from the target zone, but the
LMOD entry remains because it is still needed to process SYSMODs affecting
the modules that have not been deleted.
For each deleted module,
SMP/E adds to the LMOD entry a MODDEL subentry for the module name.
MODDEL subentries document the connection between the deleted modules
and the LMOD. If any of these deleted modules
are ever reintroduced, SMP/E looks for LMODs with MODDEL subentries
for the modules and automatically rebuilds the LMODs to include these
modules again. The MODDEL subentries for the reintroduced modules
are then removed from the LMOD entries.
Any aliases associated
with the load modules are not deleted from the target libraries, but
may be marked nonexecutable by the link-edit utility.
- The target zone SYSMOD entries for all implicitly deleted SYSMODs
are deleted. For each explicitly deleted SYSMOD, a target zone SYSMOD
entry is created. This entry has a DELBY subentry naming the function
that caused the deletion. The SYSMOD entries for the explicitly deleted
SYSMODs prevent the deleted function SYSMODs from being reprocessed
by APPLY.
Note: For a function that both deletes and supersedes another
function, the SYSMOD entry contains a SUPBY subentry instead of a
DELBY subentry. This allows SYSMODs naming the deleted function as
a requisite to still be installed.
The result of this process is the deletion of all SYSMODs in the
hierarchy of the specified function SYSMOD.
Note: Always check the
APPLY output to verify that all the CSECTs that were supposed to be
deleted from a load module have been deleted.
In Figure 1, function SYSMODs HDE1203,
HDE1303, and HDE1403, and service SYSMODs UZ00009, UZ00010, and UZ00004
are deleted because DELETE(HDE1203) is specified on the ++VER statement.
CIFREQ subentries in the SYSMOD entry for a function that is deleted
(either explicitly or implicitly) are retained in the SYSMOD entry
along with the DELBY subentry. So, when function HDE2000 is applied,
CIFREQ subentries in the SYSMOD entry for function HDE1203 are retained,
as are any CIFREQ subentries in the SYSMOD entries for functions HDE1303
and HDE1403. Likewise, any CIFREQ subentries for conditional requisites
specified by the deleted SYSMODs are retained in the appropriate SYSMOD
entries.
Figure 1. DELETE Hierarchy
for DELETE(HDE1203): APPLY Processing
Note: Remember, SMP/E assumes that when a function is deleted, the
deleting function replaces all the required elements of the deleted
function. Although you can build a function SYSMOD that does nothing
but delete another function, it is your responsibility to make sure
your system remains functionally complete after the product has been
deleted.
During APPLY processing, when a function is deleted from a target
zone by another function, its FMID is not removed from the FMID list
in the global zone. This is because the deleted function can still
be applied in other target zones or accepted in other distribution
zones.