Result Handling in ALGOL

The following is an example of how an ALGOL program could detect errors by using the result returned by CRCR and STOQ functions.

EBCDIC ARRAY CRCR_PGM_NAME [0:255];
INTEGER CRCR_PGM_NAME_LEN;
EBCDIC ARRAY CRCR_DATA     [0:19999];
REAL          CRCR_FLAGS, RESULT_STATUS;

LIBRARY EVASUPPORT (LIBACCESS    =  BYFUNCTION,
                     FUNCTIONNAME = “EVASUPPORT.”);
     REAL PROCEDURE CRCR_RECV (CRCR_PGM_NAME,
                                    CRCR_PGM_NAME_LEN,
                                    CRCR_DATA,
                                    CRCR_FLAGS);
        EBCDIC  ARRAY CRCR_PGM_NAME [*];
        INTEGER  CRCR_PGM_NAME_LEN;
        EBCDIC  ARRAY CRCR_DATA     [0];
        REAL          CRCR_FLAGS;
        LIBRARY  EVASUPPORT;

REPLACE CRCR_DATA[0] BY “DATA MESSAGE”;
REPLACE CRCR_PGM_NAME[0] BY “(USER)PROGRAM/NAME”;
CRCR_PGM_NAME_LEN:= 18;
CRCR_FLAGS:= 0;   % WAIT FOR HOOKUP

IF BOOLEAN(RESULT_STATUS:=
     CRCR_RECV(CRCR_PGM_NAME, CRCR_PGM_NAME_LEN,
                CRCR_DATA, CRCR_FLAGS))
           THEN
     IF BOOLEAN(RESULT_STATUS.[10:1]) THEN
           DISPLAY(“CRCR ERROR”)
                ELSE
           DISPLAY(“STOQ ERROR”);

Because fatal errors cause the program to be terminated, the program does not need to check whether the error returned is fatal or nonfatal.