Guardian Programmer's Guide

Table Of Contents
Communicating With Disk Files
Guardian Programmer’s Guide 421922-014
5 - 41
Entry-Sequenced File Programming Example
!------------------------------------------------------------
! Procedure for reading records. The user selected function
! "r." The start of the read is selected randomly by record
! number. The user has the option of sequentially reading
! subsequent messages.
!------------------------------------------------------------
PROC READ^RECORD;
BEGIN
INT COUNT^READ;
INT(32) RECORD^NUM;
STRING .EXT NEXT^ADR;
INT STATUS;
INT ERROR;
! Prompt the user to select a record:
PROMPT^AGAIN:
PRINT^BLANK;
SBUFFER ':=' "Enter Record Address: " -> @S^PTR;
CALL WRITEREADX(TERMNUM,SBUFFER,@S^PTR '-' @SBUFFER,
BUFSIZE,COUNT^READ);
IF <> THEN CALL FILE^ERRORS(TERMNUM);
SBUFFER[COUNT^READ] := 0;
! Convert ASCII to numeric:
@NEXT^ADR := DNUMIN(SBUFFER,RECORD^NUM,10,STATUS);
IF STATUS OR @NEXT^ADR <> $XADR(SBUFFER[COUNT^READ]) THEN
BEGIN
PRINT^STR("Error in the record number");
GOTO PROMPT^AGAIN;
END;
! Position current-record and next-record pointers to
! selected record:
CALL POSITION(LOGNUM,RECORD^NUM);
IF <> THEN CALL FILE^ERRORS(LOGNUM);