.ENABLE SUBSTITUTION
.ENABLE GLOBAL
.SETT $ASM
.SETT $TKB
.SETT $FDT
.SETF $LIST
.SETF $MAP
.SETF DIE
.SETF DEBUG
.SETF TRC
.SETS TRACE ""
.SETS UIC <UIC>
.IF P1 EQ "DEBUG" .SETT DEBUG
.IFT DIE .GOTO EXIT
.IF <SYSUIC> EQ <UIC> .SETT DIE
.IFT DIE; The build UIC must not be the eventual system UIC
.IFT DIE .GOTO EXIT
.IF UIC EQ "[1,54]" .SETT DIE
.IFT DIE ; The build file UIC must not be the system UIC, [1,54]
.IFT DIE .GOTO EXIT
.IF UIC EQ "[1,24] .SETT DIE
.IFT DIE ; The build file UIC must not be [1,24]
.IFT DIE .GOTO EXIT

;      T H E   K M S   A C C O U N T   F I L E   E N H A N C E M E N T S
;                 A N D   U T I L I T I E S   P A C K A G E
;                         R E L E A S E   4 . 0 X A
;                            R S X  1 1 M  V 4 . 0
;                            0 3  -  A P R  -  8 2
;
; KMSGEN STARTED ON '<DATE>' AT '<TIME>'
.IFT DEBUG ;
.IFT DEBUG ; This is a DEBUG run, have fun!
.IFT DEBUG ;
.IFT DEBUG .ASK TRC Display command file commands
;
;
;
.ASK LDLG Long dialog?
;
;     BE WARNED. This command file will auto-abort if you are not running
; on a RSX11M V4.0 system or if required EXEC options are missing.  Your 
; Exec options will be tested using the most recent version of RSXMC.MAC
; found on LB:'<SYSUIC>'.  You must copy a valid RSXMC.MAC to '<SYSUIC>'
; if it is not already there.
;
.ASK ANS	Are you running on a V4.0 system
.IFF ANS ; The files on this kit will not to work on a V3.2 system.
.IFF ANS .GOTO EXIT
;
.INFIL:.ASKS $IN On what device are the virgin source files (DDU:)
.ENABLE QUIET
ASN '$IN'=IN:
.DISABLE QUIET
.IF <EXSTAT> EQ 1 .GOTO OUTFIL
; 
; You specified an illegal physical device, try again
.GOTO INFIL
.OUTFIL:.DISABLE QUIET
; By default, output from SLP files will go to OU: (assigned to SY:)
.ENABLE QUIET
.SETS $OU "SY:"
.DISABLE QUIET
;
.ASK DECNET Have you included DECNET support in your target system.
.IFF DECNET .GOTO NONET
.DISABLE QUIET
;
; DECNET has the ability to place remote virtual terminal like devices (HT:)
; on your target system.  If you intend to have these remote virtual terminals
; it is imperative that their data base be modified to include the accounting
; data structures.  On [344,40] is a file HTTAB.SLP which will do this.
;
.NONET:;
.SETF $MCLI
.IFT DECNET .SETT $MCLI
.IFF $MCLI .ASK $MCLI Does your target system have multiple CLI support
.SKIPIT:
;
.IFT LDLG ; The account file enhancements (sources, cmd files, docmentation,
.IFT LDLG ; and HELP files) require over 2600 blocks of disk storage.
.IFT LDLG ; DEC .OLB files and macro sources push this value up very
.IFT LDLG ; subtantially.  I doubt that this procedure will run correctly
.IFT LDLG ; unmodified on an RK05 system.
.IFF <MAPPED> .SETT DIE
.IFT DIE ;
	.IFT DIE ;
	.IFT DIE ; These RSX11M system enhancements have not been tried on an
	.IFT DIE ; unmapped system.  Trying to use them is not encouraged.
	.IFT DIE ; the amount of core memory needed for efficient use of
	.IFT DIE ; multiuser protection, accounting enhancements etc., not
	.IFT DIE ; to mention the increased disk space required for task
	.IFT DIE ; storage, should cause some serious soul searching for
	.IFT DIE ; any prospective user of this package on an unmapped system.
	.IFT DIE ; While I believe the majority of programs(maybe all) will
	.IFT DIE ; work, no attempt will be made to support this package for
	.IFT DIE ; an ummapped V4.0 system. This build file now terminates.
	.IFT DIE ; You are on your own.
	.IFT DIE ; .GOTO EXIT
