Figure 8 shows the specific steps in the detailed flow of
the RPG IV program cycle. The item numbers in the following description
refer to the numbers in the figure. Routines are flowcharted in Figure 11 and
in Figure 9.
1
The RT indicator is set off. If *ENTRY PLIST is specified the parameters
are resolved.
2
RPG IV checks for the first invocation of the program. If it is the
first invocation, program initialization continues. If not, it moves the
result field to factor 1 in the PARM statements in *ENTRY PLIST and branches
to step 5.
3
The program is initialized at *INIT in the cycle. This process includes:
performing data structure and subfield initialization, setting user date
fields; opening global files; loading all data area data structures, arrays
and tables; moving the result field to factor 1 in the PARM statements in
*ENTRY PLIST; running the initialization subroutine *INZSR; and storing the
structures and variables for the RESET operation. Global files are opened
in reverse order of their specification on the File Description Specifications.
4
Heading and detail lines (identified by an H or D in position 17 of
the output specifications) are written before the first record is read. Heading
and detail lines are always processed at the same time. If conditioning indicators
are specified, the proper indicator setting must be satisfied. If fetch overflow
logic is specified and the overflow indicator is on, the appropriate overflow
lines are written. File translation, if specified, is done for heading and
detail lines and overflow output. This step is the return point in the program
if factor 2 of an ENDSR operation contains the value *DETL.
5
The halt indicators (H1 through H9) are tested. If all the halt indicators
are off, the program branches to step 8. Halt indicators can be set on anytime
during the program. This step is the return point in the program if factor
2 of an ENDSR operation contains the value *GETIN.
a.
If any halt indicators are on, a message is issued to the user.
b.
If the response is to continue, the halt indicator is set off, and the
program returns to step 5. If the response is to cancel, the program goes
to step 6.
6
If the response is to cancel with a dump, the program goes to step 7;
otherwise, the program branches to step 36.
7
The program issues a dump and branches to step 36 (abnormal ending).
8
All record identifying, 1P (first page), and control level (L1 through
L9) indicators are set off. All overflow indicators (OA through OG, OV) are
set off unless they have been set on during preceding detail calculations
or detail output. Any other indicators that are on remain on.
9
If the LR (last record) indicator is on, the program continues with
step 10. If it is not on, the program branches to step 11.
10
The appropriate control level (L1 through L9) indicators are set on
and the program branches to step 29.
11
If the RT indicator is on, the program continues with step 12; otherwise,
the program branches to step 14.
12
Factor 2 is moved to the result field for the parameters of the *ENTRY
PLIST.
13
If the RT indicator is on (return code set to 0), the program returns
to the caller.
14
If a primary file is present in the program, the program continues with
step 15; otherwise, the program branches to step 29.
15
During the first program cycle, the first record from the primary file
and from each secondary file in the program is read. File translation is done
on the input records. In other program cycles, a record is read from the last
file processed. If this file is processed by a record address file, the data
in the record address file defines the record to be retrieved. If lookahead
fields are specified in the last record processed, the record may already
be in storage; therefore, no read may be done at this time.
16
If end of file has occurred on the file just read, the program branches
to step 20. Otherwise, the program continues with step 17.
17
If a record has been read from the file, the record type and record
sequence (positions 17 through 20 of the input specifications) are determined.
18
It is determined whether the record type is defined in the program,
and if the record sequence is correct. If the record type is undefined or
the record sequence is incorrect, the program continues with step 19; otherwise,
the program branches to step 20.
19
The RPG IV exception/error handling routine receives control.
20
It is determined whether a FORCE operation was processed on the previous
cycle. If a FORCE operation was processed, the program selects that file
for processing (step 21) and branches around the processing for match fields
(steps 22 and 23). The branch is processed because all records processed
with a FORCE operation are processed with the matching record (MR) indicator
off.
21
If FORCE was issued on the previous cycle, the program selects the forced
file for processing after saving any match fields from the file just read.
If the file forced is at end of file, normal primary/secondary multifile
logic selects the next record for processing and the program branches to step
24.
22
If match fields are specified, the program continues with step 23; otherwise,
the program branches to step 24.
23
The match fields routine receives control. (For detailed information
on the match fields routine, see Match Fields Routine.)
24
The LR (last record) indicator is set on when all records are processed
from the files that have an E specified in position 19 of the file description
specifications and all matching secondary records have been processed. If
the LR indicator is not set on, processing continues with step 26.
25
The LR (last record) indicator is set on and all control level (L1 through
L9) indicators, and processing continues with step 29.
26
The record identifying indicator is set on for the record selected for
processing.
27
It is determined whether the record selected for processing caused a
control break. A control break occurs when the value in the control fields
of the record being processed differs from the value of the control fields
of the last record processed. If a control break has not occurred, the program
branches to step 29.
28
When a control break occurs, the appropriate control level indicator
(L1 through L9) is set on. All lower level control indicators are set on.
The program saves the contents of the control fields for the next comparison.
29
It is determined whether the total-time calculations and total-time
output should be done. Totals are always processed when the LR indicator is
on. If no control level is specified on the input specifications, totals are
bypassed on the first cycle and after the first cycle, totals are processed
on every cycle. If control levels are specified on the input specifications,
totals are bypassed until after the first record containing control fields
has been processed.
30
All total calculations conditioned by a control level entry (positions
7 and 8 of the calculation specifications). are processed. This step is the
return point in the program if factor 2 of an ENDSR operation contains the
value *TOTC.
31
All total output is processed. If fetch overflow logic is specified
and the overflow indicator (OA through OG, OV) associated with the file is
on, the overflow lines are written. File translation, if specified, is done
for all total output and overflow lines. This step is the return point in
the program if factor 2 of an ENDSR operation contains the value *TOTL.
32
If LR is on, the program continues with step 33; otherwise, the program
branches to step 41.
33
The halt indicators (H1 through H9) are tested. If any halt indicators
are on, the program branches to step 36 (abnormal ending). If the halt indicators
are off, the program continues with step 34. If the RETURN operation code
is used in calculations, the program branches to step 33 after processing
of that operation.
34
If LR is on, the program continues with step 35. If it is not on, the
program branches to step 38.
35
RPG IV program writes all arrays or tables for which the TOFILE keyword
has been specified on the definition specification and writes all locked data
area data structures. Output arrays and tables are translated, if necessary.
36
All open global files are closed. The RPG IV program also unlocks
all data areas that have been locked but not unlocked by the program. If factor
2 of an ENDSR operation contains the value *CANCL, this step is the return
point.
37
The halt indicators (H1 through H9) are tested. If any halt indicators
are on, the program branches to step 39 (abnormal ending). If the halt indicators
are off, the program continues with step 38.
38
The factor 2 fields are moved to the result fields on the PARMs of the
*ENTRY PLIST.
39
The return code is set. 1 = LR on, 2 = error, 3 = halt.
40
Control is returned to the caller.
Note:
Steps 32 through 40 constitute the normal ending routine.
For an abnormal ending, steps 34 through 35 are bypassed.
41
It is determined whether any overflow indicators (OA through OG OV)
are on. If an overflow indicator is on, the program continues with step 42;
otherwise, the program branches to step 43.
42
The overflow routine receives control. (For detailed information on
the overflow routine, see Overflow Routine.) This step is the return
point in the program if factor 2 of an ENDSR operation contains the value
*OFL.
43
The MR indicator is set on and remains on for the complete cycle that
processes the matching record if this is a multifile program and if the record
to be processed is a matching record. Otherwise, the MR indicator is set
off.
44
Data from the last record read is made available for processing. Field
indicators are set on, if specified.
45
If lookahead fields are specified, the program continues with step 46;
otherwise, the program branches to step 47.
46
The lookahead routine receives control. (For detailed information on
the lookahead routine, see Lookahead Routine.)
47
Detail calculations are processed. This step is the return point in
the program if factor 2 of an ENDSR operation contains the value *DETC. The
program branches to step 4.