|
James, Your post seems contradictory to me. > ----- Style #1 ------------------------------------------- > mykey setll record > if %equal > mykey reade record > dow not %eof > ... process ... > mykey reade record > enddo > endif > > ----- Style #2 ------------------------------------------- > > mykey setll record > if %equal > do *HIVAL > mykey reade record > if %eof leave > ... process ... > enddo > endif > Here's my take on this that hopefully makes good sense. > Looking at the > typical C way: > > while ((fscanf(outfile, "%c", &c))!=EOF) > { > do stuff... > } > > we notice that all the logic that determines when a loop is > executed or> exited is in one place. You can easily tell that the loop will > be run > depending on fscanf() and will only exit when fscanf() reaches EOF. > > RPG has more than one way to code in a similar way. But I > think the goal should be to make it easily discernable what will cause the > loop to > execute and what will cause it to exit. Keep the logic that > does that in one place: at the top of the loop. This makes it immediately > obvious how the loop is designed to work. I agree with your premise but what is simpler and easier to discern than the following code from Peters' post? /free Setll key format; Reade key format; Dow not %eof; Exsr Process; Reade key format; Enddo; /end-free You know exactly how the loop will be executed and equally as important, when the loop will be exited. Coding as in style #2 includes unnecessary logic conditions and multiple exit points from the DO loop. Many times I have encountered loops coded as in style #2 where the IF EOF then exit branch was not at the immediate top but farther into the loop. > Style #1 does not keep the logic together and therefore does > not make it immediately obvious how the loop is designed to work. IMHO I think it has a lot to do with what one is used to. While style #1 loops are second nature to me because I use them, I have encountered several programmers that find them difficult to understand and convert them to style #2 because that's what they are used to. I coded using style #2 for many years until I encountered C after which I converted to style #1 which I currently use. Rick
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.