More About the RPG Logic Cycle [ HP RPG/XL Programmer's Guide ] MPE/iX 5.0 Documentation
HP RPG/XL Programmer's Guide
More About the RPG Logic Cycle
The following sections in this chapter give details about how the RPG
logic cycle works and how indicators are used. Use this section when you
have specific questions about how a particular RPG feature is
implemented.
The Primary Steps in the RPG Logic Cycle
When an RPG program is first executed, certain initialization and
housekeeping operations (described under Step 1 below) are performed.
Then the main RPG cycle begins (Steps 2-8). Steps 2 through 8 are
repeated for each set of input records. Figure 1-3 diagrams these steps:
Step Description
1 Pre-Cycle Initialization and Housekeeping
RPG performs certain preliminary functions once before the main
logic cycle begins. During these operations, all data areas are
initialized and the 1P and L0 indicators are turned on. All
files are prepared for processing and all preexecution-time
tables and arrays are read into memory. First-page alignment is
performed for printer files and all output controlled by the 1P
indicator is written. A record is read from each primary and
secondary input file. The program is now ready to begin the
main logic cycle.
2 Heading and Detail-Time Output
This begins the main logic cycle. The RPG program writes all
heading and detail records whose conditions are satisfied.
(Heading records are identified by an H in the Type Field of the
Output Specification; detail records are indicated by a D in the
Type Field.) The program tests the status of all halt
indicators (and halts if any are turned on), and turns off all
record-identifying and control-level indicators that are on.
All overflow indicators that were turned on before the last
detail calculations (done in Step 8) are turned off. RPG also
tests the LR indicator for end-of-program status and transfers
to Step 6 if this indicator is on.
_______________________________________________________________
NOTE The term "detail-time" used throughout this manual
collectively refers to detail-time calculations (occurring
in Step 8) followed by detail output (occurring in this
step).
_______________________________________________________________
3 Record Input
If there are no primary or secondary files, control goes to Step
6; otherwise, a record is read from the current file. If it is
end-of-file, control skips to Step 4. If the record has an
invalid record type or is in the wrong sequence and columns
56-71 of the Header Specification contains a pre-response to the
error, the pre-response is performed. If there is an error and
no pre-response is entered, the response comes from the operator
(session mode) or the job file (job mode).
4 Record Selection
If the program has just one input file, the next record from
that file is selected for processing. If the program has more
than one input file, the record is selected as follows:
a. If a file is FORCEd (uses the FORCE Calculation
Specification operation), the next record from that file is
selected.
b. If any input records without matching fields have been
read, the highest-priority record among them is chosen.
Primary file records have greatest priority, followed by
secondary file records in the order that they are entered in
the File Description Specifications.
c. If all input records have matching fields and the input
sequence is ascending, the lowest-sequenced record is chosen.
If all input records have matching fields and the input
sequence is descending, the highest-sequenced record is
chosen. If the matching fields are the same, the record with
the highest priority (see Step 4b.) is selected.
5 Control Break Check
If a control break occurs, the appropriate control-level
indicator and all lower-level indicators are turned on.
6 Total-Time Operations
If this is the first record with control level fields, the
program skips total-time operations. But, if this is not the
first record with control level fields, the program performs
total-time calculations and output (including total-time
overflow output). Total-time operations are all those
calculations with L0-L9 or LR indicator entries in the Control
Level Field (columns 7-8) and output operations of record type
T. These operations are done after each control break occurs or
after the last input record is read, but before the information
on the input record selected in Step 4 is actually made
available for processing. The program also sets all resulting
indicators as specified. If there are no more records to
process in any of the files, the LR indicator is turned on,
output tables and arrays are written, all files are closed and
the program ends.
7 Data Movement
The program moves the data from the record selected into the
input fields for processing. If this is a matching record, it
sets the matching-record (MR) indicator. If this is a
look-ahead record, the program reads the look-ahead fields and
moves them into the input fields. If input chaining is used,
the chained file(s) are read, their records identified and their
fields moved to the data area.
8 Detail-Time Calculations
The program performs detail-time calculations for the record
specified, and returns to Step 2. Detail-time calculations are
those calculations not conditioned by control-level indicators
in the Control Level Field (columns 7-8.) Notice that these
calculations and the detail-time output, described in Step 2,
are both done after the information (from the record selected in
Step 4) becomes available. They are usually based on
information from this record. At this point, the program also
turns on resulting indicators used with these calculations.
Figure 1-3. The Primary Steps in the RPG Logic Cycle
Substeps in the RPG Logic Cycle
This section describes in detail each step of the RPG logic cycle
including when indicators are turned on and off. The substeps listed
below expand upon the primary logic steps discussed in the previous
section and they correspond to the steps shown on the HP RPG Logic Cycle
diagram (Figure 1-4) at the end of this chapter.
Substep Description
1 Pre-Cycle Processing
The operations in this step are performed once. They are not
part of the main cycle.
1A All data areas are initialized. This includes compile-time
tables and arrays and the user date (UDATE) fields obtained from
the system. User indicators (U1-U8) are fetched from the
specified source. The Local Data Area (LDA) is initialized with
the contents of LDAFILE, if specified. The 1P and L0 indicators
are turned on. All files, including TurboIMAGE databases and
data sets, are opened unless the program has been suspended by
the JCW RPGSUSP (see "End-of-Job Processing", Step E-2B).
Preexecution-time tables and arrays are loaded into the data
area.
1B If forms alignment is requested, the first output line for each
print file conditioned by 1P is printed. The first-page heading
records are then written to the specified files.
1C A record is read from each input (primary and secondary) file.
The matching and control fields and the record indicator for
each file are identified.
2 Heading and Detail-Time Output
This is the beginning of the main logic cycle.
2A RPG writes all heading (except those conditioned by the 1P
indicator) and detail lines whose conditions are satisfied. It
turns on the appropriate overflow indicator (if used), if the
overflow line is reached, and it turns off any overflow
indicators that were already processed. It performs overflow
processing if Fetch Overflow is specified and the overflow
indicator is assigned and turned on.
2B If overflow processing was performed by the previous pass
through the cycle or by Fetch Overflow, turn off the overflow
indicator. If the overflow indicator was turned on because
Fetch Overflow was specified and the overflow line was reached
during detail calculations in the previous cycle (or during
detail output time in the current cycle), leave the overflow
indicator on (you can use the overflow indicator to condition
Calculation Specifications during the current cycle).
2C If a halt indicator (H0-H9) is on, control goes to "Run-Time
Error Processing", Step E-1.
2D The first-page indicator (1P) and the control-level indicators
(L1-L9) are turned off. The L0 indicator is turned on.
2E If this is the first time through the logic cycle, control skips
to Step 4A.
2F All record-identifying indicators are turned off.
2G If the last-record (LR) indicator is on, control skips to Step
6B.
3 Record Input
3A If there are no primary or secondary files defined in the
program, control skips to Step 6A. (If there are no primary or
secondary files, the program loops indefinitely unless the
program contains Calculation Specifications that turn LR on.)
3B If the file is not an update or combined file and it contains
look-ahead fields, control skips to Step 3G. (A record from the
file was read before detail Calculation Specifications were
performed in the previous cycle.)
3C If there are spread records defined for an input file and there
are more fields to be processed before reading the next record,
control skips to Step 4A.
3D A record is read from the last file processed. If this file is
retrieved using a Record Address File, the data in the RAF
defines the record to be selected.
3E If the file just read is at end-of-file, control skips to Step
4A.
3F If the record just read contains an unidentified record type, or
an incorrect record sequence (as specified in the Group Sequence
Field of the Input Specification), control skips to "Run-Time
Error Processing", Step E-1.
3G If the record just read is a blank spread record, control goes
back to Step 3D.
4 Record Selection
4A The next record is selected for processing. If a FORCE
Calculation Specification operation was executed during the
detail-time calculations in the previous pass through the cycle,
the record is selected from the FORCEd file. If no
matching-record processing is used, the next record is selected
according to the primary/secondary processing order. If
matching-record processing is used, the next record is selected
according to the matching-record processing order.
4B The program determines if all end-of-file conditions are met
(all records in files having an E in the End-of-File Field of
the File Description Specification are processed and all
matching secondary records are processed). If so, control skips
to Step 6B.
4C The record-identifying indicator (associated with the record
selected for processing) is turned on.
5 Control Break Check
If a control break occurred for the selected input record, turn
on the appropriate control-level indicator and all lower-level
indicators. (A control break occurs when the value in the
control-level fields of the record differs from the control
fields of the previous record.)
6 Total-Time Operations
6A If this is the first time through the logic cycle or this is the
first record with control fields, control skips to Step 6E;
otherwise, control proceeds to Step 6C.
6B If there are no more records to process in any of the files, all
control-level indicators (L1-L9 and LR) are turned on.
6C Total-time calculations are performed. If CHAIN or READ
operations are used, the appropriate records are retrieved. The
appropriate indicators resulting from total calculations are
turned on; overflow conditions resulting from EXCPT output
operations are set and Fetch Overflow processing is performed if
required by EXCPT output operations.
6D Total-time lines are written. Overflow processing is performed
if it was not done in Step 6C.
6E If the LR indicator is on, control skips to "End-of-Job
Processing", Step E-2A.
7 Data Movement
7A Overflow lines are written for total-time then detail-time
records that are conditioned by overflow indicators but that
have not yet been processed by Fetch Overflow.
7B If matching fields are specified and the records match, the MR
indicator is turned on; otherwise, it is turned off. When it is
turned on, it remains on until the matching record is processed.
7C The data fields from the record selected in Step 4A are
extracted and moved into the input data area. Field indicators,
if specified, are turned on or off according to the data in the
field.
7D If chaining field codes (C1-C9) are entered in the Chaining
Field of one or more Input Specifications, a record is retrieved
from each specified file; the appropriate record-identifying
indicators are turned on; the data fields are moved to the input
data area and field indicators are set.
7E If look-ahead fields are specified, the look-ahead fields are
extracted and moved to the look-ahead data area. For combined
and update files, the look-ahead fields are extracted from the
current record; for all other files, the look-ahead fields are
extracted from the next record in the file currently being
processed.
8 Detail-Time Calculations
Detail-time calculations are performed. If CHAIN or READ
operations are used, the appropriate records are retrieved. The
appropriate indicators resulting from detail calculations are
turned on; overflow conditions resulting from EXCPT output
operations are set and Fetch Overflow processing is performed if
required by EXCPT output operations.
E-1 Run-Time Error Processing
E-1A If there is a pre-selected response for this error in the Header
Specification, control skips to Step E-1C.
E-1B The response is obtained from the computer operator or from the
job file.
E-1C If the response is 0 (CONTINUE), control proceeds to Step E-1D.
If the response is 1 (BYPASS), control skips to Step 2B.
If the response is 2 (REGULAR TERMINATION), control skips to
Step 6B.
If the response is 3 (IMMEDIATE TERMINATION), control skips to
Step E-2F.
If the response is 4 (REGULAR TERMINATE WITH DUMP), control
skips to Step E-1G.
If the response is 5 (IMMEDIATE TERMINATE WITH DUMP), control
skips to Step E-1F.
E-1D Each halt indicator (H0-H9) is tested. If an indicator is on,
it is reset and control skips back to Step E-1A.
E-1E Processing is resumed at the point in the logic cycle where the
error occurred.
E-1F An Error Dump is printed and the program skips to step E-2F.
E-1G An Error Dump is printed and control skips to Step 6B.
E-2 End-of-Job Processing
E-2A Output tables and arrays are written. All files are closed
(except when the program is in suspend mode). The settings of
the user indicators (U1-U8) update the Job Control Word and the
Local Data Area is written back to the LDAFILE, if specified.
E-2B If the JCW RPGSUSP does not equal 1 (the program is not
suspended), the program ends.
E-2C Processing is suspended. Files are left open for later access.
E-2D Control is transferred back to the father process.
E-2E If the father process reactivates the suspended program, control
begins at Step 1.
E-2F Close files.
MPE/iX 5.0 Documentation