You can execute custom logic at any of several Express-provided events that occur during database call processing:
|
Event |
Occurrence |
|---|---|
|
Before DB Access |
Before a non-loop database call executes |
|
Before Loop |
Before a loop database call executes |
|
Normal Status |
After processing records, and before moving them to the window or screen |
|
Normal-X Status |
For looped records only. After Normal Status executes, and before moving records to the window or screen |
|
Error Status |
After the database call returns an Error status flag |
|
Exception Status |
After the database call returns an Exception status flag |
|
After DB Access |
After a non-loop database call executes |
|
After Loop |
After a loop database call executes |
The Normal Status and Normal-X Status events enable you to add custom logic before looped records map to your screen. Use these events when you want to map only some of the records that a loop obtains. In your custom code, write conditional logic to determine which records to map. Online Express provides a flag, OK-TO-PROCEED, that you set to True to map and process the record, or False to bypass mapping and processing. You can ignore the flag if you do not use this event; the flag is set to True by default.
The following example illustrates both events. Suppose that you must map the records that show annual sales of $100,000 or more in the Northwest region, and calculate and map the grand total of those records.
DB-PROCESS REC SALES-RECORD
... WHERE ANNUAL-SALES-TOTAL > 99999
PERFORM CHECK-BEFORE-MAPPING-PARA
IF OK-TO-PROCEED
ADD 1 TO CTR
PERFORM RECORD-STOREKEY-PARA
PERFORM CALC-AND-MAP-PARA
MOVE REC-TO-SCREEN-LB1
.
.
.
CHECK-BEFORE-MAPPING-PARA
TRUE OK-TO-PROCEED
IF SALES-REGION NOT = NORTHWEST
FALSE OK-TO-PROCEED
CALC-AND-MAP-PARA
calculation and mapping routine for grand total
In the example code: