Example 2: Specifying link-edit utility attributes with LEPARM

For this example, assume you have installed a product, FXY1040, packaged in RELFILE format. The package contained a module, IFBMOD01, that was identified by inline JCLIN as being installed as follows:
  1. It was copied from the distribution library, AOS12, to the target system library, LPALIB.
  2. It was linked with several other modules to form a load module, IFBLMDXX, in LINKLIB.
  3. It was linked, by itself, to form a load module, named IFBLMDX1, in LINKLIB.
The JCLIN in the initial function was as follows:
//JOB      JOB 'accounting info',MSGLEVEL=(1,1)
//COPY1    EXEC PGM=IEBCOPY
//AOS12    DD DSN=SYS1.AOS12,DISP=SHR
//LPALIB   DD DSN=SYS1.LPALIB,DISP=SHR
//SYSIN    DD *
 COPY INDD=AOS12,OUTDD=LPALIB
 SELECT M=(IFBMOD01)
/*
//LINK1    EXEC PGM=IEWL,PARM='REUS'
//AOS12    DD DSN=SYS1.AOS12,DISP=SHR
//SYSLMOD  DD DSN=SYS1.LINKLIB,DISP=SHR
//SYSLIN   DD *
  INCLUDE AOS12(IFBMOD01)
  INCLUDE AOS12(IFBMOD0A,IFBMOD0B,IFBMOD0C)
  ENTRY   IFBMOD01
  NAME IFBLMDXX(R)
/*
//LINK2    EXEC PGM=IEWL
//AOS12    DD DSN=SYS1.AOS12,DISP=SHR
//SYSLMOD  DD DSN=SYS1.LINKLIB,DISP=SHR
//SYSLIN   DD *
  INCLUDE AOS12(IFBMOD01)
  NAME IFBLMDX1(R)
/*
The target zone now contains the following entries:
  1. MOD entry for IFBMOD01, having LMOD subentries of IFBMOD01 (from the copy step), IFBLMDXX (from the first link step), and IFBLMDX1 (from the second link step).
  2. LMOD entry for IFBMOD01, (created from the SELECT statement of the copy step), indicating that the load module was copied during installation. The LMOD entry does not have any link-edit utility parameters yet, because SMP/E copied IFBMOD01 from the RELFILE data sets, and, thus, had no need to obtain the link parameters.
  3. LMOD entry for IFBLMDXX (created from the first link step), with link-edit attributes of REUS.
  4. LMOD entry for IFBLMDX1 (created from the second link step), with link-edit attributes of STD (because no special parameters were specified).
Now assume a PTF to replace module IFBMOD01 is required. Module IFBMOD01 has link-edit utility attributes of REUS and RENT. Here is an example of a SYSMOD containing a ++MOD statement to do this:
++PTF(UZ12345)              /* PTF                      */.
++VER(Z038) FMID(FXY1040)   /* for this function.       */.
++MOD(IFBMOD01)             /* Replace IFBMOD01         */
            DISTLIB(AOS12)  /* in this DLIB.            */
            LEPARM(RENT     /* Reentrant                */
                   REUS)    /* and reusable.            */.
...
... object deck for IFBMOD01
...
When the PTF is applied, SMP/E processes the LEPARM as follows:
  1. Because LMOD IFBMOD01 was copied from the DLIB module, it is updated using the LEPARM values from the ++MOD MCS.
  2. LMOD IFBLMDXX link-edit attributes remain as they are. This is because the link-edit utility attributes of each module within the load module have no bearing on the link-edit utility attributes of the load module; and, in this case, they are not the same. One of the other modules in IFBLMDXX must have a more restrictive set of link-edit attributes, thus forcing the load module to have that restrictive set of attributes.
  3. LMOD IFBLMDX1 link-edit attributes remain as they are, for the same reason that load module IFBLMDXX attributes did not change. This is true even though load module IFBLMDX1 is composed of only the one DLIB module. As long as the load module was identified by a link-edit step, SMP/E assumes that the load module may contain multiple DLIB modules.
    Note: The only way to change the link-edit attributes of a load module that was link-edited during initial installation is to provide JCLIN input to identify the new link-edit attributes.