Guardian Programmer's Guide

Table Of Contents
Formatting and Manipulating Character Data
Guardian Programmer’s Guide 421922-014
19 - 61
Sample Program
!------------------------------------------------------------
! Procedure prompts the user for a command and then processes
! the command. This procedure loops indefinitely until the
! user types the EXIT command.
!------------------------------------------------------------
PROC COMMAND^INTERPRETER;
BEGIN
STRING .LAST^COMMAND[0:7]; !buffer for last command
INT NUM; !number of bytes
! transferred
INT SAVE^NUM; !previous number of bytes
! transferred
STRING .COMMAND[-2:7] := "< "; !command buffer
STRING .BUFFER[0:71]; !I/O buffer
STRING .S^PTR; !string pointer
INT REPEAT := 0; !when 0, prompt for new
! command; when 1,
! execute repaired command
! Loop until user types "EXIT":
WHILE 1 DO
BEGIN
! If repeat not set, prompt user for a new command:
IF NOT REPEAT THEN
BEGIN
COMMAND[0] := " ";
COMMAND[1] ':=' COMMAND[0] FOR 7;
COMMAND ':=' "< ";
CALL WRITEREADX(TERM^NUM,COMMAND,2,9,NUM);
IF <> THEN CALL PROCESS_STOP_(!process^handle!,
!specifier!,
ABEND);
END;
! Trim multibyte fragments from end of string:
CALL MBCS_TRIMFRAGMENT_(@COMMAND,NUM);
! Replace multibyte blanks with two ASCII blank
! characters:
CALL MBCS_REPLACEBLANK_(@COMMAND,NUM);