If you really believe this nonsense then you have never programmed
systems level code which requires cleanup of system resources such as
locks. In 2020 we should not be having this conversation any more - it's
bogus!
Nobody emulates structured programming constructs such as loops using
goto anymore. It's used to exit a routine and cleanup resources and
younger programmers don't have the silly bias that seems to stick around
here!
On 2020-06-07 1:53 AM, Bob Bridges wrote:
Oh, you need an END-IF even for a single-statement IF? I forgot; I've been
thinking in REXX too long. In that case you're close; I guess I really meant
PERFORM 1050-LOOP THRU 1050-EXIT VARYING JC FROM 1 BY 1 TO 99
1050-LOOP.
IF X > 999 GOTO 1050-EXIT END-IF.
IF FIRST-NAME = "ROBERT" GOTO 1050-EXIT END-IF.
IF TYPE <> 195 GOTO 1050-EXIT END-IF.
IF NOT SO-ON GOTO 1050-EXIT END-IF.
IF NOT SO-FORTH GOTO 1050-EXIT END-IF.
[do such and such]
1050-EXIT.
I'm happy to hear someone else admit that a GOTO is conceivable under ~any~
circumstances. In my old shop I argued for GOTOs in three very strictly limited
circumstances, the other two being end-of-section and end-of-program. Some languages
allow for this by including some flavor of "leave" statement; all I want to do
with a GOTO is to simulate that part of structured programming. But at the particular
shop I have in mind, none of that could be contemplated, because all GOTOs are evil.
---
Bob Bridges, robhbrid...@gmail.com, cell 336 382-7313
/* Law #21 of combat operations: The important things are always simple; the
simple things are always hard. */
-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf
Of Joe Monk
Sent: Saturday, June 6, 2020 04:49
I think what you mean is this:
PERFORM 1050-LOOP THRU 1059-EXIT VARYING JC FROM 1 BY 1 UNTIL JC = 99
END-PERFORM
1050-LOOP.
IF FIRST-NAME NOT = "ROBERT"
GO TO 1059-EXIT
END-IF
IF TYPE NOT = 195
GO TO 1059-EXIT
END-IF
IF NOT SO-ON
GO TO 1059-EXIT
END-IF
IF NOT SO-FORTH
GO TO 1059-EXIT
END-IF
PERFORM 1050-SUCH-AND-SUCH END-PERFORM
1059-EXIT.
EXIT.
In structured programming, it is perfectly acceptable to use GO TO within a
paragraph. It is NOT acceptable to use GO TO outside of a paragraph.
--- On Sat, Jun 6, 2020 at 12:42 AM Bob Bridges <robhbrid...@gmail.com> wrote:
I realize this is a bit of a change in subject (and it's not as if we need
yet another one), but I avoid this construction. My phobia is based on an
extreme example: In their zeal never to use GOTOs, I've frequently seen
programmers write paragraphs like this:
PERFORM 1050-LOOP VARYING JC FROM 1 BY 1 TO 99
1050-LOOP.
IF X < 1000
IF FIRST-NAME NOT = "ROBERT"
IF TYPE = 195
IF SO-ON
IF SO-FORTH
EXECUTE 1050-SUCH-AND-SUCH
END-IF
END-IF
END-IF
END-IF
END-IF
Gives me a headache to try to evaluate that. Much better, in my opinion,
to introduce ONE LOUSY "GOTO EO-PARAGRAPH" like this:
PERFORM 1050-LOOP THRU 1059-LOOP VARYING JC FROM 1 BY 1 TO 99
1050-LOOP.
IF X > 999 GOTO 1059-LOOP.
IF FIRST-NAME = "ROBERT" GOTO 1059-LOOP.
IF TYPE <> 195 GOTO 1059-LOOP.
IF NOT SO-ON GOTO 1059-LOOP.
IF NOT SO-FORTH GOTO 1059-LOOP.
EXECUTE 1050-SUCH-AND-SUCH
1059-LOOP.
Keep in mind I haven't programmed in COBOL since Y2K; I had to look up the
syntax, I probably got part of it wrong nonetheless, and I'll bet there are
easier ways to do it nowadays. In REXX, for example, they have the ITERATE
statement:
do jc=1 to 99
if x>99 then iterate
if firstname='ROBERT' then iterate
if type<>195 then iterate
if \soon then iterate
if \soforth then iterate
call suchandsuch
end
However you do it, I vastly prefer skip-to-next-item over nested Ifs. But
I confess that one single nested IF is not going to give me a headache; I
just react when I see one. Not your fault :).
-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On
Behalf Of Gibney, Dave
Sent: Friday, June 5, 2020 16:17
Using OP
IF TVOLL (IND1) NOT = HIGH-VALUE
AND SMOD (IND1) = 'B' OR 'R'
I would do
IF TVOLL (IND1) NOT = HIGH-VALUE
IF SMOD (IND1) = 'B' OR 'R'
Do the stuff
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN