MCS 
.PROC,MCS*I,\ 
TRACE   ' ENABLE TRACE CODE          (NO/YES)  '=(*N=,NO=,YES=D,*K=D),
*CALL COMPC 
*CALL COMUSER 
*CALL COMLIST 
*CALL COMTOB
*CALL COMIA 
*CALL COMIUN
*CALL COMTOL
*CALL COMD2 
*CALL COMX2 
*CALL COMXOPL 
*CALL COMPROC 
. 
  
* MCS - MESSAGE CONTROL SYSTEM (MCS) 1.0
*CALL     PSRLEV
* 
  
.*****  MCS 
.*
.*      BUILD MESSAGE CONTROL SYSTEM (MCS) AND APPLICATION
.*      DEFINITION LANGUAGE.
  
.***    NOTE
.*
.*      MCS CAN BE INSTALLED WITH DEBUG ON BY USING 
.*      THE FOLLOWING - 
.*
.*      BEGIN,MCS,INSTALL,TRACE.
.*
  
  
.*
.*  START MCS VIA SUBPROC.
.*
BEGIN(SUBPROC,INSTALL,MCS,,LIST,MAPTYPE,IA,TOBLD,TOLIST,USERF)
REVERT.        MCS. 
EXIT. 
REVERT(ABORT)  MCS. 
  
  
.DATA,ZZZPROC 
.PROC,MCS.
*CALL     PSRLEV
BEGIN(PRDIN,INSTALL,PRDNAME=MCS1,#PN=PN,#PR=PR,DISK=0)
BEGIN(PRDAUX,INSTALL,PRDNAME=NAM5,#PNO=PN2,#PRO=PR2)
BEGIN(UP,INSTALL,RANDOM,PCPL=CNSP,#PC=PC,#CC=CC,PCDECK=MCS,NUMAUX=1)
RFL(75000)
SYMPL(ET=T,I,B=MCSTXT,L=LIST) MCS TEXT
IFE($TRACE$.EQ.$#D$,DEF)
SYMPL(ET=T,I,E,Y=MCSTXT,B=LIB,L=LIST) MCS/ADL SYMPL 
ELSE(DEF) 
SYMPL(ET=T,I,Y=MCSTXT,B=LIB,L=LIST) MCS/ADL SYMPL 
ENDIF(DEF)
BEGIN(PRDAUX,INSTALL,PRDNAME=OPL,#PNO=PN99,#PRO=PR99) 
RENAME(OPL=AUXPL) 
SYMPL(ET=T,I,Y=MCSTXT,B=LIB,L=LIST) DUMPERS 
COMPASS(A,I,S=CPUTEXT,S=IPTEXT,S=IOTEXT,B=LIB,L=LIST) ADL COMPASS 
COMPASS(A,I,S=PSSTEXT,S=NOSTEXT,S=IPTEXT,S=SSYTEXT,B=LIB,L=LIST)MCS COM 
COMPASS(A,I,S=PSSTEXT,S=NOSTEXT,S=SSYTEXT,B=SKEL,L=LIST) MCS OVL SKEL 
* COMPILE SYNGEN
SYMPL(ET=T,I,B=SYNBIN,L=LIST) SYNGEN SYMPL
COMPASS(A,I,S=IOTEXT,S=IPTEXT,B=SYNBIN,L=LIST) SYNGEN COMPASS 
BEGIN(GETULIB,INSTALL,BAMLIB,FORTRAN,SYSLIB,SYMLIB) 
LDSET(LIB=BAMLIB) 
LDSET(ERR=ALL,PRESET=ZERO)
LOAD(SYNBIN)
NOGO(SYNGEN)
COMPASS(A,I,B=ADLSKEL,L=LIST)  ADL OVL SKEL 
REDUCE(-) 
SYNGEN(I=COMPILE,O=SYNCOM,L=LIST) GENERATE ADL SYNTAX TABLES
SYMPL(ET=T,I=SYNCOM,B=ADLREL,L=LIST)   COMPILE SYNTAX SOURCE
GTR(LIB,LIB2)REL/MCS$Z41,MACREL,MEMORY,RECALL,READSKP,REWIND,XCOD 
GTR(LIB,LIB2)REL/MCS$S40
LIBGEN(F=LIB2,P=ROLLIB) 
LIBGEN(F=LIB,P=MCSLIB)
* LOAD MCS
BEGIN(GETULIB,INSTALL,NETIO,NETIOD,SYSLIB)
LDSET(LIB=NETIO_TRACE/SYSLIB/ROLLIB/MCSLIB) 
LDSET(ERR=ALL,PRESET=ZERO)
LOAD(SKEL)
NOGO(LGO) 
* LOAD ADLP 
REWIND(ADLSKEL,ADLREL)
COPYLM(ADLSKEL,ADLREL,ADLBIN) 
LIBRARY(MCSLIB) 
LDSET(ERR=ALL,PRESET=ZERO)
LOAD(ADLBIN)
NOGO(LGO) 
RETURN(LIB,LIB2)
RETURN(INZ) 
.IF,(R1G.EQ.0),MCS1.
  NOTE(INZ)+RS:/ZZIUN/,/IUN/+END
.ELSE(MCS1) 
  NOTE(INZ)+RS:/ZZIUN/,/#INSTALL/+END 
.ENDIF(MCS1)
EDIT(MCSPROC,I=INZ,L=0) 
RETURN(INZ) 
REDUCE. 
BEGIN(PFGOUT,INSTALL,PRDNAME=MCS1,LFN=MCSPROC)
REPLACE(MCSPROC=MCS)
BEGIN(PRDOUT,INSTALL,PRDNAME=MCS1,#PNO=PNO,#PRO=PRO)
BEGIN(GENDIR,INSTALL,LIB=34)
BEGIN(SAVELGO,INSTALL,PRDNAME=MCS1) 
BEGIN(END,INSTALL,MFT=R1G+) 
REVERT.  MCS. 
EXIT. 
REVERT(ABORT)  MCS. 
#.DATA,MCSPROC
.PROC,MCS.
RETURN(MCS) 
ATTACH(ADLLIB/UN=ZZIUN,NA)
IF, FILE(ADLLIB, .NOT. AS) ,MCS1. 
REVERT(ABORT) MCS - ADLLIB FILE NOT AVAILABLE.
ENDIF(MCS1) 
RFL(60000)
MCS(GO) 
REVERT. MCS 
EXIT. MCS 
REWIND(ZZZZZDN) 
DLFP(I=0) 
REVERT(ABORT) MCS 
*WEOR 
