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