|
The logic is that you shouldn't have multiple exits out of a loop of this nature. To some, that's an edict from God. Granted, without the leave your loop (as presented) would be infinite therefore there would never be an exit on the enddo. The argument is that you may have more conditions than F3 to exit. Like a system shutdown detected or any other number of animals. Then you would have something like: ChuckIt=*off; Do until ChuckIt; ... Select; When Fkey=F3; ChuckIt=*on; When ThisSituation; // don't really do anything, but don't set ChuckIt. Sort of like an iter. ... When Shutdown; ChuckIt=*on; EndSl; EndDo; The problem is that if you like to write huge monolithic code then it gets complicated keeping track of whether or not you turned ChuckIt on. I used to follow this mantra, but it does tend to get rather complicated at times. I could go either way on this. Just summing up the arguments. Rob Berendt -- Group Dekko Services, LLC Dept 01.073 PO Box 2000 Dock 108 6928N 400E Kendallville, IN 46755 http://www.dekko.com "Larry" <Larry_Ducie@xxxxxxxxxxx> Sent by: rpg400-l-bounces@xxxxxxxxxxxx 01/31/2005 03:58 PM Please respond to RPG programming on the AS400 / iSeries <rpg400-l@xxxxxxxxxxxx> To <rpg400-l@xxxxxxxxxxxx> cc Subject Re: Suggested Technique Hi Alan, <snip> There are some brilliant programmers here, however, who advocate avoiding use of the "iter" and "leave" op-codes. I find it hard to avoid using them myself, but am still open on that issue. </snip> Now there's a statement! :-) I would be VERY interested to hear the reasons why LEAVE and ITER have entered the "Hall of Shame" along with CABxx and GOTO. Personally, I find them very useful and would need a very, very hard sell to convince me to stop using them. They do not preclude well structured code, they have definite branching end-points, and they do not make code less readable to a developer: All long-standing accusations levelled at CABxx and GOTO. For example - a classic screen loop: // Display screen... do *hival exfmt screen // If user presses F3, leave screen loop... if F3_pressed leave endif // Validate user input... validateInput() // If user enters invalid data, re-display screen, displaying error message... if userEntersInvalidData iter endif // If user elects to update current valid data, update and leave screen... if F8_update updateData() leave endif enddo For me this code is simple - you can only leave the screen if you press F3 or update valid data. How do I know??? There's only two ways to leave the screen - via the two LEAVE op-codes. If the code goes beyond the enddo then F3 or F8 MUST have been pressed. In the case of F8, valid data MUST have been entered. If the user enters invalid data then I force a re-display of the screen (ITER) before any update code is reached - this forms a nice code buffer, beyond which I am assured that the input data is valid. I also prefer using "do *hival" because I do not want any "implicit" exits of the loop. I want to see the exit strategy EXPLICITLY coded within the screen loop. My time is more precious than the CPU cycle time. If I can read/modify the code faster because there are large marker flags in front of me then my company saves money. It's the old adage - KISS! Just my preference. Cheers Larry Ducie -- This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options, visit: http://lists.midrange.com/mailman/listinfo/rpg400-l or email: RPG400-L-request@xxxxxxxxxxxx Before posting, please take a moment to review the archives at http://archive.midrange.com/rpg400-l.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 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.