ERT

Syntax ERT function
Location HOTKEY II

Normally, whenever you use a function (or anything else which may return an error code), you will need to assign the result of the function (or whatever else) to a variable and then test that variable in order to see whether or not an error has been generated.

If an error has been generated, you will then need to report the error (if you do not intend to take any action to try and rectify the situation), something which can take a lot of program space, if you intend to write a program which does not require the command REPort to be present.

The command ERT was introduced in the Hotkey System II to enable you to write programs which test the result for an error code and report the error all in one step.

Example 1

A simple program which provides its own error trapping:

100 PAPER 0:INK 7
110 REPeat loop
120 CLS
130 AT 0,0:PRINT 'Enter an integer (0 to 300): ';
140 xerr=GET_INT
150 IF xerr<0:PRINT 'Error - try again':ELSE x=xerr:EXIT loop
160 PAUSE
170 END REPeat loop
180 PRINT 'The integer was : ';x
185 :
190 DEFine FuNction GET_INT
200   valid$='0123456789'
210   INPUT a$:IF a$='':RETurn -1
220   FOR i=1 TO LEN(a$):IF a$(i) INSTR valid$=0:RETurn -17
230   IF a$>300:RETurn -4
240   RETurn a$
250 END DEFine

Example 2

A similar program which is designed to stop on an error:

100 PAPER 0:INK 7
110 CLS
120 AT 0,0:PRINT 'Enter an integer (0 to 300): ';
130 xerr=GET_INT
140 IF xerr<0:REPORT xerr:STOP:ELSE x=xerr
150 PRINT 'The integer was : ';x
155 :
160 DEFine FuNction GET_INT
170   valid$='0123456789'
180   INPUT a$:IF a$='':RETurn -1
190   FOR i=1 TO LEN(a$):IF a$(i) INSTR valid$=0:RETurn -17
200   IF a$>300:RETurn -4
210   RETurn a$
220 END DEFine

Example 3

The same program as in the second example, but using ERT:

100 PAPER 0:INK 7
110 CLS
120 AT 0,0:PRINT 'Enter an integer (0 to 300): ';
130 ERT GET_INT
140 PRINT 'The integer was : ';x
150 DEFine FuNction GET_INT
160   valid$='0123456789'
170   INPUT a$:IF a$='':RETurn -1
180   FOR i=1 TO LEN(a$):IF a$(i) INSTR valid$=0:RETurn -17
190   IF a$>300:RETurn -4
200   x=a$
210   RETurn x
220 END DEFine

NOTE

When you are using ERT, always beware of what you are testing for an error, for example, if you had altered line 130 in the second example to:

130 ERT x=GET_INT

you would not actually be testing to see whether the function GET_INT returned an error, but whether the line x=GET_INT produced an error - x itself would not be altered, hence the need to assign the result to x inside the function.

CROSS-REFERENCE

REPORT will report an error without stopping the program.