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