***************************************************************************
**************************************************************************
*
*
	PROGRAM BOOST
*
*	PURPOSE: TO ALLOW A USER-DEFINED IMAGE TO EXECUTE AT HIGHER
*	PRIORITY.  PRIORITY LEVEL WOULD BE SPECIFIED BY THE USER.
*
*	USAGE:  IN USER PROCESS NAME TABLE DEFINE
*	        $BOOST :==$SYS$SYSDISK[SYSMGR]BOOST.EXE
*		
*		ON DCL COMMAND LINE, ENTERED BY USER
*		$BOOST <PRIORITY>,<IMAGE NAME>
*
*		BOOST WILL RESPOND
*		BOOST>ENTER PASSWORD
*		<PASSWORD>
*		BOOST>STARTING <IMAGE NAME>
*		BOOST>EXIT
*
*		ELSE BOOST WILL ERROR OUT
*
*	PARAMETERS:
*		PARAMETER 1 = PRIORITY LEVEL, MUST BE A VALUE
*		GREATER THAN OR EQUAL TO 1 AND LESS THAN OR
*		EQUAL TO 6
*
*		PARAMETER 2 = IMAGE NAME
*
*	PASSWORD: AN ALPHANUMERIC VALUE DEFINED BY THE BOOST
*		PROGRAM AND MUST BE ENTERED BY THE USER AND
*		VERIFIED BY BOOST
*
*	MODULES CALLED BY BOOST:
*		PARSE		PARSES COMMAND LINE
*		PASSWORD	VERIFIES PASSWORD
*		MARK		MARKS USAGE ON USAGE FILE
*		SPAWN		SPAWNS SUBPROCESS TO RUN IMAGE
*		FINISH		EXITS WITH GOOD OR BAD STATUS
*
*************************************************************************
*************************************************************************
*
	IMPLICIT INTEGER (A-Z)
	CHARACTER*130 LINE
	EXTERNAL SS$_NORMAL
	INTEGER*4 PARM1
	CHARACTER*120  PARM2
	LOGICAL ERROR
	LOGICAL EXE_FLAG
*
	COMMON PIDADR
	COMMON EXITMSG
	COMMON IOSTATUS
	INTEGER*2 IOSTATUS(4)
	INTEGER*2 EXITMSG(100)

*
	MAX = 130
*
*
*	GET BOOST ACTIVATION LINE
*
	STAT=LIB$GET_FOREIGN(%DESCR(LINE),'<PRIORITY>,<IMAGE NAME>',OUTLEN)
	IF(STAT.NE.%LOC(SS$_NORMAL)) THEN
		CALL LIB$SIGNAL(%VAL(STAT))
	ENDIF
*
	IF(OUTLEN.EQ.MAX) OUTLEN=OUTLEN-1	
*
	CALL PARSE(LINE,OUTLEN,PARM1,PARM2,PARMLEN,ERROR,EXE_FLAG)
	IF(ERROR) GO TO 901
*
	CALL PASSWORD(ERROR)
*
	CALL MARK(PARM1,PARM2,PARMLEN,ERROR)
	IF(ERROR) GO TO 901
*
	CALL SPAWN(PARM1,PARM2,PARMLEN,EXE_FLAG)
*
 901	CONTINUE
	STOP
	END
 	
