Guardian Programmer's Guide

Table Of Contents
Writing a Command-Interpreter Monitor ($CMON)
Guardian Programmer’s Guide 421922-014
23 - 44
Sample $CMON Program
!------------------------------------------------------------
! Procedure to process the Prelogon^msg message. This
! request is accepted in all cases, except during the period
! before shutdown.
!------------------------------------------------------------
PROC PROCESS^PRELOGON^MSG;
BEGIN
STRUCT MSG(*); !template for PROCESS^PRELOGON
BEGIN ! message
INT MSGCODE;
INT USERID;
INT CIPRI;
INT CIINFILE[0:11];
INT CIOUTFILE[0:11];
INT LOGGEDON;
INT USERNAME[0:7];
END;
INT .EXT PRELOGON^MSG(MSG) := $XADR(BUFFER); !structure
! pointer to I/O buffer
STRUCT .PRELOGON^REPLY; !structure for reply
BEGIN
INT REPLYCODE;
STRING REPLYTEXT[0:63];
END;
! Clear text buffer for reply:
PRELOGON^REPLY.REPLYTEXT[0] ':=' " ";
PRELOGON^REPLY.REPLYTEXT[1] ':='
PRELOGON^REPLY.REPLYTEXT[0] FOR 63;
! Determine group ID of requester:
REQUESTING^GROUPID := PRELOGON^MSG.USERID.<0:7>;
! If shutting the system down, allow only operator group
! requests:
IF REFUSE^ALL AND (REQUESTING^GROUPID <> 255) THEN
BEGIN
PRELOGON^REPLY.REPLYCODE := 1;
PRELOGON^REPLY.REPLYTEXT ':=' SHUTDOWN^TEXT FOR 64;
END
! Otherwise accept the request:
ELSE PRELOGON^REPLY.REPLYCODE := 0;
! Reply to TACL process:
CALL REPLYX(PRELOGON^REPLY,$LEN(PRELOGON^REPLY));
END;