IMCBAT1 
.PROC,IMCBAT1*I,\ 
*CALL COMPC 
*CALL COMCCPL 
XTRAPLS ' MERGE EXTRA PLS INTO PCMB  (NO/YES)  '=(*N=NO,NO,YES,*K=YES), 
RL      ' 3 CHARACTER RELEASE LEVEL            '=(*N=,,*A3),
BL      ' 3 CHARACTER BASE LEVEL               '=(*N=,,*A3),
CL      ' 3 CHARACTER CODE LEVEL               '=(*N=,,*A3),
UNP     ' USER NAME/PACK NAME FOR CCP FILES    '=(*N=,,*A), 
*CALL COMPROC 
. 
*CALL     PSRLEV
  
.****   IMCBAT1 
.*
.*      PROCEDURE TO GENERATE A NEW COMBINED (MERGED) CCP PROGRAM 
.*      LIBRARY - PCMB.  PCMB ALSO INCLUDES CORRECTIONS FROM THE
.*      CODEPL IF REQUIRED, BUT DOES NOT INCLUDE USER 
.*      SUPPLIED CORRECTION - UCCP - AS THESE ARE CONSIDERED
.*      TEMPORARY CORRECTIONS.  THIS PROCEDURE ALSO BUILDS THE
.*      EXPAND AND AUTOLINK BINARIES. 
.*
  
