3. Errors Suppose you ignored the instructions of the previous section and typed a non-integer such as 3.4 as input to the program. Then you would get an error, because the ** (to-power) operator is only designed to work when the second parameter (that is, the power number) is an integer. You might see this, for example: I rexx arith I 3.4 I 6 +++ e=2**(a-1) I Error 26 running arith.rexx, line 6: Invalid whole number O arith O 3.4 O 6 +++ e = 2 ** ( a - 1 ); O REX0026: Error 26 running D:\ARITH.CMD, line 6: Invalid whole number Or if you typed zero, you might see the following (because you cannot divide by zero): I rexx arith I 0 I 4 +++ c=1/a I Error 42 running arith.rexx, line 4: Arithmetic overflow or underflow O arith O 0 O 4 +++ c = 1 / a; O REX0042: Error 42 running D:\ARITH.CMD, line 4: Arithmetic O overflow/underflow Perhaps most interestingly, if you type a sequence of characters which is not a number, you might see this. It does not complain about the characters you entered, but at the fact that the program tries to use it as a number. I rexx arith I hello I 3 +++ b=a*a I Error 41 running arith.rexx, line 3: Bad arithmetic conversion O arith O hello O 3 +++ b = a * a; O REX0041: Error 41 running D:\ARITH.CMD, line 3: Bad arithmetic conversion In each case, you have generated a "syntax error" (it is classified as a syntax error, even though the problem was not directly related to the program's syntax). What you see is a "traceback" starting with the line which caused the error (no other lines are listed in this traceback, because we have not yet considered any Rexx control structures), and a description of the error. This information should help you to determine where the error occurred and what caused it. More difficult errors can be traced with the "trace" instruction (see later).