.IFF LDLG .GOTO SKIP0
.DISABLE QUIET
;
; It is assumed that the following SYSGEN options have been selected.
; The list may not be inclusive, please report problems.
;		1.  MULTIUSER PROTECTION
;		2.  ALTER PRIORITY DIRECTIVE
;		3.  SPAWN DIRECTIVE
;		4.  STOP BIT DIRECTIVES
;		5.  SEND /RECEIVE DIRECTIVES
;		6.  GET TASK DIRECTIVE
;		7.  EXIT WITH STATUS !!!
;		8.  ABORT AST
; 
; Multiuser protection is absolutely required, but minor code changes could
; be applied to circumvent the other requirements.  However, this release
; and this command file assume these executive options exist.
;
.SKIP0:
	.ASK ANS Does the system include the required executive directives
	.IFF ANS ;	
	.IFF ANS ; You are on your own, this build file requires 
	.IFF ANS ; the above options be be included in the system.
	.IFF ANS .GOTO EXIT
.TESTFILE LB:'<SYSUIC>'RSXMC.MAC
.IF <FILERR> NE 1 ; 
.IF <FILERR> NE 1 ; LB:'<SYSUIC>'RSXMC.MAC is missing.  EXITING
.ENABLE QUIET
.IFT DEBUG .DISABLE QUIET
.IFF DEBUG MAC NL:=LB:'<SYSUIC>'RSXMC/PA:1,SY:'<UIC>'CHECK
.IF <EXSTAT> NE 1 .DISABLE QUIET
.IF <EXSTAT> NE 1 ; You are either trying to build this package for a non V4.0
.IF <EXSTAT> NE 1 ; system, or you are missing required executive options,
.IF <EXSTAT> NE 1 ; or, you have an incomplete RSXMC.MAC on '<SYSUIC>'
.IF <EXSTAT> NE 1 ; EXITING.
.IF <EXSTAT> NE 1 .GOTO EXIT
.DISABLE QUIET
; 
; Transferring a valid '<SYSUIC>'RSXMC.MAC to LB:[200,200]
.DISABLE QUIET
SET /UIC=[200,200]
PIP /NV=LB:'<SYSUIC>'RSXMC.MAC
SET /UIC ='UIC'
	.IFF LDLG .GOTO SKIP1
.DISABLE QUIET
; The build files assume that the following files exist on  LB0:
;
;	[1,1]SYSLIB.OLB
;	[1,1]EXEC.MLB
;	[1,1]RSXMAC.MLB
; >>	[1,54]RSX11M.STB		FOR THE TARGET SYSTEM
;	[200,200]RSXMC.MAC		FOR THE TARGET SYSTEM
;
; All KMSKIT files should be on their distribution UICs.
; and the RSX11M source files on SY: on their distribution UICs
;
; Additionally the following tasks must be installed and this terminal 
; must be privileged.
;
;			PIP, MAC, TKB, LBR, SLP
;
; MACRO assembly times and taskbuild times can be dramatically improved
; by setting the maximum task extend size to 32K or installing ...MAC
; and ...TKB with large increments to bring them up to 32k in size.
;
; A further requirement is that the MCR source files for many tasks exist
; on [12,10] or [11,10] with the extension .VGN (rather than .MAC).
; This is a safety measure we use so that we never purge source files.
; The command procedures EXECSLP and MCRSLP will do this for you.
; Optionally ICPSLP will add some minor ICP enhancements.
.DELAY 1S
;
; Note that eventually you must decide whether on not to include the 
; ability for selective users to change their UIC within certain
; ranges (group manager, user manager privleges) and whether or  
; not to include support for 'LIBUIC'.  
;
; As a part of the change in the SET command is also the code required
; to implement SET /LIBUIC command.  If you have not inserted the SYSCM
; data base changes (R$$PRV not defined), LIBUIC will default to [1,54].
; LIBUIC (an RSX11M+ feature) is an alternate system UIC like 'SYSUIC'.
; It is convenient sometimes to have all one's privileged tasks which must be
; built each SYSGEN on one UIC and all the standard utilities on another.
; The SYSCM allows $LBUIC to be seperate from $SYUIC.
;
; ST1OV.SLP, ST2OV.SLP and SPSOV.SLP modify the set parser of  ...MCR to
; support SET /LIBUIC and SET /TIMEOUT.  INSFL.SLP modifies INStall so
; that the command 'RUN $TASK' first searches for the task on LB:[LIBUIC],
; LB:[SYSUIC] and then on LB:[NETUIC].
.DELAY 1S
;
; The build files will place tasks and objects on this UIC.
; The build files will delete previous task images, and object modules
; as they proceed.  Be sure your installed system tasks are not on this
; UIC!!  Standard DEC tasks must be built via SYSGEN or with DEC command 
; files.  KMSGEN will modify the SYSGEN procedure to allow a system to
; be generated with the KMS accounting enhancements.  It will also build non
; DEC tasks.
;
;
	.ASK ANS Are ALL required tasks installed, and files on their UICs
	.IFF ANS ;
	.IFF ANS ; The various programs can not now be built until either
	.IFF ANS ; the build files are altered or the proper files are 
	.IFF ANS ; placed on LB0: AND SY:.  We will now exit .
	.IFF ANS .GOTO EXIT


