5. The ENDSR operation receives control, and the procedure is canceled.
The approach used here to avoid looping can also be used within an INFSR error
subroutine.
Specifying a Return Point in the ENDSR Operation
When using an INFSR or *PSSR error subroutine in a main procedure, you can
indicate the return point at which the program will resume processing, by entering
one of the following as the Factor 2 entry of the ENDSR statement. The entry must
be a six-position character field, literal, named constant, array element, or table
name whose value specifies one of the following return points.
Note: If the return points are specified as literals, they must be enclosed in apos-
trophes and entered in uppercase (for example, *DETL, not *detl). If they
are specified in fields or array elements, the value must be left-adjusted in
the field or array element.
*DETL Continue at the beginning of detail lines.
*GETIN Continue at the get input record routine.
*TOTC Continue at the beginning of total calculations.
*TOTL Continue at the beginning of total lines.
*OFL Continue at the beginning of overflow lines.
*DETC Continue at the beginning of detail calculations.
*CANCL Cancel the processing of the program.
Blanks Return control to the ILE RPG default exception handler. This will occur
when Factor 2 is a value of blanks
and
when Factor 2 is not specified. If
the subroutine was called by the EXSR operation and Factor 2 is blank,
control returns to the next sequential instruction.
After the ENDSR operation of the INFSR or the *PSSR subroutine is run, the ILE
RPG compiler resets the field or array element specified in Factor 2 to blanks.
Because Factor 2 is set to blanks, you can specify the return point within the sub-
routine that is best suited for the exception that occurred.
If this field contains blanks at the end of the subroutine, the ILE RPG default excep-
tion handler receives control following the running of the subroutine, unless the
INFSR or the *PSSR subroutine was called by the EXSR operation. If the subrou-
tine was called by the EXSR operation and Factor 2 of the ENDSR operation is
blank, control returns to the next sequential instruction following the EXSR opera-
tion.
Note: You cannot specify a factor 2 entry for an ENDSR in a subprocedure. If you
want to resume processing in the subprocedure, you have to use a GOTO
operation to a TAG in the body of the subprocedure. Alternatively, you can
code a RETURN operation in the *PSSR. The subprocedure will then return
to the caller.
Chapter 12. Handling Exceptions 237