Guardian Programmer's Guide

Table Of Contents
Communicating With Terminals
Guardian Programmer’s Guide 421922-014
10 - 40
Recovering From Errors: A Sample Program
!---------------------------------------------------------------
! Procedure to perform terminal I/O
!---------------------------------------------------------------
PROC TERM^IO;
BEGIN
INT WCOUNT;
INT COUNT^READ;
INT DONE := NO;
INT RETRY^COUNT;
INT ERROR;
! Loop until file operation successful:
WHILE DONE = NO DO
BEGIN
! Set flag for success, initialize retry count, and prompt
! for input:
DONE := YES;
RETRY^COUNT := 0;
SBUFFER ':=' "APPL1>" -> @S^PTR;
WCOUNT := @S^PTR '-' @SBUFFER;
CALL WRITEREADX(TERM^NUM,SBUFFER,WCOUNT,RCOUNT,
COUNT^READ);
IF <> THEN
BEGIN
CALL FILE_GETINFO_(TERM^NUM,ERROR);
IF ERROR = 112
OR ERROR = 200
OR ERROR = 230
OR ERROR = 231
OR ERROR = 240
OR ERROR = 241
OR ERROR = 246
OR ERROR = 248
OR ERROR = 249
THEN
! Retry until successful:
BEGIN
SBUFFER ':=' "Terminal I/O error: trying again"
-> @S^PTR;
WCOUNT := @S^PTR '-' @SBUFFER;
CALL WRITEX(TERM^NUM,SBUFFER,WCOUNT);
CALL DELAY(100D);
DONE := NO;
END
ELSE