.SKIP1:.DISABLE QUIET
	;
	; Setting the system MAXEXT to 32K to speed up taskbuilding
	;
	.ENABLE QUIET
		.IFNINS PIP INS $PIP
		.IFNINS TKB INS $TKB
		.IFNINS MAC INS $MAC
.IFF DEBUG	.IFNINS LBR INS $LBR
.IFF DEBUG	SET /MAXEXT=32.K
.IFF DEBUG .DISABLE QUIET

 
	.; TEST FOR THE EXISTANCE OF REQUIRED FILES
	.SETF XIT
	.IFF DEBUG .TESTFILE SY:[1,24]MCR.OLB
	.IF <FILERR> NE 1 ; KMSGEN -- MCR.OLB is not on SY:[1,24]
	.IF <FILERR> NE 1 .SETT XIT
	.IFF DEBUG .TESTFILE LB:[1,54]RSX11M.STB
	.IF <FILERR> NE 1 ; KMSGEN -- RSX11M.STB is not on LB:[1,54]
	.IF <FILERR> NE 1 .SETT XIT
	.IFT XIT ;
	.IFT XIT ; You are missing a required file(s). We will now
	.IFT XIT ; exit.  You can start up when the files are in place.
	.IFT XIT .GOTO EXIT
 
.IFT DEBUG .GOTO NOCPY:
 
.NOCPY:	.ASK MUX Does your system have any terminal multiplexers
	.SETS SWTCH ""
	.IFT DEBUG .SETS SWTCH "/-MC"
	.IFF LDLG .GOTO SKIP2
 
;
; The KMS enhancement package includes the option for including a system 
; accounting package including CPU time, QIO  usage, global variables, memory
; usage, and a limited form of task accounting.  These features all require a 
; system generation to incorporate.  The user who has terminal multiplexers 
; must also perform a system gereration before incorporating this package.  
; A number of account file and run privilege allocation enhancements require 
; a privilege mask word to exist in each terminal"s UCB.
;  
; For those systems which only use DL11 terminal interfaces, the privilege
; mask word is U.CW3 in each terminal"s UCB. However, terminal multiplexers
; require the use of U.CW3.  Hence, the privlege mask word must be created in
; the UCB such that U.PRV1=U.LUIC-2.
;
; To simplify the process, EXECSLP.CMD will modify the  required SYSGEN 
; files to allow the appropriate questions to be asked during SYSGEN and to
; create the appropriate terminal data bases based on the answers.  A user
; with multiplexers must opt for including KMS run privilege enhancements.
; Selecting this option will reserve an additional word both for a user privi-
; lege mask word and for an account number in each terminal UCB. Next, 
; MCRSLP.CMD will modify the various DEC tasks (SET parser, HELLO, BYE, ACNT,
; etc) so that they support the new features in KMSKIT.  
;
;
;
;
.SKIP2:	;
	         ;  If you already have SLPed the EXEC and MCR sources answer
                 ;  NO to to next question.
                 ;  
	.ASK ANS SLP the EXEC and MCR sources and SYSGEN command files
	.IFT ANS ;
	.IFT ANS ;  We will now do EXECSLP.CMD, MCRSLP.CMD, and ICPSLP.CMD.
	.IFT ANS ;  When they exit, do a SYSGEN.
	.IFT ANS @EXECSLP'SWTCH'
	.IFT ANS @MCRSLP'SWTCH'
	.IFT ANS @ICPSLP'SWTCH'
	.IFT ANS ;
