IBM AS/400 Frozen Dessert Maker User Manual


 
Using Exception Handlers
(when R is chosen). For example, any read operation will be retried if the read
failed because of record locking.
For other types of messages the exception is percolated up the call stack to the
caller of the procedure. That procedure is presented with the exception and given a
chance to handle it. If it does not, then the exception is percolated up the call stack
until it reaches the control boundary, at which point the exception is converted to a
function check, and exception handling starts over as described above.
Example of Unhandled Escape Message
The following scenario describes the events which occur when an escape message
is issued and cannot be handled by the procedure in which it occurred. This sce-
nario has the following assumptions:
1. There are two programs, PGM1 and PGM2 which run in the same activation
group. Each contains a procedure, PRC1 and PRC2 respectively.
2. PRC1 calls PGM2 dynamically and PRC2 receives control.
3. The CALL operation code in PRC1 has an error indicator for the call.
4. No RPG exception handlers have been coded in PRC2. That is, there is no
error indicator coded for the SUBST operation and there is no *PSSR error
subroutine.
5. PRC2 has a SUBST operation where the Factor 1 entry is a negative number.
When PGM1 calls PGM2, and the SUBST operation is attempted, an exception
message, RNX0100, is generated. Figure 109 depicts this scenario and the events
which occur.
Procedure PRC2
-1 SUBST
RNX0100 issued
Procedure PRC1
CALL PRC2
Error Ind. Hdlr
RPG default Hdlr
RPG default Hdlr
Active Exception Handler List
Percolate
Unhandled
Exception
Call Stack
Figure 109. Scenario for Unhandled Escape Message
The following then occurs:
1. Since there is no error indicator or *PSSR error subroutine coded on the
SUBST operation in PRC2, PRC2 cannot handle the program error, and so it is
unhandled.
2. Since it is not a function check, it is percolated (passed up the call stack) to
PRC1.
3. PRC1 receives (handles) the same exception message, and sets on the error
indicator on the CALL operation with the side effect that PRC2 is terminated.
4. Processing then continues in PRC1 with the statement following the CALL
operation.
224 ILE RPG for AS/400 Programmer's Guide