In this case, because we are PERFORMing THRU, then GO TO exit, merely causes an iterate.
Joe On Mon, Jun 8, 2020 at 7:36 PM Frank Swarbrick <frank.swarbr...@outlook.com> wrote: > GO TO to an "exit" procedure (that is, a procedure that terminates > unconditionally terminates the program) is, in my mind, acceptable as > well. In fact, if you try to "perform" a "terminal" exit procedure the > compiler will give you a warning that your "calling" procedure will never > reach its exit. > > ________________________________ > From: IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU> on behalf > of Joe Monk <joemon...@gmail.com> > Sent: Saturday, June 6, 2020 2:49 AM > To: IBM-MAIN@LISTSERV.UA.EDU <IBM-MAIN@LISTSERV.UA.EDU> > Subject: Re: COBOL Question > > 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. > > Joe > > 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 :). > > > > --- > > Bob Bridges, robhbrid...@gmail.com, cell 336 382-7313 > > > > /* In an emergency, a drawstring from a parka hood can be used to > strangle > > a snoring tent mate. -"Camping Tips" */ > > > > -----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 > > ---------------------------------------------------------------------- > 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