.IFF DEBUG .IFT ANS ; We now exit and let you do a SYSGEN.  Good Luck!
.IFT DEBUG .IFT ANS ; We will continue with KMSGEN in DEBUG mode.
.IFF DEBUG .IFT ANS .GOTO EXIT

;
; Answer the next question with a YES only if 1) the symbol R$$PRV has been 
; added to RSXMC.MAC, 2) the SYSCM data base changes has been implemented and
; 3) The UCB for each terminal has been modified(SGNTT.SLP).  These changes
; are required before answering YES to the next question.  If these changes
; have not been made but your system contains no terminal multiplexers, most
; tasks will assemble correctly and provide a limited subset of functionality.
; the symbol R$$PRV must not be added to RSXMC.MAC unless the other changes 
; have been made.
;
.ASK $SYSAC Have the KMS enhancements been selected at SYSGEN
.ENABLE QUIET
.IFF $SYSAC .GOTO NORNCK
.OPEN RPRVCHK.MAC;1
.ENABLE DATA
	.TITLE	RPRV
	.IDENT /1/
;+
; MODULE TO TEST IF RUN PRIVLEGES HAVE BEEN INCLUDED AS A SYSGEN OPTION
;-
	.IFNDF	R$$PRV
	.ERROR	; SORRY KMS RUN PRIVLEGES HAVE NOT BEEN INCLUDED AS A SYSGEN
	.ERROR	; OPTION.  IF YOU WANT THESE FEATURES, APPLY THE SLP FILES
	.ERROR	; TO THE SYSGEN COMMAND FILES AND THE EXEC SOURCE FILES,
	.ERROR	; DO A SYSGEN, AND COME BACK AND THEN USE KMSGEN.CMD.
	.ENDC
	.END
