Guardian Programmer's Guide

Table Of Contents
Formatting and Manipulating Character Data
Guardian Programmer’s Guide 421922-014
19 - 43
Editing a Character String
! Loop until user responds to FC prompt with a carriage
! return only:
UNTIL NOT TEMPLATE^LENGTH;
! Return to command interpreter to execute edited command:
RETURN 1;
END;
!------------------------------------------------------------
! 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 fixed 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;
! Upshift the command in case user typed lowercase:
CALL SHIFTSTRING(COMMAND,NUM,0);