Guardian Programmer's Guide

Table Of Contents
Writing a Command-Interpreter Monitor ($CMON)
Guardian Programmer’s Guide 421922-014
23 - 80
Sample Command-Interface Program
!------------------------------------------------------------
! Procedure to generate a CPU^changestatus^message. This
! procedure prompts the operator for a processor number and then
! for a status (priority or nonpriority) to assign to that
! processor. Finally, this procedure sends the
! CPU^changestatus^message to $CMON.
!------------------------------------------------------------
PROC CHANGE^CPU^STATUS;
BEGIN
STRING .EXT NEXT^ADR;
INT STATUS;
INT BYTES^READ;
INT(32) NUMBER;
STRUCT .CPU^CHANGESTATUS^MESSAGE; !structure to send to
BEGIN ! $CMON
INT MSGCODE;
INT PROCESSOR;
INT STATUS;
END;
! Set the message code for changing processor status:
CPU^CHANGESTATUS^MESSAGE.MSGCODE := 63;
! Obtain a valid processor number from the operator:
DO
BEGIN
PROMPT^AGAIN:
SBUFFER ':=' "Enter valid processor number: " -> @S^PTR;
CALL WRITEREADX(TERMNUM,SBUFFER,@S^PTR '-' @SBUFFER,
BUFSIZE,BYTES^READ);
IF <> THEN CALL FILE^ERRORS(TERMNUM);
SBUFFER[BYTES^READ] := 0;
@NEXT^ADR := DNUMIN(SBUFFER,NUMBER,10,STATUS);
END
UNTIL STATUS = 0 AND $INT(NUMBER) >= 0
AND $INT(NUMBER) <= TOP^CPU^NUMBER
AND @NEXT^ADR = $XADR(SBUFFER[BYTES^READ]);
! Set the processor number in the message structure:
CPU^CHANGESTATUS^MESSAGE.PROCESSOR := $INT(NUMBER);