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.
G’day Nick,
Yes I’m from Australia – I learnt RPG2 in 1974 working on a British ICL 2903 computer & later an ICL ME29 in Cairns in Far North Queensland Australia as a trainee programmer (1 of 6 – who eventually became a Team of 4) for the then Cairns Regional Electricity Board (CREB) one of 5 or 6 Regional Boards in the State.
I left there in early 1998 after accepting a voluntary redundancy package which was too attractive to refuse (‘World’s best practice’ they claimed).
Almost right up to that time, we were still running and maintaining some of the programs our Team had written way back in the early ’70’s. Although we had gone over to UNISYS machines by then!
The reason I found your site was I had been reminiscing about RPG2 and remembered a tongue in cheek parody diagram of the RPG Cycle – it was hilarious – more detailed and complicated than yours – I wonder if you have ever seen it?
It would be interesting to know if it is still around.
Glad to know RPGnn is still around.
Regards,
Bruce Nesbit