Guardian Programmer's Guide

Table Of Contents
Formatting and Manipulating Character Data
Guardian Programmer’s Guide 421922-014
19 - 32
List-Directed Formatting
! Repeat formatting loop if erroneous input:
PROMPT^AGAIN:
! Blank the buffers:
I := 0;
WHILE I < NUM^BUFFERS DO
BEGIN
BUFFERS[I] ':=' [40 * [" "]];
I := I + 1;
END;
! Prompt for input and copy into buffers:
SBUFFER ':=' "Enter 'month' date year: "
-> @S^PTR;
CALL WRITEREADX(TERM^NUM,SBUFFER,@S^PTR '-' @SBUFFER,
BUFSIZE,BYTES^READ);
IF <> THEN CALL PROCESS_STOP_;
BUFFERS[0] ':=' SBUFFER FOR BYTES^READ BYTES;
SBUFFER ':=' "Enter 'name' (up to 20 characters): "
-> @S^PTR;
CALL WRITEREADX(TERM^NUM,SBUFFER,@S^PTR '-' @SBUFFER,
BUFSIZE,BYTES^READ);
IF <> THEN CALL PROCESS_STOP_;
BUFFERS[1] ':=' SBUFFER FOR BYTES^READ BYTES;
! Format the data:
ERROR := FORMATDATA(BUFFERS, !an array of input
! buffers
BUFFER^LENGTH, !length of one input
! buffer
NUM^BUFFERS, !number of input
! buffers
BUFFER^ELEMENTS,!unused
WFORMAT, !internal format
! definition (= 0)
VLIST, !array of data
! descriptors
VLIST^LEN, !number of data
! descriptors
FLAGS); !flags for
! procedure