How to handle load modules and program objects with an Alias.

Document ID : KB000018250
Last Modified Date : 14/02/2018
Show Technical Document Details

Description:

Load modules and program objects with an Alias can be handled by BSTCOPY even though it does not support COPYGRP syntax.

Solution:

When it is required to bring load-only software under Endevor control, the following method can be used.
One will need two steps in the GENERATE processor, one to COPYGRP with IEBCOPY into a temporary PDSE, and then a BSTCOPY step to copy all results into the final target PDSE library. This latter step will ensure ACM output components will be monitored, while preserving the ALIASes.

Processor example:

 

//IF1  IF ((&C1ACTION=ADD) OR (&C1ACTION=UPDATE)) THEN
//************************************************************
//* FIRST COPY LOADMODULE TO TEMPORARY PDSE
//************************************************************
//CPY1    EXEC PGM=IEBCOPY,MAXRC=04
//SYSPRINT  DD SYSOUT=*
//SYSUT3    DD UNIT=&WRKUNIT,SPACE=(TRK,(1,1))
//SYSUT4    DD UNIT=&WRKUNIT,SPACE=(TRK,(1,1))
//INDD      DD DSN=&C1USRDSN,DISP=SHR
//OUTDD     DD DSN=&&TEMPDSN,DISP=(,PASS),UNIT=SYSDA,
//            SPACE=(CYL,(5,5,44)),DSNTYPE=LIBRARY,
//            DCB=(LRECL=0,BLKSIZE=32760,RECFM=U,DSORG=PO)
//SYSIN     DD *
  COPYGRP OUTDD=OUTDD,INDD=INDD
  SELECT MEMBER=&C1ELEMENT
//**********************************************************************
//* NOW COPY All INTO TARGET OUTPUT LOADLIB MONITOR=COMPONENTS      *
//**********************************************************************
 //CPY2    EXEC PGM=BSTCOPY,MAXRC=04
  //SYSPRINT  DD SYSOUT=*
//SYSUT3    DD UNIT=&WRKUNIT,SPACE=(TRK,(1,1))
//SYSUT4    DD UNIT=&WRKUNIT,SPACE=(TRK,(1,1))
//INDD      DD DSN=&&TEMPDSN,DISP=(OLD,PASS)
//OUTDD     DD DSN=&LOADLIB1,DISP=SHR,MONITOR=COMPONENTS,
//           FOOTPRNT=CREATE
 //SYSIN     DD *
  COPY    OUTDD=OUTDD,INDD=((INDD,R))
//END1  ENDIF

 

The following method can be used, when dealing with copying aliases of load modules or program objects inside a MOVE processor.

It is vital in this case that the Temporary library, and Source library for IEBCOPY, are of the same

Library-type (either PDS or PDSE), since the *LOADMOD Footprint might otherwise not be copied by IEBCOPY.

 

//IF2  IF (&C1ACTION=TRANSFER) OR (&C1ACTION=MOVE) THEN
//********FIRST IEBCOPY COPYGRP TO PRESERVE ALIAS***********************
//TRCOPY1 EXEC PGM=IEBCOPY,MAXRC=04
//SYSPRINT  DD SYSOUT=*
//FCOPYOFF DD DUMMY
//SYSUT3    DD UNIT=&WRKUNIT,SPACE=(TRK,(1,1))
//SYSUT4    DD UNIT=&WRKUNIT,SPACE=(TRK,(1,1))
//INDD      DD DSN=&LOADLIB1,DISP=SHR  
//OUTDD     DD DSN=&&TMPDSN,DISP=(,PASS),UNIT=SYSDA,
//            SPACE=(CYL,(5,5,44)),DSNTYPE=LIBRARY, 
//            DCB=(LRECL=0,BLKSIZE=32760,RECFM=U,DSORG=PO)
//SYSIN     DD *
 COPYGRP OUTDD=OUTDD,INDD=INDD
 SELECT MEMBER=&C1ELEMENT
//********NOW COPY ALL IN TEMPORARY TO TARGET PDSE**********************
//TRCPY2 EXEC PGM=BSTCOPY,MAXRC=04
//SYSPRINT  DD  SYSOUT=*
//SYSUT3    DD  UNIT=&WRKUNIT,SPACE=(TRK,(1,1))
//SYSUT4    DD  UNIT=&WRKUNIT,SPACE=(TRK,(1,1))
//OUTDD     DD  DSN=&LOADLIB2,DISP=SHR,MONITOR=COMPONENTS
//INDD      DD  DSN=&&TMPDSN,DISP=SHR,FOOTPRNT=VERIFY
//SYSIN     DD  *
    COPY    OUTDD=OUTDD,INDD=((INDD,R))
//********NOW MOVE THE COMPONENT LIST ..must be the LAST step       ***
//BC1PMVCL EXEC PGM=BC1PMVCL,COND=(0,NE)
//END2  ENDIF