Guardian Programmer's Guide

Table Of Contents
Writing a Command-Interpreter Monitor ($CMON)
Guardian Programmer’s Guide 421922-014
23 - 72
Sample Command-Interface Program
?INSPECT, SYMBOLS, NOCODE, NOMAP
?NOLIST, SOURCE $SYSTEM.ZSYSDEFS.ZSYSTAL
?LIST
!Literals:
LITERAL TOP^CPU^NUMBER = 5; !highest CPU number on system
LITERAL BUFSIZE = 512; !size in bytes of I/O buffer
LITERAL MAXFLEN =
ZSYS^VAL^LEN^FILENAME; !maximum file-name length
LITERAL ABEND = 1;
!Global variables:
STRING .SBUFFER[0:BUFSIZE]; !I/O buffer
INT TERMNUM; !terminal file number
INT CMONNUM; !$CMON file number
STRING .S^PTR; !points to end of I/O buffer
STRUCT .CI^STARTUP; !Startup message
BEGIN
INT MSGCODE;
STRUCT DEFAULT;
BEGIN
INT VOLUME[0:3];
INT SUBVOL[0:3];
END;
STRUCT INFILE;
BEGIN
INT VOLUME[0:3];
INT SUBVOL[0:3];
INT FILENAME[0:3];
END;
STRUCT OUTFILE;
BEGIN
INT VOLUME[0:3];
INT SUBVOL[0:3];
INT FILENAME[0:3];
END;
STRING PARAM[0:529];
END;
INT MESSAGE^LEN;
?NOLIST, SOURCE $SYSTEM.SYSTEM.EXTDECS0(INITIALIZER,
? FILE_OPEN_,WRITEX,FILE_GETINFO_,PROCESS_CREATE_,
? PROCESS_GETPAIRINFO_,DNUMOUT,DNUMIN,WRITEREADX,
? PROCESS_STOP_,FILE_CLOSE_,OLDFILENAME_TO_FILENAME_)
?LIST