× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Forgive me, I must join the chorus in favor of "leave" and
"iter".

On occasion I have counted dozens of nesting levels for
"if"s and "do"s. With leave and iter, you are not "jumping
the loop boundary", which it seems is one of those
structured programming principles.

- Alan


----- Original Message -----
From: <rick.baird@xxxxxxxxxxxxxxx>
To: "RPG programming on the AS400 / iSeries"
<rpg400-l@xxxxxxxxxxxx>
Sent: Friday, November 21, 2003 1:18 PM
Subject: Re: Infinit loop in /free


|
| Thanks for that endorsement Hans.  despite thier seeming
kinship to goto's,
| I love 'leave' and 'iter'.  They make my job so much
easier.
|
| I hate complicated and nested compound if/else/
constructs.  They are
| confusing and prone to error.
|
| My typical exfmt loops look much like this seudo code -
the nesting never
| exceeds 1 level past the do loop, and it's obvious what
happens under each
| condition.
|
| I'm either going to go directly to the top of the do loop,
exit the do
| loop, or continue with the next executable inside the do
loop.  No setting
| of intermediate variables, no checking-again of variables
I've already
| checked once.
|
| (also, note my never-ending-loop of choice ;)
|
| begsr
|
| dow 1=1
|   exfmt screen
|
|   select
|   when *inkc
|     eval *inlr = *on
|     return
|   when *inkl
|     leave
|   when *inkd
|     exsr prompt
|     iter
|   when oneThing
|     exsr DoOneThing
|     leave
|   when anotherThing
|     exsr doAnotherThing
|     iter
|   when somethingElse
|     exsr doSomethingElse
|   other
|     exsr doTheOtherthing
|   endsl
|
|   exsr editscreen
|
|   if errors
|     iter
|   end
|
|   exsr updatefilefromscreen
|
|   if not stayingHere
|     leave
|   end
|
| enddo
|
| endsr
|
| ----Original message-----------
| <snip>there's absolutely nothing wrong with LEAVE and
ITER. Even if you
| subscribe to the tenets of "structured programming", when
using LEAVE or
| ITER, your loop still has a single entry and a single
exit. By
| explicitly exiting a construct early, you can often avoid
additional
| levels of nesting.
|
| Cheers! Hans
|
|
| _______________________________________________
| 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 thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

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.