When using an INFSR or *PSSR error subroutine in a cycle-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 apostrophes 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 subroutine that is best suited for the exception that occurred.
If this field contains blanks at the end of the subroutine, the ILE RPG default
exception handler receives control following the running of the subroutine,
unless the INFSR or the *PSSR subroutine was called by the EXSR operation.
If the subroutine 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 operation.
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.