One of the ways I avoid too many nested IF statements is to use straddling
DO/ENDDO around code that may require several "let's get outta here now"
moments. For example :
DO ,
Some code
DOEXIT (TM,flag,bit,NO)
...
Some more code
DOEXIT (CLC,field,NE,value)
...
Call some subroutine
DOEXIT (LTR,R15,R15,NZ)
...etc
ENDDO
You could also label the "DO" (eg "MAIN") and then use something like "ASMLEAVE
MAIN" from anywhere later in the logic.
Rob Scott
Lead Developer
Rocket Software
275 Grove Street * Newton, MA 02466-2272 * USA
Tel: +1.617.614.2305
Email: [email protected]
Web: www.rocketsoftware.com
-----Original Message-----
From: IBM Mainframe Assembler List [mailto:[email protected]] On
Behalf Of Johanson, Adam
Sent: 03 February 2011 18:42
To: [email protected]
Subject: Re: Best (or any) practices to rewrite "spaghetti"
John Ehrman wrote:
> There's no reason your SP macro code can't include a jump to an error handler
> when an error occurs.
> Donald Knuth once wrote a scholarly article called "Structured Programming
> with GOTO Statements" where he showed that
> attempts to be "purely structured" were often more obscure than using a GOTO
> when it was simplest.
Yeah, what they said.
I recently changed a couple of multi-thousand-line programs to use SPMs
and my first thought was that I was going to eliminate all of the branches in
them. But as I got going, it became pretty apparent that to do so would require
things that made the code a little bit less readable, like lengthening
IF-blocks and adding a couple of more indentation spacings to blocks that
already had a fair amount of indentation to them.
Then, I told myself that the whole point of the exercise was to make
the code more readable, so a branch to a return-to-caller label every now and
then didn't really defeat the purpose and actually _did_ help things. IMHO,
rather than seeing a big nested IF statement and chasing down the end point
just to figure out that you're gonna return to the caller is a bit more
involved than realizing, "Oh, I'm just getting out of Dodge."
And you've probably come across it in the SHARE presentations that
you've seen, but if you're going to do this, download Ed Jaffe's FLOWASM exit.
It makes life easier.
Adam Johanson
IMS Systems Programming
USAA