.DISABLE DATA
.CLOSE
.ENABLE QUIET
.IFT DEBUG .DISABLE QUIET
MAC NL:=LB:[200,200]RSXMC/PA:1,SY:'<UIC>'RPRVCHK
.NORNCK:.DISABLE QUIET
.IFT $SYSAC .IF <EXSTAT> NE 1 ; You speak with forked toung, try again or
.IFT $SYSAC .IF <EXSTAT> NE 1 ; ^Z to exit so you can add KMS RUn Privileges.
.IFT $SYSAC .IF <EXSTAT> NE 1 .GOTO SKIP3
.IFF DEBUG .ENABLE QUIET
.IFT $SYSAC PIP RPRVCHK.MAC;1/DE
.DISABLE QUIET
.IFF $SYSAC .IFT MUX ;
.IFF $SYSAC .IFT MUX ; FATAL ERROR. You must include this option at SYSGEN.
.IFF $SYSAC .IFT MUX ; .GOTO EXIT
.IFF $SYSAC .IFT LDLG ;
.IFT LDLG ;
.IFT LDLG ; Substantial core and disk block savings result if tasks doing I/O
.IFT LDLG ; are built using an FCS resident library.  Such tasks include
.IFT LDLG ; ACCLOG, WHO, RESET, HELLO, BYE, INS, SYSLOG, PDQ etc.
.IFT LDLG ; If you answer YES to the next question, any Fortran tasks will
.IFT LDLG ; be built with a F4P resident library. If you do not have one you
.IFT LDLG ; must stop and edit these command files or insert a F4P resident
.IFT LDLG ; library in your system. note, that some privileged tasks can
.IFT LDLG ; not be built with  FCSRES if you have 20K executive support.
.IFT LDLG ;
.ASK $RESLB Build all tasks (if possible) with an FCS/F4P resident library
.ASK $20KEX Do you have 20K executive support
.SETS FDT ""
.IFT LDLG ;
.IFT LDLG ; ACTFIL.MAC contains the new account file offsets.  Old offsets
.IFT LDLG ; are unchanged.  The new offsets are required for building
.IFT LDLG ; the programs correctly.  The new ACTFIL.MAC should have been
.IFT LDLG ; into MCR.OLB my MCRSLP.CMD.  
.IFT LDLG ;
;
.ASKS UTLUIC On what UIC are the KMS utility sources(<CR> = [344,43])
.ASKS BATUIC On what UIC are the BATCH sources(<CR> = [344,45])
.ASKS CCLUIC On what UIC are the CCL sources(<CR> = [344,61])
.ASKS SLGUIC On what UIC are the accounting system sources(<CR> = [344,65])
;
.IF UTLUIC EQ "" .SETS UTLUIC "[344,43]"
.IF BATUIC EQ "" .SETS BATUIC "[344,45]"
.IF CCLUIC EQ "" .SETS CCLUIC "[344,61]"
.IF SLGUIC EQ "" .SETS SLGUIC "[344,65]"
.IFT LDLG ;
.IFT LDLG ;
.IFT LDLG ; RSX11M V4.0 supports a catchall task ...CA.  CCL is such a task.
.IFT LDLG ; Try it! You will love it!
.IFT LDLG ;
.ASK C$CL Build CCL, the catchall task
.IFT LDLG ;
.IFT LDLG ; UPDATE only need be built if it is desired to do disk block 
.IFT LDLG ; accounting.
.IFT LDLG ;
.ASK U$PDAT Build UPDATE
.IFT LDLG ;
.IFT LDLG ; ACCLOG is a general report program to display the new information
.IFT LDLG ; in the account file.  The user may wish to edit the title line.
.IFT LDLG ;
.ASK A$CLOG Build ACCLOG
.IFT LDLG ;
.IFT LDLG ; PIN (procedure interpreter) is a task which is 4 times smaller
.IFT LDLG ; than ...AT. When built with FCSRES.  It is used to control the
.IFT LDLG ; compilations and taskbuilds the same way ...AT. does.  Pin spawns
.IFT LDLG ; commands to MCR, and has a limited number of internal commands
.IFT LDLG ; for controling output and exit status.  BATCH requires PIN in
.IFT LDLG ; order to work.
.IFT LDLG ;
.ASK P$IN Build the procedure interpreter, PIN
.IFT LDLG ;
.IFT LDLG ; PDQ is a multi-stream Program Development Queue.  One can submit
.IFT LDLG ; MCR commands to PDQ for execution.  When the program development
.IFT LDLG ; becomes free, the commands start executing at the issuing terminal
.IFT LDLG ; PDQ has replaced the use of BATCH at KMS.
.IFT LDLG ;
.SETF P$DQ
.ASK P$DQ Build the Multi-Stream Program Development Queue (PDQ) facility
.SETF S$CH
.IFT LDLG .IFT $SYSAC ;
.IFT LDLG .IFT $SYSAC ; SCH is a task which can dynamically alter the ROUND 
.IFT LDLG .IFT $SYSAC ; ROBIN and EXECUTIVE SWAP intervals.  This is sometimes
.IFT LDLG .IFT $SYSAC ; useful in improving throughput on a system which is
.IFT LDLG .IFT $SYSAC ; so heavily loaded, that swaping has become thrashing.
.IFT LDLG .IFT $SYSAC ;
.IFT $SYSAC .ASK S$CH Build SCH (display/change Round Robin/Swap times)
.IFT LDLG ;
.IFT LDLG ; RESET must always be built, if only to use in STARTUP.CMD
.IFT LDLG ; to reset any terminal LOGON FLAGS.
.IFT LDLG ;
.ASK R$SET Build RESET
.IFT LDLG ;
.IFT LDLG ; WHO is a convenience utility and not required.
.IFT LDLG ; WHO will display who is on the system and on which terminal.
.IFT LDLG ;
.ASK W$HO Build WHO
.IFT LDLG ;
.IFT LDLG ;
.IFT LDLG ; If one has a large number of users and terminals scattered around
.IFT LDLG ; then MAIL is a very convenient utility for leaving messages.
.IFT LDLG ; MAIL is supplied curtesy of Mark Johnson.
.IFT LDLG ;
.ASK M$AIL Build MAIL
.IFT LDLG ;
.SETF B$ATCH
	  ; 
