Load Modules

Endevor 18.1
This article explains the use of
Endevor
to control load modules.
2
You can place the following modules under the control of
Endevor
:
  • Source data with a record length of up to 32,000 bytes
    Endevor
    controls the actual source in base, delta, and source output libraries.
  • Load modules
    When you add a member defined as RECFM=U,
    Endevor
    checks for the presence of linkage editor information. If this information is present,
    Endevor
    recognizes the member as a load module.
    Endevor
    creates a summary of the information contained in the load module, allowing you to track changes to the load module. This summary, not the actual load module, is placed in
    Endevor
    -controlled libraries.
This ability to track load modules lets you put, for example, vendor code, which is often distributed in load module format only, under
Endevor
control.
How Controlling Load Modules Works
  • You can add a load module directly from a load module library. When you add a load module,
    Endevor
    actually adds a summary of the information contained in the load module. This information summary is in the form of a text file with LRECL=80.
Load Module
Load Module
  • The load module generate processor can copy the load module from the external library to a load library for the target stage.
Load Module generate processor
Load Module generate processor
View Load Module Information
You can view load module summary information using option
1
(Elements) on the Display Options menu.
The Summary of Levels and Element Master panels for load module summary elements are the same as those for other elements. The Browse, Changes, and History panels differ slightly as shown in the following sections.
The Browse Panel
The header and source level information fields on this panel contain the same information as the standard browse panel.
  • Link date
    Date when the load module was last link edited.
  • Linkage editor
    Identifier for the linkage editor used to link edit the load module.
  • Main Entry point
    Address of the main entry point.
  • Size
    Size of the load module, in decimal bytes.
  • CSECT
    CSECT name and date when it was last generated.
  • Size
    Size of the CSECT, in decimal bytes.
  • Translator
    Identifier for the compiler that performed the translation.
  • CSECT
    CSECT name.
  • Environ
    Footprint environment.
  • System
    Footprint system.
  • Subsystem
    Footprint subsystem.
  • Element
    Footprint element name.
  • Type
    Footprint type.
  • S
    Footprint stage.
  • VVLL
    Footprint version and level for the element.
  • Date
    Footprint date.
  • No ZAP Data Present
    Indicates that no ZAPs have been applied to the current load module.
  • Attributes
    Load module attributes assigned by the linkage editor.
The
EP
field has been removed from the Browse panel. For information about the entry point, refer instead to the
Main Entry point
field.
The Changes Panel
This change panel tells you that:
  • The load module now resides in a different library.
  • The load module has been re-linked, using a more recent version of the same linkage editor.
  • New footprints have been created for each CSECT.
This list describes the ZAP information fields:
  • ZAP to CSECT
    Name of CSECT to which a ZAP was applied.
  • Date
    Date the ZAP was applied to the CSECT.
  • ID
    User-defined ZAP ID.
How to Track Changes to Load Modules
To track changes to load modules using
Endevor
, perform the following actions:
  • Define a type to associate with load module summaries. This type can have a maximum LRECL=80, and should specify a compare range of 1-80. A source output library need not be specified.
  • Write a generate processor for ADD, UPDATE, and TRANSFER actions, and a move processor that copies the load module from one load library to another without using the summary of information element.
When writing a generate processor for load modules, verify that none of the job steps executes for the GENERATE action. Because the generate processor only copies the load module from one external load library to another, changes made to an original load module could be copied into a target load module by the generate processor, causing the target load module to become out of sync with the summary of information element stored in
Endevor
.
When coding generate processors for use with load modules, include an EXECIF clause to prevent the use of that generate processor for the GENERATE action.
Sample Generate Processor
A sample generate processors for ADD, UPDATE, and TRANSFER actions related to load modules is shown next:
//ADDCOPY EXEC PGM=BSTCOPY // EXECIF=(&C1ACTION.,EQ,ADD) //SYSPRINT DD SYSOUT=* //ILIB DD DSN=&C1USRDSN.,DISP=SHR //OLIB DD DSN=user.stg1.loadlib,DISP=SHR,FOOTPRNT=CREATE //SYSIN DD * C I=ILIB,0=OLIB S M=((&C1USRMBR.,&C1ELEMENT.,R)) //UPDCOPY EXEC PGM=BSTCOPY // EXECIF=(&C1ACTION.,EQ,UPDATE) //SYSPRINT DD SYSOUT=* //ILIB DD DSN=&C1USRDSN.,DISP=SHR //OLIB DD DSN=user.stg1.loadlib,DISP=SHR,FOOTPRNT=CREATE //SYSIN DD * C I=ILIB,0=OLIB S M=((&C1USRMBR.,&C1ELEMENT.,R)) //XFRCOPY EXEC PGM=BSTCOPY // EXECIF=(&C1ACTION.,EQ,TRANSFER) //SYSPRINT DD SYSOUT=* //ILIB DD DSN=ndvr.input.loadlib,DISP=SHR, //OLIB DD DSN=ndvr.output.loadlib,DISP=SHR,FOOTPRNT=CREATE //SYSIN DD * C I=ILIB,0=OLIB S M=((&C1USRMBR.,&C1ELEMENT.,R))
  • user.stg1.loadlib
    User-defined Stage 1 load library
  • ndvr.input.loadlib
    Load library associated with the from location of the transfer.
  • ndvr.output.loadlib
    Load library associated with the to location of the transfer.
Sample Move Processor
A sample move processor for load modules:
//MOVCOPY EXEC PGM=BSTCOPY // EXECIF=(&C1ACTION.,EQ,MOVE) //SYSPRINT DD SYSOUT=* //ILIB DD DSN=ndvr.inputlib,DISP=SHR,FOOTPRNT=VERIFY //OLIB DD DSN=ndvr.outlib,DISP=SHR,FOOTPRNT=CREATE //SYSIN DD * C I=ILIB,0=OLIB S M=((&C1USRMBR.,&C1ELEMENT.,R)) //TRANCOPY EXEC PGM=BSTCOPY // EXECIF=(&C1ACTION.,EQ,TRANSFER) //SYSPRINT DD SYSOUT=* //ILIB DD DSN=ndvr.inputlib,DISP=SHR,FOOTPRNT=VERIFY //OLIB DD DSN=ndvr.outlib,DISP=SHR,FOOTPRNT=CREATE //SYSIN DD * C I=ILIB,0=OLIB S M=((&C1USRMBR.,&C1ELEMENT.,R))
Sample Delete Processor
You can use standard delete processors for load module management.