Technical data

Example 6–4 FREE CURRENT Statement
.
.
.
MAIN-ROUTINE.
READY TEST_REALM CONCURRENT RETRIEVAL.
PERFORM FIRST-REPORT-HEADINGS.
PERFORM PRINT-FIRST-REPORT THRU PFR-EXIT
UNTIL AT-END = "Y".
MOVE "N" TO AT-END.
PERFORM SECOND-REPORT-HEADINGS.
PERFORM PRINT-SECOND-REPORT THRU PSR-EXIT
UNTIL AT-END = "Y".
MOVE "N" TO AT-END.
PERFORM THIRD-REPORT-HEADINGS.
PERFORM PRINT-THIRD-REPORT THRU PTR-EXIT
UNTIL AT-END = "Y".
MOVE "N" TO AT-END.
.
.
.
STOP RUN.
PRINT-FIRST-REPORT.
FETCH NEXT CUSTOMER_MASTER
AT END FREE CURRENT
MOVE "Y" TO AT-END.
IF AT-END = "N" AND
CUSTOMER_CREDIT_RATING IS GREATER THAN 1000
PERFORM PRINT-ROUTINE.
PFR-EXIT.
EXIT.
PRINT-SECOND-REPORT.
FETCH NEXT CUSTOMER_MASTER
AT END FREE CURRENT
MOVE "Y" TO AT-END.
IF AT-END = "N" AND
CUSTOMER_CREDIT_RATING IS GREATER THAN 5000
PERFORM PRINT-ROUTINE.
PSR-EXIT.
EXIT.
PRINT-THIRD-REPORT.
FETCH NEXT CUSTOMER_MASTER
AT END MOVE "Y" TO AT-END.
IF AT-END = "N" AND
CUSTOMER_CREDIT_RATING IS GREATER THAN 10000
PERFORM PRINT-ROUTINE.
PTR-EXIT.
EXIT.
The FREE CURRENT statement in the PRINT-FIRST-REPORT paragraph
nulls the default run-unit currency, thereby providing a starting point for the
PRINT-SECOND-REPORT paragraph. The FREE CURRENT statement in the
PRINT-SECOND-REPORT paragraph does the same for the PRINT-THIRD-
REPORT paragraph. Thus, by nullifying the default run-unit currency, the
FREE CURRENT statements allow the first execution of the FETCH NEXT
CUSTOMER_MASTER statement to fetch the first customer master in TEST_
REALM.
DML Programming—Tips and Techniques 6–13