SAMBAT1 
.PROC,SAMBAT1*I,\ 
*CALL COMCCPL 
BL      ' 3 CHARACTER BASE LEVEL               '=(*N=,,*A3),
CL      ' 3 CHARACTER CODE LEVEL               '=(*N=,,*A3),
CRL     ' 3 CHARACTER CROSS LEVEL              '=(*N=,,*A3),
OBJLST  ' OBJECT LIST FROM PASCAL COMPILER     '=(*N=,,$,O$,*K=$,O$), 
XREF    ' SELECT CROSS REFERENCE     (NO/YES)  '=(*N=NO,NO,YES,*K=YES), 
ECS     ' EXTENDED MEMORY                      '=(*N=0,ECS=1,NOECS=0, 
                                                  *K=1),
UNP     ' USER NAME/PACK NAME FOR CCP FILES    '=(*N=,,*A), 
UNC     ' USER NAME/PACK NAME FOR CROSS FILES  '=(*N=,,*A), 
*IF,DEF,63CSET
CSET    ' CHARACTER SET                        '=(*N=63), 
*ELSE 
CSET    ' CHARACTER SET                        '=(*N=64), 
*ENDIF
*CALL COMPROC 
. 
*CALL   PSRLEV
  
.****   SAMBAT1 
.*
.*      PROCEDURE TO BUILD SYSTEM AUTOSTART (SAM) LOAD MODULE 
.*
  
BEGIN(SETAJTL,INSTALL)
.*
.*  UPDATE PL 
.*
BEGIN(CCPGNPL,INSTALL,#BL=BL,#CL=CL,
#UNP=$UNP$) 
NOTE(SAMDIR1,NR)/*ID SAM2550/*C PMDECKS 
PACK(SAMDIR1) 
UPDATE(Q,P=NEWPL,I=SAMDIR1,K,L=1) 
RETURN(SAMDIR1) 
.*
.*  DO PASCAL AND FORMAT
.*
ATTACH(PASCAL=APAS_CRL_UNC) 
IFE($CCPLIST$.NE.$PF$,YESPF)
IFE($CCPLIST$.EQ.$BOTH$,NOTPF)
ENDIF(YESPF)
PURGE(LSAM_CL/NA) 
DEFINE(LISTING=LSAM_CL) 
ELSE(NOTPF) 
IFE($CCPLIST$.EQ.$NO$,YESLIST)
ASSIGN(NE,LISTING)
ENDIF(YESLIST)
ENDIF(NOTPF)
IFE(ECS,NOECS)
NOEXIT. 
RFL(EC=42)
ONEXIT. 
ENDIF(NOECS)
RFL(77000)
IFE($XREF$.EQ.$YES$,NOXREF) 
PASCAL(P=COMPILE,L=PASLIST,X=1_OBJLST,#CSET=CSET) 
ELSE(NOXREF)
PASCAL(P=COMPILE,L=LISTING,X=1_OBJLST,#CSET=CSET) 
ENDIF(NOXREF) 
RFL(0,0)
RETURN(PASCAL,CODFLE,SYMFLE)
ATTACH(FORMAT=AFMT_CRL_UNC) 
FORMAT(,,PB)
RFL(0)
RETURN(FORMAT,PASCLGO)
BKSP(LGO) 
.*
.*  DO XREF IF REQUIRED 
.*
IFE($XREF$.EQ.$YES$,NOXREF) 
BEGIN(XRFBAT1,INSTALL,#CRL=CRL,#UNC=$UNC$)
ENDIF(NOXREF) 
.*
.*  DO ASSEMBLY 
.*
ATTACH(ASSEM=AASM_CRL_UNC)
ATTACH(MACRO=AMAC_CRL_UNC)
RFL(77000)
ASSEM(I=COMPILE,G=MACRO,L=LISTING,X=1,PB,NR)
RFL(0)
RETURN(ASSEM,MACRO,COMPILE) 
.*
.*  DO MPLINK 
.*
REWIND(LGO) 
NOTE(SAMDIR2,NR)/*ID SAMLKDR/*C SAMBUILD
PACK(SAMDIR2) 
UPDATE(Q,P=NEWPL,I=SAMDIR2,K=SAMLKDR,L=1) 
RETURN(SAMDIR2) 
ATTACH(MPLINK=ALNK_CRL_UNC) 
RFL(110000) 
MPLINK(D=SAMLKDR,R=LISTING,X=1,#CSET=CSET)
RFL(0)
RETURN(MPLINK,SAMLKDR,LGO)
REWIND(ABSOLMP,SYMTAB)
.*
.*  DO MPEDIT 
.*
NOTE(SAMDIR3)/*ID SAMEDTDIR/*C ZAPSAM 
UPDATE(Q,P=NEWPL,I=SAMDIR3,K=EDITINP,L=1) 
RETURN(SAMDIR3) 
PURGE(ZSAM_CL/NA) 
DEFINE(ZAPMP=ZSAM_CL) 
ATTACH(MPEDIT=AEDT_CRL_UNC) 
RFL(77000)
MPEDIT(D=EDITINP,R=LISTING,X=1,#CSET=CSET)
RFL(0)
WRITEF(ZAPMP) 
RETURN(EDITINP,MPEDIT,ABSOLMP,SYMTAB,ZAPMP) 
IFE($CCPLIST$.NE.$YES$,YESLIST) 
IFE($CCPLIST$.EQ.$BOTH$,NOLIST) 
ENDIF(YESLIST)
REWIND(LISTING) 
COPYEI(LISTING) 
ENDIF(NOLIST) 
RETURN(LISTING) 
REVERT.  SAMBAT1
.*
.*  ERROR PROCESSING
.*
EXIT. 
RFL(0,0)
IFE(FILE(PASLIST,AS),NOCOPY)
IFE(.NOT.FILE(LISTING,DT(NE)),NOCOPY) 
REWIND(PASLIST) 
COPYEI(PASLIST,LISTING) 
ENDIF(NOCOPY) 
IFE(.NOT.$BL$,NOLIST) 
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)  SAMBAT1
*WEOR 
