Guardian Programmer's Guide

Table Of Contents
Communicating With Disk Files
Guardian Programmer’s Guide 421922-014
5 - 53
Key-Sequenced File Programming Example
the part number, which is already known. The parameter to the procedure
specifies whether an update or a new record is required.
The code for this program appears on the following pages.
?INSPECT,SYMBOLS,NOMAP,NOCODE
?NOLIST,SOURCE $SYSTEM.ZSYSDEFS.ZSYSTAL
?LIST
LITERAL MAXFLEN = ZSYS^VAL^LEN^FILENAME; !maximum file-name
! length
LITERAL OLD = 0; !updating in ENTER^REC
LITERAL NEW = 1; !new record in ENTER^REC
LITERAL BUFSIZE = 132; !size of terminal buffer
LITERAL PARTSIZE= 6; !size of part number
LITERAL DESCSIZE= 60; !size of part description
LITERAL SUPPSIZE= 60; !size of supplier name
STRING .SBUFFER[0:BUFSIZE]; !I/O buffer (one extra
! char)
STRING .S^PTR; !pointer to end of string
INT PARTFILE^NUM; !part file number
INT TERMNUM; !terminal file number
STRUCT .PART^RECORD;
BEGIN
STRING PART^NUMBER[0:PARTSIZE-1];
STRING DESCRIPTION[0:DESCSIZE-1];
INT DESC^LEN;
STRING SUPPLIER[0:SUPPSIZE-1];
INT SUP^LEN;
INT ON^HAND;
INT UNIT^PRICE;
END;
?NOLIST, SOURCE $SYSTEM.SYSTEM.EXTDECS0 (INITIALIZER,
? PROCESS_GETINFO_,FILE_OPEN_,WRITEREADX,WRITEX,NUMIN,
? KEYPOSITION,PROCESS_STOP_,READX,DNUMOUT,FILE_GETINFO_,
? READUPDATEX,WRITEUPDATEX,DNUMIN,READUPDATELOCKX,
? WRITEUPDATEUNLOCKX,FILE_GETINFOLIST_,UNLOCKREC)
?LIST