One of the things I like about using CASE's After all the checks you think there should be are done, you can setup the CASE 1 (or CASE -1) section to get all those inputs that normal people wouldn't enter.
George > -----Original Message----- > From: owner-u2-us...@listserver.u2ug.org [mailto:owner-u2- > us...@listserver.u2ug.org] On Behalf Of Laurie Blain > Sent: Monday, March 30, 2009 10:54 AM > To: u2-users@listserver.u2ug.org > Subject: Re: [U2] DO/WHILE vs IF THEN > > Another 2 cents .... > I agree with Charlie. You have to think like an end user when you ask > for > input. > At one time I even included a beep if the end user entered anything > outside of > range. > > > > > > Laurie > Blain > > Unidata Programmer Analyst > > Live, > > Love, > > Code! > > 614-804-7237 > > Columbus, Ohio > > laurie_bl...@yahoo.com > > > > --- On Mon, 3/30/09, Charlie Noah <cwn...@comcast.net> wrote: > From: Charlie Noah <cwn...@comcast.net> > Subject: Re: [U2] DO/WHILE vs IF THEN > To: u2-users@listserver.u2ug.org > Date: Monday, March 30, 2009, 5:00 AM > > Another 2 cents here. If not using a global input routine, I usually > use > this syntax: > LOOP > prompt, position cursor, whatever > INPUT ANS > ANS = UPCASE(ANS) or ANS = OCONV(ANS, 'MCU') if you > don't have > UPCASE > UNTIL ANS MATCHES 'Y]N' DO ] is an actual value mark > error message > REPEAT > Most programmers forget to upcase the input, which frustrates users > who > just > popped back into your application window from Word, Excel or some > other > Windows program. What a simple thing to do to makes users really > happy. > Like it, don't like it, it's all the same to me. This thread has > certainly > shown that there are many ways to skin a cat, but no matter which > one you > pick, the cat's not going to like it very much. ;-) > Best regards and "Hi" to some very familiar names I haven't > corresponded > with in a long time, > Charlie Noah > Inland Truck Parts Company > On 3/6/2009 12:02 AM, MAJ Programming wrote: > > 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." <jacque...@yahoo.com> > To: <u2-users@listserver.u2ug.org> > 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] <kei...@datacom.co.nz> > To: u2-users@listserver.u2ug.org > 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 > u2-users@listserver.u2ug.org > To unsubscribe please visit http://listserver.u2ug.org/ > ------- > u2-users mailing list > u2-users@listserver.u2ug.org > To unsubscribe please visit http://listserver.u2ug.org/ > > ------- > u2-users mailing list > u2-users@listserver.u2ug.org > To unsubscribe please visit http://listserver.u2ug.org/ > ------- > u2-users mailing list > u2-users@listserver.u2ug.org > To unsubscribe please visit http://listserver.u2ug.org/ > ------- > u2-users mailing list > u2-users@listserver.u2ug.org > To unsubscribe please visit http://listserver.u2ug.org/ ------- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/