Handling errors in arithmetic operations
The results of arithmetic operations
might be larger than the fixed-point field that is to hold them, or
you might have tried dividing by zero.
In either case, the ON SIZE ERROR
clause
after the ADD
, SUBTRACT
,
MULTIPLY
, DIVIDE
,
or COMPUTE
statement can handle the situation.
For ON SIZE ERROR
to work correctly
for fixed-point overflow
and decimal overflow, you must specify the
TRAP(ON)
runtime option.
The imperative statement of the ON SIZE ERROR
clause will be performed and the result
field will not change in these cases:
- Fixed-point overflow
- Division by zero
- Zero raised to the zero power
- Zero raised to a negative number
- Negative number raised to a fractional power
Floating-point exponent overflow occurs when
the value of a floating-point computation cannot be represented in
the System z® floating-point operand format.
This type of overflow
does not cause SIZE ERROR
; an abend occurs instead.
You could code a
user-written condition handler to intercept the abend and provide
your own error recovery logic.