CRBBAT1 
.PROC,CRBBAT1*I,\ 
*CALL COMPC 
*CALL COMCCPL 
RL      ' 3 CHARACTER RELEASE LEVEL            '=(*N=,,*A3),
BL      ' 3 CHARACTER BASE LEVEL               '=(*N=,,*A3),
CL      ' 3 CHARACTER CODE LEVEL               '=(*N=,,*A3),
*IF,DEF,63CSET
CSET    ' CHARACTER SET                        '=(*N=63), 
*ELSE 
CSET    ' CHARACTER SET                        '=(*N=64), 
*ENDIF
*CALL COMPROC 
. 
*CALL     PSRLEV
  
.****   CRBBAT1 
.*
.*      PROCEDURE TO UPDATE CROSS PL WITH PRODUCT MODS FROM CODEPL
.*      GENERATES NEW CROSS PROGRAM BINARIES (INCLUDES USER 
.*      CORRECTIONS IF AVAILABLE). ALSO INSTALLS VARIOUS CROSS
.*      PROGRAMS AS INDIVIDUAL DIRECT ACCESS PERM FILES.
  
.*      NON PERMANENT CORRECTIVE CODE FROM PL *CPRD*, IF ANY
.*      IS APPLIED TO THE BINARY ONLY BEFORE ANY USER CODE. 
.*
  