; While a single streak BATCH exists which uses one virtual terminal,
; and this BATCH has worked under RSX11M V4.0, it is not currently being
; used at KMS (we use PDQ instead).  Consequently, BATCH is now unsupported.
;
.ASK B$ATCH Build the BATCH, BTQ, and SUBMIT utilities
.IFT B$ATCH .SETT P$IN
.IFF $SYSAC .SETF S$SLOG
.IFF $SYSAC .GOTO NOLOG
.IFT LDLG ;
.IFT LDLG ; SYSLOG/ACC/TASKLOG are the tasks required to implement
.IFT LDLG ; System Accounting for RSX11M V4.0.  These tasks require
.IFT LDLG ; the existance of the previously mentioned exec changes.
.IFT LDLG ;
.ASK S$SLOG Build the system accounting tasks
.IFF S$SLOG .GOTO NOLOG
.IFT S$SLOG .ASK CLK Do you have a programable clock(vector=104)
.IFT CLK .SETS $VEC "104"
.IFF CLK .SETS $VEC "100"
.IFF CLK .IFT S$SLOG ;>> SYSLOG will be built for a line clock(vector=100)
.SETN $TICS 0
.IFT S$SLOG .IFT CLK .ASKN [100:1000] $TICS How many tics/sec for your clock
.IF $TICS > 100 ; WARNING -- CPU time accounting at > 100 tics/sec will have
.IF $TICS > 100 ; a lot of overhead.
;
.IFT LDLG ;
.IFT LDLG ; TCF is the program sending control character strings to terminals
.IFT LDLG ;
.ASK T$CF Build TCF
.IFT LDLG ;
.IFT LDLG ; RMC will force MCR command lines onto remote terminals using the
.IFT LDLG ; SPAWN Directive.  Good example of how to use the SPAWN Directive
.IFT LDLG ; from F4P.
.IFT LDLG ;
.ASK R$MC Build RMC
.IFT LDLG ; 
.IFT LDLG ; CKP is a task which can be scheduled to run every so often.
.IFT LDLG ; Each time it runs, it checkpoints deadwood out of GEN.  It is
.IFT LDLG ; used by LDLIB to checkpoint tasks from GEN prior to attempting
.IFT LDLG ; load a dynamic (transient) resident library.
.IFT LDLG ;
.ASK C$KP Build CKP (the checkpointer)
.IFT LDLG ; 
.IFT LDLG ; CVL displays and changes a disk volume lable on a mounted volume.
.IFT LDLG ; HOM will do the same functions and more on a dismounted disk.
.IFT LDLG ;
.ASK C$VL Build CVL
.IFT LDLG ;
.IFT LDLG ; GREP is a task to search for strings within ASCII files.  Here is
.IFT LDLG ; another version with more enhancements than the last.
.IFT LDLG ;
.IFT LDLG ;
.ASK G$REP Build GREP
.IFT LDLG ;
.IFT LDLG ; LIST is a small utility for listing ASCII source files.  IT
.IFT LDLG ; does the same thing as PIP TI:=filespec  except it uses less core.
.IFT LDLG ;
.ASK L$IST Build LIST
.DISABLE QUIET
.IFT U$PDAT ;
.IFT U$PDAT ; Build update  @UPDATE
.IFF TRC .ENABLE QUIET
.IFT U$PDAT @UPDATE'SWTCH'
.DISABLE QUIET
.IFT A$CLOG ;
.IFT A$CLOG ; @ACCLOG
.IFF TRC .ENABLE QUIET
.IFT A$CLOG @ACCLOG'SWTCH'
.DISABLE QUIET
.IFT R$SET ;
.IFT R$SET ; BUILD RESET  @RESET
.IFF TRC .ENABLE QUIET
.IFT R$SET @RESET'SWTCH'
.DISABLE QUIET
.IFT W$HO ;
.IFT W$HO ; BUILD WHO  @WHO
.IFF TRC .ENABLE QUIET
.IFT W$HO @WHO'SWTCH'
.DISABLE QUIET
.IFT M$AIL ;
.IFT M$AIL ; BUILD MAIL AND MAITSK
.IFF TRC .ENABLE QUIET
.IFF DEBUG .IFT M$AIL .IFT $RESLB TKB @MAILFCS
.IFF DEBUG .IFT M$AIL .IFF $RESLB TKB @MAIL
.IFT M$AIL @MAITSK'SWTCH'
.IFF C$CL .GOTO GTUIC1
.GTUIC0: SET /UIC='CCLUIC'
.IF <EXSTAT> EQ 1 .GOTO HVUIC0
.ASKS CCLUIC On what UIC are the CCL sources (no defaults)
.GOTO GTUIC0
.HVUIC0:.DISABLE QUIET
;
; BUILD CCL  @CCL
.IFF TRC .ENABLE QUIET
 @CCL'SWTCH'
