• Subject: RE: %EOF - more on GOTO
  • From: "John Taylor" <John.Taylor@xxxxxxxxxxxxxxx>
  • Date: Fri, 18 Jun 1999 19:46:15 -0600
  • Importance: Normal

Chris,

Thank you for the refresher in STRUCTURED PROGRAMMING 101. ;-)

However, my intent was to point out that the GOTO is not inherently a bad
thing. The working example is an extreme simplification of the validation
routine. A single select is very clean in this case. In the real world, the
validations will generally be more complex, involving multiple IF's and
possibly some more SELECTs. That leads to nested SELECT statements, which I
try to avoid whenever possible because the fixed format tends to make it a
chore determining where any given select ends.

I think we share the same objective here - to make the code more
readable/maintainable when we have to visit it again in a years time.
Personally, I find a nested IF/SELECT structure much more difficult to
follow than a routine that has easily identifiable "code blocks".

I do reserve the right to change my mind and declare all branching
statements as a product of the devil - if.. and only if - we see a free form
RPG that will allow me to indent those nested structures. <g>

Oh, and one more thing.. Those people that use TAGS/GOTOS to perform a
loop - there is no defence for these people. They should be sentenced to
hard time twiddling bits in machine language.


John Taylor

> -----Original Message-----
> From: owner-rpg400-l@midrange.com [mailto:owner-rpg400-l@midrange.com]On
> Behalf Of Chris Bipes
> Sent: Friday, June 18, 1999 5:45 PM
> To: 'RPG400-L@midrange.com'
> Subject: RE: %EOF - more on GOTO
>
>
> for your example, try:
>
> SR    ChkForErr       BegSR
>
>   * Initialize routine
> C                     Eval    ErrorID = *Blanks
>
>   * Do some testing & branch to error section when required
> C                 SELECT
> C                     When    ( SomeCondition <> Valid )
> C                     Eval    ErrorID = "SomeErrorID"
>
> C                     When    ( SomeOtherCondition <> Valid )
> C                     Eval    ErrorID = "SomeOtherErrorID"
>
>   * Add a whole bunch of other tests here
>
> C                 ENDSL
>
>   * Error Section
>
> C                     If      ( ErrorID <> *Blanks )
> C                     Eval    DspErrInd = *On
>   *    <add additional common error handling code here)
> C                     Endif
>
> SR                    EndSR
>
> No more goto and less code.....
>
> Christopher K. Bipes          mailto:ChrisB@Cross-Check.com
> Sr. Programmer/Analyst                mailto:Chris_Bipes@Yahoo.com
> CrossCheck, Inc.              http://www.cross-check.com
> 6119 State Farm Drive         Phone: 707 586-0551 x 1102
> Rohnert Park  CA  94928               Fax: 707 586-1884
>
> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
> * This is the RPG/400 Discussion Mailing List!  To submit a new         *
> * message, send your mail to "RPG400-L@midrange.com".  To unsubscribe   *
> * from this list send email to MAJORDOMO@midrange.com and specify       *
> * 'unsubscribe RPG400-L' in the body of your message.  Questions should *
> * be directed to the list owner / operator: david@midrange.com          *
> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
>

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* This is the RPG/400 Discussion Mailing List!  To submit a new         *
* message, send your mail to "RPG400-L@midrange.com".  To unsubscribe   *
* from this list send email to MAJORDOMO@midrange.com and specify       *
* 'unsubscribe RPG400-L' in the body of your message.  Questions should *
* be directed to the list owner / operator: david@midrange.com          *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *


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.