The RPG Logic Cycle
The RPG LOGIC CYCLE is the backbone of the old RPG programming language. It’s use has faded in recent years but it should still be known and understood by every modern RPG language Developer 😉
So, regardless of whether you want to code modern or *cough* old style….
Let’s see what the ‘RPG Logic Cycle’ offers
The first and last time the program goes through the cycle is slightly different from all the in-between cycle runs:
Before the first record is read the first time through the cycle, the program resolves any parameters passed to it, writes the records conditioned by the First Page (1P) indicator, does file and data initialization, and processes any heading or detail output operations. This may also include printing heading lines.
During the last time a program goes through the cycle, when no more records are available, the LR (last record) indicator and L1 through L9 (control level) indicators are set on, and file and data area cleanup is done.
At the most basic level think of the logic cycle as a simple tool for handling all file reading for you. As simple breakdown of the cycle is this:
1 All heading and detail lines (H or D in position 17 of the output specifications) are processed.
2 The next input record is read and the record identifying and control level indicators are set on.
3 Total calculations are processed. They are conditioned by an L1 through L9 or LR indicator, or an L0 entry.
4 All total output lines are processed. (identified by a T in position 17 of the output specifications).
5 It is determined if the LR indicator is on. If it is on, the program is ended.
6 The fields of the selected input records are moved from the record to a processing area. Field indicators are set on.
7 All detail calculations are processed (those not conditioned by control level indicators in positions 7 and 8 of the calculation specifications) on the data from the record read at the beginning of the cycle.
Before you get too scared
Realistically no body would use the logic cycle anymore… not since the mid 90’s anyway…. modern RPG /FREE and a modularized clean coding approach is obviously the favored technique.
Sometimes good style and efficient runtime performance don’t mix. Wherever you face a conflict between the two, choose good style. Hard-to-read programs are hard to debug, hard to maintain, and hard to get right. Program correctness must always win out over speed.
- Make it right before you make it faster.
- Keep it right when you make it faster.
- Make it clear before you make it faster.
- Don’t sacrifice clarity for small gains in efficiency
Phew I hear you say.
But if you want to see more then a more detailed breakdown of the cycle is attached here.