.GTUIC1:SET /UIC='UTLUIC'
.IF <EXSTAT> EQ 1 .GOTO HVUIC1
.ASKS UTLUIC On what UIC are the misc. utilities (no defaults)
.GOTO GTUIC1
.HVUIC1:.DISABLE QUIET
.IFT T$CF ;
.IFT T$CF ; BUILD TCF   @TCF
.IFF TRC .ENABLE QUIET
.IFT T$CF @TCF'SWTCH'
.DISABLE QUIET
.IFT R$MC ;
.IFT R$MC ; BUILD RMC  @RMC
.IFF TRC .ENABLE QUIET
.IFT R$MC @RMC'SWTCH'
.IFT C$VL ;
.IFT C$VL ; BUILD CVL  @CVL
.IFF TRC .ENABLE QUIET
.IFT C$VL @CVL'SWTCH'
.IFT C$KP ;
.IFT C$KP ; Build CKP  @CKP
.IFF TRC .ENABLE QUIET
.IFT C$KP @CKP'SWTCH'
.IFT G$REP ;
.IFT G$REP ; Build GREP  @GREP
.iff TRC .ENABLE QUIET
.IFT G$REP @GREP'SWTCH'
.IFT L$IST ;
.IFT L$IST ; Build LIST  @LIST
.iff TRC .ENABLE QUIET
.IFT L$IST @LIST'SWTCH'
.;
.GTUIC2:SET /UIC='BATUIC'
.IF <EXSTAT> EQ 1 .GOTO HVUIC2
.ASKS BATUIC On what UIC are the BATCH sources (no defaults)
.GOTO GTUIC2
.HVUIC2:.DISABLE QUIET
.IFT B$ATCH ; 
.IFT B$ATCH ; BUILD BATCH, BTQ, SUBMIT, and VTDRV
.IFF TRC .ENABLE QUIET
.IFT B$ATCH @BATCHBLD'SWTCH'
.IFT B$ATCH @BTQ'SWTCH'
.IFT B$ATCH @SUBMIT'SWTCH'
.IFT B$ATCH @VTDRVBLD'SWTCH'
.IFT P$IN @PIN'SWTCH'
.IFT P$DQ @PDQ'SWTCH'
.GTUIC3:SET /UIC='SLGUIC'
.IF <EXSTAT> EQ 1 .GOTO HVUIC3
.ASKS SLGUIC On what UIC are the system accounting sources (no defaults)
.GOTO .GTUIC3
.HVUIC3:.DISABLE QUIET
.IFT S$CH ;
.IFT S$CH ; BUILD SCH  @SCH
.IFF TRC .ENABLE QUIET
.IFT S$CH @SCH
.DISABLE QUIET
.IFT S$SLOG ;
.IFT S$SLOG ; Build system accounting tasks
.IFF TRC .ENABLE QUIET
.IFT S$SLOG .IFT $SYSAC @SYSLOG'SWTCH'
.IFT S$SLOG .IFT $SYSAC @ACC'SWTCH'
.IFT S$SLOG .IFT $SYSAC @TASKLOG'SWTCH'
.IFT TRC .DISABLE QUIET
SET /UIC='OURUIC'
.EEXIT:;
.EXIT:;
.DISABLE QUIET
;
; Your System now has a MAXEXT = 32K.  Please reset it if you so desire.
;
; KMSGEN is now complete.
;
