× 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.



return is the one opcode I am wishy-washy about.

I might code:
If ( Value < 0 );
   Return 0;
Else;
   Return Value;

Or I might code
If ( Value < 0 );
   ReturnVal = 0;
Else
   ReturnVal = Value;

Return ReturnVal;

The longer the function, the more apt I am to do it the
second way.  For a 4 to 10 line function, I'll sometimes
do it the first way.

In this case, it all depends on which makes the code easier to
understand my intentions and easier to maintain.

Structured Programming Techniques do require each function/Subroutine
to only have one exit point though, and the first sample does break
that rule.

Regards,

Jim Langston


-----Original Message-----
From: rob@dekko.com [mailto:rob@dekko.com]
Sent: Thursday, December 06, 2001 1:02 PM
To: rpg400-l@midrange.com
Subject: RE: Why is LEAVE bad? (was: Cycle Processing vs. Doing it my
way)



Buck,

You're right about breaking down the monolith to avoid the return code
being changed inadvertently.

But, I've broken down the monolith to use many subroutines (No, I am not
subprocedure shy - trust me, I use them.).  In these particular subroutines
I may use LeaveSr. Much like a subprocedure many have multiple Return
values

If divisor=0
  Return 'Invalid Number!'
Else
  Return 'Your value is ' + %editc(MyNumber/Divisor:'J')
EndIf

Not only is a Return for returning values - but it may be used as an
'improper' control structure (In some people's opinion.).


Rob Berendt

==================
"They that can give up essential liberty to obtain a little temporary
safety deserve neither liberty nor safety."
Benjamin Franklin



                    Buck Calabro
                    <Buck.Calabro@com       To:     rpg400-l@midrange.com
                    msoft.net>              cc:
                    Sent by:                Fax to:
                    rpg400-l-admin@mi       Subject:     RE: Why is LEAVE
bad? (was: Cycle Processing vs. Doing it my
                    drange.com               way)


                    12/06/2001 03:17
                    PM
                    Please respond to
                    rpg400-l






>And the only problem with setting a return code
>and exiting at the bottom is that you have to
>scan every line of code to be sure you don't
>accidentally change the return code before
>returning.

Oh, I don't know... (a lot!)  If I mis-set a return code a simple editor
search will turn the culprit up.  Doing a search on LEAVE will turn a lot
more suspects.  This is really just a theoretical discussion.  In practise,
if a block of code is big enough to require multiple return codes or
multiple exit points, it's probably not structured very well anyway.  There
are well-known reasons for allowing this sort of code; edit checking a
screen-load of input data is one.

You've ably demonstrated that there are indeed places where the thoughtful
programmer might use leave.  I've been finding that my old style of coding
would result in commingling of code blocks; sequences that work better as
their own function.  When I write using many small functions, I find that I
have fewer and fewer reasons for leave, because my code blocks do one thing
and one thing only.  Leave now seems to me like a semicolon in a run-on
sentence.

Thanks for the discussion!
  --buck


As an Amazon Associate we earn from qualifying purchases.

This thread ...


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.