The USE BEFORE REPORTING statement specifies Procedure Division statements that are executed just before a report group named
in the Report Section of the Data Division of this program, and optionally a contained program, is presented.
- A USE BEFORE REPORTING statement, when present, must immediately follow a section header in the declaratives portion of the
Procedure Division and must appear in a sentence by itself. The remainder of the section must consist of zero, one, or more
procedural paragraphs that define the procedures to be used.
- Identifier-1 must reference a report group. The same identifier-1 must not appear in more than one USE BEFORE REPORTING statement
in the same Procedure Division.
- The GENERATE, INITIATE, or TERMINATE statements must not appear in a paragraph in a USE BEFORE REPORTING procedure. A PERFORM
statement in a USE BEFORE REPORTING procedure must not have GENERATE, INITIATE, or TERMINATE statements in its range.
- A USE BEFORE REPORTING procedure must not alter the value of any control data item.
- The USE BEFORE REPORTING statement itself is never executed; it merely defines the conditions calling for the execution of
the USE procedures.
- A declarative procedure is invoked just before the named report group is produced during the execution of the program. The
report group is named by identifier-1 in the USE BEFORE REPORTING statement which prefaces the declarative.
- Within a declarative procedure, there must be no reference to any nondeclarative procedures.
- Procedure-names associated with a USE BEFORE REPORTING statement can be referenced in a different declarative section or in
a nondeclarative procedure only with a PERFORM statement.
- In the USE BEFORE REPORTING statement, the designated procedures are executed by the RWCS just before the named report group
is produced. (See the section The TYPE Clause.)
- Within a USE procedure, there must not be the execution of any statement that would cause the execution of a USE procedure
that had previously been invoked and had not yet returned control to the invoking routine.
- Special precedence rules are followed when programs are contained within other programs. In applying these rules, only the
first qualifying directive will be selected for execution. The declarative which is selected for execution must satisfy the
rules for execution of that declarative. The order of precedence for selecting a declarative is:
- The declarative within the program that contains the statement which caused the qualifying condition.
- The declarative in which the GLOBAL phrase is specified and which is within the program directly containing the program which
was last examined for a qualifying declarative.
- Any declarative selected by applying rule 6b to each more inclusive containing program until rule 6b is applied to the outermost
program. If no qualifying directive is found, none is executed.