BEGIN(SETAJTL,INSTALL)
ATTACH(OLDPCRS=PCRS_RL) 
.*
.*  EXTRACT PERMANENT CORRECTIONS IF REQUIRED 
.*
IFE(($CC$.EQ.$YES$).OR.($PC$.EQ.$YES$),NOPC)
ATTACH(CPRD=CODEPL_BL/NA) 
IFE($PC$.EQ.$YES$,NOPC) 
NOTE(CRSDIR1)*/ID CRBGETXSY*/C XSY
NOTE(CPRDCRS,NR)/*LT 25000
UPDATE(Q,P=CPRD,I=CRSDIR1,K=CPRDCRS,*=/,R,D,8)
RETURN(CRSDIR1) 
PACK(CPRDCRS) 
UPDATE(P=OLDPCRS,I=CPRDCRS,N=TMPPCRS,C=0,W) 
RETURN(OLDPCRS,CPRDCRS) 
SKIPEI(TMPPCRS) 
WRITEF(TMPPCRS) 
ELSE(NOPC)
RENAME(TMPPCRS=OLDPCRS) 
ENDIF(NOPC) 
.*
.*  GET AND APPLY TEMPORARY AND/OR CRITICAL CORRECTIONS 
.*
IFE($BL$,GETUCRS) 
IFE($BL$.NE.$CL$,NOUCRS)
ENDIF(GETUCRS)
BEGIN(ACQUIRE,INSTALL,LFN=TMPUCRS,PFN=UCRS_CL)
ENDIF(NOUCRS) 
IFE($CC$.EQ.$YES$,L10001) 
NOTE(CRSDIR1)*/C CXSY 
REWIND(CPRD)
UPDATE(Q,P=CPRD,I=CRSDIR1,K=TMPUCR,*=/,R,D,8) 
IFE(FILE(TMPUCR,AS),L10001) 
REWIND(TMPUCR,TMPUCRS,ZXC)
COPYBR(TMPUCR,ZXC)
COPYBR(TMPUCRS,ZXC) 
RETURN(TMPUCR)
RENAME(TMPUCRS=ZXC) 
REWIND(TMPUCRS) 
ENDIF(L10001) 
RETURN(CPRD)
NOTE(UCRS,NR)/*LT 25000 
COPYEI(TMPUCRS,UCRS)
RETURN(TMPUCRS) 
NOTE(UCRS,NR)/*ID NOSCCP
NOTE(UCRS,NR)/*D XSYA127.6/      MAXGLBL = 6143;
NOTE(UCRS,NR)/*D XSYA127.9/      VARPAGE = 191; 
NOTE(UCRS,NR)/*D XSYA127.407/MAXGLBL   EQU    6143
PACK(UCRS)
UPDATE(F,P=TMPPCRS,I=UCRS,N=TMPNWPL)
RETURN(UCRS)
ATTACH(PASCAL=ACYP_RL)
IFE($CCPLIST$.NE.$PF$,YESPF)
IFE($CCPLIST$.EQ.$BOTH$,NOTPF)
ENDIF(YESPF)
PURGE(LCRB_CL/NA) 
DEFINE(LISTING=LCRB_CL) 
ELSE(NOTPF) 
IFE($CCPLIST$.EQ.$NO$,YESLIST)
ASSIGN(NE,LISTING)
ENDIF(YESLIST)
ENDIF(NOTPF)
.*
.*  GENERATE 2550 PASCAL BINARY 
.*
PURGE(APAS_CL/NA) 
DEFINE(BPASCAL=APAS_CL) 
COMPASS(A,I,B=BPASCAL,L=LISTING)   DPOSYS 
RFL(77000)
PASCAL(P=COMPILE,KEEPF=BPASCAL,L=LISTING,OPT=NOGO,#CSET=CSET) 
RFL(0)
COMPASS(A,I,B=BPASCAL,L=LISTING)   DSYMIO 
SKIPR(COMPILE)   DERRMSS
NOTE(CRSDIR2)/*ID GTDERRMSS/*C DERRMSS
UPDATE(Q,P=TMPNWPL,I=CRSDIR2,C=DERRMSS,D,8,L=1) 
RETURN(CRSDIR2) 
RFL(77000)
PASCAL(P=COMPILE,D=DERRMSS,L=LISTING) 
RFL(0)
RETURN(DERRMSS) 
REWIND(MSGFILE) 
COPYBR(MSGFILE,BPASCAL) 
RETURN(MSGFILE) 
RFL(77000)
PASCAL(P=COMPILE,KEEPF=BPASCAL,L=LISTING,OPT=NOGO,#CSET=CSET) 
RFL(0)
RETURN(BPASCAL) 
.*
.*  GENERATE FORMAT ABSOLUTE BINARY 
.*
FTN(A,I,B=BFORMAT,L=LISTING,OPT=2)
PURGE(AFMT_CL/NA) 
DEFINE(LGO=AFMT_CL) 
LOAD(BFORMAT) 
NOGO(LGO) 
RETURN(BFORMAT,LGO) 
.*
.*  GENERATE PASCAL CROSS-REFERENCE BINARY
.*
PURGE(AXRF_CL/NA) 
DEFINE(BXREF=AXRF_CL) 
RFL(77000)
PASCAL(P=COMPILE,KEEPF=BXREF,L=LISTING,OPT=NOGO,#CSET=CSET) 
RFL(0)
RETURN(BXREF) 
.*
.*  GENERATE MACRO ASSEMBLER BINARY 
.*
COMPASS(A,I,B=KRNTXT,L=0) 
PURGE(AASM_CL/NA) 
DEFINE(LGO=AASM_CL) 
COMPASS(A,I,G=KRNTXT,L=LISTING) 
RETURN(KRNTXT)
COPYBR(COMPILE,MACROS)
.*
.*  GENERATE MACRO TEXT BINARY RECORD 
.*
PURGE(AMAC_CL/NA) 
DEFINE(SMAC17=AMAC_CL)
RFL(77000)
LGO(I=MACROS,B=0,M=SMAC17,L=LISTING)
RFL(0)
RETURN(LGO,MACROS,SMAC17) 
SKIPR(COMPILE)   MPLINKPRG,MPEDITPRG,DPOSYT 
.*
.*  GENERATE MICRO ASSEMBLER ABSOLUTE BINARY
.*
FTN(A,I,B=BMASSEM,L=LISTING,OPT=2,PL=25000) 
PURGE(AMAS_CL/NA) 
DEFINE(LGO=AMAS_CL) 
LOAD(BMASSEM) 
NOGO(LGO) 
RETURN(BMASSEM,LGO) 
.*
.*  GENERATE MPLIB ABSOLUTE BINARY
.*
FTN(A,I,S=IOTEXT,B=BMPLIB,L=LISTING,OPT=2)
RETURN(COMPILE) 
PURGE(ALIB_CL/NA) 
DEFINE(LGO=ALIB_CL) 
LOAD(BMPLIB)
NOGO(LGO) 
RETURN(BMPLIB,LGO)
.*
.*  GENERATE MPLINK BINARY
.*
NOTE(CRSDIR3)/*ID LINKSYT/*DF MPLINK/*DF NOPSCL/*C DPOSYT 
UPDATE(Q,P=TMPNWPL,I=CRSDIR3,L=1) 
RETURN(CRSDIR3) 
PURGE(ALNK_CL/NA) 
DEFINE(BMPLINK=ALNK_CL) 
COMPASS(A,I,B=BMPLINK,L=LISTING)
RETURN(COMPILE) 
NOTE(CRSDIR4)/*ID LINKPRG/*DF PRG/*C MPLINKPRG
UPDATE(Q,P=TMPNWPL,I=CRSDIR4,L=1) 
RETURN(CRSDIR4) 
RFL(110000) 
PASCAL(P=COMPILE,KEEPF=BMPLINK,L=LISTING,OPT=NOGO,#CSET=CSET) 
RFL(0)
RETURN(COMPILE,BMPLINK) 
.*
.*  GENERATE MPEDIT BINARY
.*
NOTE(CRSDIR5)/*ID EDITSYT/*DF MPEDIT/*DF NOPSCL/*C DPOSYT 
UPDATE(Q,P=TMPNWPL,I=CRSDIR5,L=1) 
RETURN(CRSDIR5) 
PURGE(AEDT_CL/NA) 
DEFINE(BMPEDIT=AEDT_CL) 
COMPASS(A,I,B=BMPEDIT,L=LISTING)
RETURN(COMPILE) 
NOTE(CRSDIR6)/*ID EDITPRG/*DF PRG/*C MPEDITPRG
UPDATE(Q,P=TMPNWPL,I=CRSDIR6,L=1) 
RETURN(CRSDIR6,TMPNWPL) 
RFL(77000)
PASCAL(P=COMPILE,KEEPF=BMPEDIT,L=LISTING,OPT=NOGO,#CSET=CSET) 
RFL(0)
RETURN(COMPILE,BMPEDIT) 
.*
.*  GENERATE NEW CYBER PASCAL COMPILER IF REQUIRED
.*
IFE($RL$,NORL)
REWIND(PASCAL)
PURGE(ACYP_CL/NA) 
DEFINE(CYPASCL=ACYP_CL) 
COPYBF(PASCAL,CYPASCL)
ENDIF(NORL) 
RETURN(PASCAL,CYPASCL)
.*
.*  MAKE NEW PCRS PERMANENT IF PC 
.*
IFE($PC$.EQ.$YES$,NOPC) 
PURGE(PCRS_BL/NA) 
DEFINE(NEWPCRS=PCRS_BL) 
COPYBF(TMPPCRS,NEWPCRS) 
ENDIF(NOPC) 
RETURN(TMPPCRS,NEWPCRS) 
IFE($CCPLIST$.NE.$YES$,YESLIST) 
IFE($CCPLIST$.EQ.$BOTH$,NOLIST) 
ENDIF(YESLIST)
REWIND(LISTING) 
COPYEI(LISTING) 
ENDIF(NOLIST) 
RETURN(LISTING) 
REVERT.  CRBBAT1. 
.*
EXIT. 
RFL(0)
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)  CRBBAT1. 
*WEOR 
