Guardian Programmer's Guide

Table Of Contents
Communicating With Disk Files
Guardian Programmer’s Guide 421922-014
5 - 58
Key-Sequenced File Programming Example
!------------------------------------------------------------
! Procedure to prompt user for input to build a new record or
! update an existing record. When updating, an empty
! response (COUNT^READ=0) means to leave the existing value
! unchanged.
!------------------------------------------------------------
PROC ENTER^RECORD(TYPE);
INT TYPE;
BEGIN
INT COUNT^READ;
INT STATUS;
STRING .NEXT^ADDR;
DEFINE BLANK^FILL(F) =
F ':=' " " & F FOR $LEN(F)*$OCCURS(F)-1 BYTES #;
PRINT^BLANK;
! If inserting a new record, prompt for a part number.
! If updating an existing record, record number is already
! known:
IF TYPE = NEW THEN
BEGIN
SBUFFER ':=' "Enter Part Number: " -> @S^PTR;
CALL WRITEREADX(TERMNUM,SBUFFER,@S^PTR '-' @SBUFFER,
BUFSIZE,COUNT^READ);
IF <> THEN CALL FILE^ERRORS(TERMNUM);
BLANK^FILL(PART^RECORD.PART^NUMBER);
PART^RECORD.PART^NUMBER ':='
SBUFFER FOR $MIN(COUNT^READ,PARTSIZE);
END;
! Prompt for a part description:
SBUFFER ':=' "Enter Part Description: " -> @S^PTR;
CALL WRITEREADX(TERMNUM,SBUFFER,@S^PTR '-' @SBUFFER,
BUFSIZE,COUNT^READ);
IF <> THEN CALL FILE^ERRORS(TERMNUM);
IF TYPE = NEW OR COUNT^READ > 0 THEN
BEGIN
COUNT^READ := $MIN(COUNT^READ,DESCSIZE);
BLANK^FILL(PART^RECORD.DESCRIPTION);
PART^RECORD.DESCRIPTION ':=' SBUFFER FOR COUNT^READ;
PART^RECORD.DESC^LEN := COUNT^READ;
END;