No offense but the FOR...NEXT example for this thread is fools folly. Not
because it is wrong. It over complicates the original premise (that was
deviated from the original thread.

The deviation became ways to validate Y or N. Fair enough and the LOOP
examples all participate in a validation pausing until Y or N is entered.

But just because the expression can be written in another way, doesn't mean
that it's a comparable replacement. In this case, IMHO, it is very
distracting.

FOR...NEXT sequences automatically imply some form of incrementing through
something. Assumption? Yes. But it's 99.44% used for incrementing and not
stalling as in your example.

Thus, the next programmer who has to read this will be mentally following
the code, processing the logic flow and when they see the validation area,
they will have to look twice and see why a FOR...NEXT loop is used for
validation.

Sure, there are many valid ways to skin each cat. But this one is a poor
example of validating a Y/N answer.

My 2 cents,
Mark Johnson

PS. The INDEX("YN",ANS,1) has a slight problem as it allows the <enter>
alone answer to pass as a valid answer. I use this all the time when I
prompt "IS THIS OKAY (Y/N/<Enter>=Y) ":;INPUT ANS. But for a pure Y or N,
the null value passes.


----- Original Message -----
From: "Jacques G." <[email protected]>
To: <[email protected]>
Sent: Monday, March 02, 2009 8:46 PM
Subject: Re: [U2] DO/WHILE vs IF THEN


> The case can be tested also if n/y are acceptable:
>
> LOOP PRINT "ENTER 'Y' OR 'N' ":;INPUT ANS,1
> UNTIL INDEX('NY',UPCASE(ANS),1) REPEAT
>
> *-- P.AM will contain a boolean value  0 for N, 1 for Y --*
> FOR X = 1 TO (X+1)
>   PRINT "ENTER 'Y' OR 'N' ":;INPUT ANS,1
>   FIND UPCASE(ANS) IN "N":@AM:"Y" SETTING P.AM THEN P.AM -= 1 ; EXIT
> NEXT X
>
>
>
> ----- Original Message ----
> From: Keith Johnson [DATACOM] <[email protected]>
> To: [email protected]
> Sent: Monday, March 2, 2009 7:38:16 PM
> Subject: Re: [U2] DO/WHILE vs IF THEN
>
> Mark Johnson suggested the following change
>
> ><Before>
> >GOOD.ANS=FALSE
> >LOOP UNTIL GOOD.ANS DO
> >   PRINT "ENTER 'Y' OR 'N' ":;INPUT ANS
> >   IF ANS="Y" OR ANS="N" THEN GOOD.ANS=TRUE REPEAT
> >
> ><after>
> >LOOP WHILE TRUE DO
> >   PRINT "ENTER 'Y' OR 'N' ":;INPUT ANS
> >   IF ANS="Y" OR ANS="N" THEN EXIT
> >REPEAT
>
> These forms all work (Universe 10.2.0)  and are progressively shorter
> than the above
>
>     LOOP
>        PRINT "ENTER 'Y' OR 'N' ":;INPUT ANS
>        IF ANS="Y" OR ANS="N" THEN EXIT
>     REPEAT
>
>
>     LOOP
>        PRINT "ENTER 'Y' OR 'N' ":;INPUT ANS
>     UNTIL ANS="Y" OR ANS="N" DO
>     REPEAT
>
>
>     LOOP
>        PRINT "ENTER 'Y' OR 'N' ":;INPUT ANS
>     UNTIL ANS="Y" OR ANS="N" REPEAT
>
>
>     LOOP PRINT "ENTER 'Y' OR 'N' ":;INPUT ANS
>     UNTIL ANS="Y" OR ANS="N" REPEAT
>
>
> Ray Wurlod was a great proponent of the LOOP WHILE READNEXT ID format.
> I believe it may not compile on some MV systems.
>
>
> Regards, Keith
> -------
> u2-users mailing list
> [email protected]
> To unsubscribe please visit http://listserver.u2ug.org/
> -------
> u2-users mailing list
> [email protected]
> To unsubscribe please visit http://listserver.u2ug.org/
-------
u2-users mailing list
[email protected]
To unsubscribe please visit http://listserver.u2ug.org/

Reply via email to