Guardian Programmer's Guide

Table Of Contents
Communicating With Magnetic Tape
Guardian Programmer’s Guide 421922-014
12 - 61
Writing the Program
! Execute loop if reading just selected, or user
! has requested to read an additional record.
! Exit loop if user declines to read next record:
DO BEGIN
PRINT^BLANK;
! Read a record block from the tape file:
CALL READX(TAPENUM,TBUFFER,TBUFSIZE,COUNT^READ);
IF <> THEN
BEGIN
CALL FILE_GETINFO_(TAPENUM,ERROR);
IF ERROR = 1 THEN
BEGIN
PRINT^STR("No such record. ");
RETURN;
END
ELSE CALL FILE^ERRORS(TAPENUM);
END;
DO BEGIN
! Extract the record:
CASE INDEX OF
BEGIN
0 -> LOG^RECORD[0] ':=' LREC0[0] FOR 256;
1 -> LOG^RECORD[0] ':=' LREC1[0] FOR 256;
2 -> LOG^RECORD[0] ':=' LREC2[0] FOR 256;
3 -> LOG^RECORD[0] ':=' LREC3[0] FOR 256;
OTHERWISE -> CALL PROCESS_STOP_(!process^handle!,
!specifier!,
ABEND);
END;
! Check for incomplete record block. If this record
! is blank, set INDEX to 4 in preparation for reading
! the next record block:
IF LOG^RECORD.DATE = " " THEN
BEGIN
INDEX := 4;
SBUFFER[0] ':=' "Y";
END
ELSE
! Process the log record:
BEGIN
! Display date from the record:
CALL WRITEX(TERMNUM,LOG^RECORD.DATE,8);