BEGIN(SETAJTL,INSTALL)
ATTACH(PCCP=PCCP_RL_UNP)
ATTACH(PBST=PBST_RL/NA_UNP) 
ATTACH(PDGN=PDGN_RL/NA_UNP) 
ATTACH(PREM=PREM_RL/NA_UNP) 
.*
.*  UPDATE PLS WITH PRODUCT MODS FROM REL0 IF REQUIRED
.*
PURGE(UCCPCC/NA)
IFE(($CC$.EQ.$YES$).OR.($PC$.EQ.$YES$),NOCNSP)
ATTACH(CNSP=CODEPL_BL_UNP/NA) 
.*
.*  UPDATE CCP BASE PL
.*
IFE($PC$.EQ.$YES$,NOPC) 
NOTE(MODSDIR)*/ID IMCGETCC5*/C CC5
NOTE(CCPMOD,NR)/*LT 25000 
UPDATE(Q,P=CNSP,I=MODSDIR,K=CCPMOD,*=/,R=P,D,8) 
PACK(CCPMOD)
UPDATE(P=PCCP,I=CCPMOD,N=NPCCP,C=0,W) 
RETURN(PCCP,CCPMOD) 
ELSE(NOPC)
RENAME(NPCCP=PCCP)
ENDIF(NOPC) 
IFE($CC$.EQ.$YES$,L10001) 
NOTE(MODSDIR)*/C CCC5 
UPDATE(Q,P=CNSP,I=MODSDIR,K=CCPMOD,*=/,D,8) 
IFE(FILE(CCPMOD,AS),L10001) 
COPYBR(CCPMOD,UCCPCC) 
ENDIF(L10001) 
.*
.*  UPDATE BST PL IF AVAILABLE
.*
IFE(FILE(PBST,AS),NOBST)
IFE($PC$.EQ.$YES$,NOPC) 
NOTE(MODSDIR)*/ID IMCGETBS5*/C BS5
NOTE(BSTMOD,NR)/*LT 25000 
UPDATE(Q,P=CNSP,I=MODSDIR,K=BSTMOD,*=/,R=P,D,8) 
PACK(BSTMOD)
UPDATE(P=PBST,I=BSTMOD,N=NPBST,C=0,W) 
RETURN(PBST,BSTMOD) 
ELSE(NOPC)
RENAME(NPBST=PBST)
ENDIF(NOPC) 
IFE($CC$.EQ.$YES$,NOCCODE)
NOTE(MODSDIR)*/C CBS5 
UPDATE(Q,P=CNSP,I=MODSDIR,K=BSTMOD,*=/,D,8) 
IFE(FILE(BSTMOD,AS),NOCCODE)
COPYBR(BSTMOD,UCCPCC) 
ENDIF(NOCCODE)
ENDIF(NOBST)
.*
.*  UPDATE DGN PL IF AVAILABLE
.*
IFE(FILE(PDGN,AS),NODGN)
IFE($PC$.EQ.$YES$,NOPC) 
NOTE(MODSDIR)*/ID IMCGETDG5*/C DG5
NOTE(DGNMOD,NR)/*LT 25000 
UPDATE(Q,P=CNSP,I=MODSDIR,K=DGNMOD,*=/,R=P,D,8) 
PACK(DGNMOD)
UPDATE(P=PDGN,I=DGNMOD,N=NPDGN,C=0,W) 
RETURN(PDGN,DGNMOD) 
ELSE(NOPC)
RENAME(NPDGN=PDGN)
ENDIF(NOPC) 
IFE($CC$.EQ.$YES$,L10002) 
NOTE(MODSDIR)*/C CDG5 
UPDATE(Q,P=CNSP,I=MODSDIR,K=DGNMOD,*=/,D,8) 
IFE(FILE(DGNMOD,AS),L10002) 
COPYBR(DGNMOD,UCCPCC) 
ENDIF(L10002) 
ENDIF(NODGN)
.*
.*  UPDATE REMOTE PL IF AVAILABLE 
.*
IFE(FILE(PREM,AS),NOREM)
IFE($PC$.EQ.$YES$,NOPC) 
NOTE(MODSDIR)*/ID IMCGETRN5*/C RN5
NOTE(REMMOD,NR)/*LT 25000 
UPDATE(Q,P=CNSP,I=MODSDIR,K=REMMOD,*=/,R=P,D,8) 
PACK(REMMOD)
UPDATE(P=PREM,I=REMMOD,N=NPREM,C=0,W) 
RETURN(PREM,REMMOD) 
ELSE(NOPC)
RENAME(NPREM=PREM)
ENDIF(NOPC) 
IFE($CC$.EQ.$YES$,L10003) 
NOTE(MODSDIR)*/C CRN5 
UPDATE(Q,P=CNSP,I=MODSDIR,K=REMMOD,*=/,D,8) 
IFE(FILE(REMMOD,AS),L10003) 
COPYBR(REMMOD,UCCPCC) 
ENDIF(L10003) 
ENDIF(NOREM)
.*
.*  GENERATE CRITICAL CODE CORRECTIONS FILE IF REQUIRED 
.*
IFE(FILE(UCCPCC,AS),L10004) 
DEFINE(ZXC=UCCPCC)
REWIND(UCCPCC)
PACK(UCCPCC,ZXC)
ENDIF(L10004) 
RETURN(CNSP,UCCPCC,ZXC,CCPMOD,BSTMOD,DGNMOD,REMMOD,MODSDIR) 
.*
ELSE(NOCNSP)
RENAME(NPCCP=PCCP)
IFE(FILE(PBST,AS),NOPBST) 
RENAME(NPBST=PBST)
ENDIF(NOPBST) 
IFE(FILE(PDGN,AS),NOPDGN) 
RENAME(NPDGN=PDGN)
ENDIF(NOPDGN) 
IFE(FILE(PREM,AS),NOPREM) 
RENAME(NPREM=PREM)
ENDIF(NOPREM) 
ENDIF(NOCNSP) 
.*
.*  GENERATE COMBINED (MERGED) PL - PCMB
.*
BEGIN(,IMCMGPL,NPBST,NOTXTRA) 
BEGIN(,IMCMGPL,NPDGN,NOTXTRA) 
BEGIN(,IMCMGPL,NPREM,NOTXTRA) 
.*
.*  MAKE NEW PL-S PERMANENT 
.*
IFE($PC$.EQ.$YES$,NOPC) 
PURGE(PCCP_BL/NA) 
DEFINE(PCCP=PCCP_BL)
COPYEI(NPCCP,PCCP)
RETURN(PCCP)
.*
IFE(FILE(NPBST,AS),NOBST) 
PURGE(PBST_BL/NA) 
DEFINE(PBST=PBST_BL)
COPYEI(NPBST,PBST)
RETURN(PBST)
ENDIF(NOBST)
.*
IFE(FILE(NPDGN,AS),NODGN) 
PURGE(PDGN_BL/NA) 
DEFINE(PDGN=PDGN_BL)
COPYEI(NPDGN,PDGN)
RETURN(PDGN)
ENDIF(NODGN)
.*
IFE(FILE(NPREM,AS),NOREM) 
PURGE(PREM_BL/NA) 
DEFINE(PREM=PREM_BL)
COPYEI(NPREM,PREM)
RETURN(PREM)
ENDIF(NOREM)
.*
ENDIF(NOPC) 
IFE($XTRAPLS$.EQ.$YES$,NOEXTRA) 
.*
.*  EXTRA PL-S TO BE MERGED 
.*
GET(USERBPS)
IFE(.NOT.FILE(NEWPL,AS),GOTNWPL)
RENAME(NEWPL=NPCCP) 
ENDIF(GOTNWPL)
NOTE(XPLUDIR)/*ID XPL/*C EXPAND,WEOR,EXPTEXT
UPDATE(Q,P=NEWPL,I=XPLUDIR,K,L=1,D,8) 
RETURN(XPLUDIR) 
FTN(A,I,B=EXPAND,L=0) 
COPYBR(COMPILE,EXPTEXT) 
RETURN(COMPILE) 
BEGIN(GETULIB,INSTALL,FORTRAN,SYSLIB,BAMLIB)
NOTE(XPLSDEF)/PLS.
EXPAND(XPLSDEF,USERBPS,EXPTEXT,OUTPUT,XPLPROC)
RETURN(EXPAND,XPLSDEF,USERBPS,EXPTEXT)
BEGIN(,XPLPROC) 
ENDIF(NOEXTRA)
RETURN(XPLPROC,IMCMGPL) 
.*
.*  MAKE COMBINED PL PERMANENT
.*
PURGE(PCMB_BL/NA) 
DEFINE(PCMB=PCMB_BL)
*IF,DEF,63CSET
NOTE(CSET63)/*ID CSET63/*DF CSET63
IFE(FILE(NEWPL,AS),NPLNTAS) 
UPDATE(P=NEWPL,N=PCMB,I=CSET63,C=0,L=1) 
ELSE(NPLNTAS) 
UPDATE(P=NPCCP,N=PCMB,I=CSET63,C=0,L=1) 
ENDIF(NPLNTAS)
*ELSE 
IFE(FILE(NEWPL,AS),SEQTORAN)
COPYEI(NEWPL,PCMB)
ELSE(SEQTORAN)
UPDATE(P=NPCCP,N=PCMB,I=0,C=0,L=1)
ENDIF(SEQTORAN) 
*ENDIF
RETURN(NPCCP,NPBST,NPDGN,NPREM,NEWPL,PCMB)
.*
.*  GET AND APPLY TEMPORARY CORRECTIONS 
.*
BEGIN(CCPGNPL,INSTALL,#BL=BL,#CL=CL)
.*
.*  GENERATE EXPAND ABSOLUTE BINARY 
.*
NOTE(EXPUDIR)/*ID IMCEXPAND/*C EXPAND 
UPDATE(Q,P=NEWPL,I=EXPUDIR,K,L=1) 
RETURN(EXPUDIR) 
IFE($CCPLIST$.NE.$PF$,YESPF)
IFE($CCPLIST$.EQ.$BOTH$,NOTPF)
ENDIF(YESPF)
PURGE(LIMC_CL/NA) 
DEFINE(LISTING=LIMC_CL) 
ELSE(NOTPF) 
IFE($CCPLIST$.EQ.$NO$,YESLIST)
ASSIGN(NE,LISTING)
ENDIF(YESLIST)
ENDIF(NOTPF)
FTN(A,I,B=BEXP,L=LISTING,OPT=2,P) 
RETURN(COMPILE) 
IFE($XTRAPLS$.EQ.$NO$,GETU) 
BEGIN(GETULIB,INSTALL,FORTRAN,SYSLIB) 
ENDIF(GETU) 
PURGE(AEXP_CL/NA) 
DEFINE(LGO=AEXP_CL) 
LOAD(BEXP)
NOGO(LGO) 
RETURN(BEXP,LGO)
.*
.*  GENERATE AUTO-LINK ABSOLUTE BINARY
.*
NOTE(ALKUDIR)/*ID IMCAUTLNK/*C ALMASTER 
UPDATE(Q,P=NEWPL,I=ALKUDIR,K,L=1) 
RETURN(ALKUDIR) 
FTN(A,I,B=BALK,L=LISTING,OPT=2,PL=25000,P)
RETURN(COMPILE) 
PURGE(AALK_CL/NA) 
DEFINE(LGO=AALK_CL) 
LDSET(PRESET=ZERO)
LOAD(BALK)
NOGO(LGO) 
RETURN(BALK,LGO,LISTING)
REVERT.  IMCBAT1. 
.*
EXIT. 
IFE($CCPLIST$.NE.$YES$,LISTAV)
IFE($CCPLIST$.EQ.$BOTH$,NOLIST) 
ENDIF(LISTAV) 
REWIND(LISTING) 
COPYEI(LISTING) 
ELSE(NOLIST)
IFE($CCPLIST$.EQ.$NO$,LSTISPF)
NOTE(,NR)// **** BUILD STEP ABNORMAL TERMINATION
NOTE(,NR)// **** CCP, CROSS LISTING FILE NOT CREATED, 
NOTE(,NR)// **** MAY BE NECESSARY TO RERUN THE BUILD STEP WITH
NOTE(,NR)// **** #LIST PARAMETER SPECIFIED TO DETERMINE CAUSE 
NOTE(,NR)// **** OF FAILURE.
ENDIF(LSTISPF)
ENDIF(NOLIST) 
REVERT(ABORT)  IMCBAT1. 
.*
.DATA,IMCMGPL 
.PROC,IMCMGPL,MRGPL,NOTXTRA=0/1.
.*
.*  MERGES A PL INTO PCMB.
.*
IFE(NOTXTRA,YESXTRA)
IFE(FILE(MRGPL,AS),DONE)
RENAME(MERGEPL=MRGPL) 
IFE(FILE(NEWPL,AS),NONEWPL) 
RENAME(OLDPL=NEWPL) 
ELSE(NONEWPL) 
RENAME(OLDPL=NPCCP) 
ENDIF(NONEWPL)
ELSE(YESXTRA) 
RENAME(OLDPL=NEWPL) 
ATTACH(MERGEPL=MRGPL) 
ENDIF(YESXTRA)
UPDATE(M=MERGEPL,N,C=0,I=0,L=1) 
IFE(NOTXTRA,YESXTRA)
RENAME(MRGPL=MERGEPL) 
IFE(FILE(NPCCP,AS),NONPCCP) 
RETURN(OLDPL) 
ELSE(NONPCCP) 
RENAME(NPCCP=OLDPL) 
ENDIF(NONPCCP)
ELSE(YESXTRA) 
RETURN(OLDPL,MRGPL) 
ENDIF(YESXTRA)
ENDIF(DONE) 
REVERT.  IMCMGPL
EXIT. 
REVERT(ABORT)  IMCMGPL
*WEOR 
