#BEGINBUCKET PROMOTEPDS
#/ ------------------------------------------------------------------
#BEGINDEFS
#/ ------------------------------------------------------------------
#/EXCEPTIONFORMISSINGSYMBOL
#/ ------------------------------------------------------------------
#BEGININSTANCEQUALIFIERS
#TABLEFIX {MVS2BDSCODE} #/ Fix ds table row from the instance.
#/ For hotfixes we do not want to promote the configs or invokers
#IFEQ [HOTFIX] FALSE #THEN NEXTPDS
#IFEQ {PRODUCT} zostools #THEN DOESNOTQUALIFY
#NEXTPDS
#IF [NOSAL] #THEN NEXT  #/ If not a staged library skip it
#IFEQ [DATASETTYPE] PDS #THEN QUALIFIES
#IFEQ [DATASETTYPE] PDSE #THEN QUALIFIES
#THEN NEXT
#QUALIFIES
#SET [DSLANGCODE] {LANG2BCODE}
#INSTANCEUNIQUEKEY [LOQUAL] #NOTUNIQUE NEXT
#CREATEINSTANCEFROMENTRY
#NEXT
#DOESNOTQUALIFY
#ENDQUALIFIERS
#BEGINPREFIX
#/ Get exclusive access to the CNTLDSN. The job will wait until 
#/ any other enqueues on the CNTLDSN have been released.
#/
//INSTCTL EXEC PGM=IEFBR14
//CHGDISP DD DSN=[CNTLDSN],
//      DISP=OLD
//*
#/ -------------------------------------------------------------------
#BEGININSTANCE
#IFEQ [DSLANGCODE] EN #THEN COPYEN
//COPY{MVS2BDSCODE}{LANG2BCODE} EXEC PGM=IEBCOPY
#THEN COPYALL
#COPYEN
//COPY{MVS2BDSCODE} EXEC PGM=IEBCOPY
#COPYALL
//SYSPRINT DD SYSOUT=[SYSOUT]
//SYSUT3   DD UNIT=[TMPUNI],SPACE=(TRK,(1,1))
//SYSUT4   DD UNIT=[TMPUNI],SPACE=(TRK,(1,1))
//DDIN     DD DSN=[CUSTPRODQUAL][STAGEQUAL].[LOQUAL],     #/ Staged library
//  DISP=SHR
//DDOUT    DD DSN=[CUSTPRODQUAL].[LOQUAL],                #/ Production library
//  DISP=OLD
#IFEQ [DATASETTYPE] PDSE #THEN NONEW
#DIRBLOCKSACTUAL [CUSTPRODQUAL].[LOQUAL] /# Get actual number of directory blocks
#DIRBLOCKSNEEDED /# Get directory blocks needed from SPACEPARMS
#IFEQ [DIRBLOCKSACTUAL] [DIRBLOCKSNEEDED] #THEN NONEW
//DDNEW    DD DSN=[CUSTPRODQUAL].PL.[LOQUAL],             #/ New production
//  DISP=OLD
//SYSIN    DD DATA,DLM='!1'
COPYSLPL COPY INDD=DDIN,OUTDD=DDNEW
COPY{MVS2BDSCODE}PL COPY INDD=DDOUT,OUTDD=DDNEW
!1
#IFEQ [DSLANGCODE] EN #THEN SWAPEN
//*
//* If the previous step succeeded, replace the old production
//* data set with the new one that has sufficient directory blocks.
//*
//SWAP{MVS2BDSCODE}{LANG2BCODE} EXEC PGM=IDCAMS,COND=(0,LT,COPY{MVS2BDSCODE}{LANG2BCODE})
#THEN SWAPALL
#SWAPEN
//SWAP{MVS2BDSCODE} EXEC PGM=IDCAMS,COND=(0,LT,COPY{MVS2BDSCODE})
#SWAPALL
//SYSPRINT DD SYSOUT=[SYSOUT]
//SYSIN    DD DATA,DLM='!1'
 DELETE '[CUSTPRODQUAL].[LOQUAL]' NONVSAM PURGE
 ALTER '[CUSTPRODQUAL].PL.[LOQUAL]' -
    NEWNAME('[CUSTPRODQUAL].[LOQUAL]')
!1
#THEN DONE
#NONEW
//SYSIN    DD DATA,DLM='!1'
COPY{MVS2BDSCODE} COPY  INDD=((DDIN,R)),OUTDD=DDOUT
#IFEQ [DATASETTYPE] PDSE #THEN NOCOMPR
COMPR{MVS2BDSCODE} COPY INDD=DDOUT,OUTDD=DDOUT
#NOCOMPR
!1
#DONE
#/ -------------------------------------------------------------------
#BEGINSUFFIX
#/ -------------------------------------------------------------------
#ENDBUCKET PROMOTEPDS
