Description:
Load modules and program objects with an Alias can be handled by BSTCOPY even though it does not support COPYGRP syntax.
When it is required to bring load-only software under Endevor control, the following method can be used. Two steps are needed 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