James - Using BREAK to exit a WHILE loop is the proper way to do this. Read the R:BASE Help file under WHILE. You'll see that issuing the ENDWHILE is the only way to release the memory that was used when the WHILE was initiated. AND that GOTO is NOT the proper way to exit the loop.
If you REALLY don't want to use the BREAK, then just re-write your WHILE loops and change them all to GOTO loops instead. Sami ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Sami Aaron Software Management Specialists 913-915-1971 [EMAIL PROTECTED] -----Original Message----- From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of James Hageman Sent: Friday, August 05, 2005 6:17 PM To: RBG7-L Mailing List Subject: [RBG7-L] - Re: exiting a WHILE loop in an eep It's the code that follows the while loop I am trying to avoid if I break out of the while loop before it terminates normally. I know I can break out and then use an if statement to check how the while loop was terminated but I was hoping there was a different way. On Aug 5, 2005, at 5:06 PM, Albert Berry wrote: > James, the only safe way to exit a loop is using BREAK. A RETURN > inside a WHILE loop is an > accident waiting to happen. Without seeing all your code, It is > possible that you could use the > following WHILE statement: > > WHILE SQLCODE <> 100 AND vEscape <> 'T' THEN > > You could also use an IF;ELSE;ENDIF inside the loop to skip over > the code you don't want to run. > > --- James Hageman <[EMAIL PROTECTED]> wrote: > > >> But that would just put me outside the while loop and I don't want >> any >> more code to run if I BREAK out of the while loop. >> >> I could do this, put the same IF/ENDIF inside and outside of the >> while >> loop but it seems silly. >> >> WHILE ... >> IF vescape = 'T' THEN >> BREAK >> ENDIF >> ENDWHILE >> IF vescape = 'T' THEN >> return >> ENDIF >> other code .... >> >> >> >> >> >> >> >> Albert Berry wrote: >> >> >>> I believe you would be safer if you replaced part of the code >>> with 'BREAK' >>> >>> DECLARE c1 SCROLL CURSOR FOR SELECT ... >>> OPEN c1 >>> WHILE SQLCODE <> 100 THEN >>> FETCH c1 INTO ... >>> -- This has already been covered in the WHILE ... >>> -- IF SQLCODE = 100 THEN >>> -- BREAK >>> -- ENDIF >>> INSERT INTO ... >>> EDIT USING ... >>> -- At this point, a BREAK would be cleaner >>> IF vescape = 'T' THEN >>> BREAK >>> ENDIF >>> >>> ENDWHILE >>> CLEAR ALL V >>> DROP CURSOR c1 >>> RETURN <-- THIS OK? >>> >>> >>> --- James Hageman <[EMAIL PROTECTED]> wrote: >>> >>> >>> >>> >>>> The following code runs with no errors but I am wondering if >>>> it's Kosher. >>>> Specificaly if vescape = 't' and I return to the form that calls >>>> the eep >>>> in the middle of the while loop is that going to cause problems >>>> for me >>>> later? >>>> >>>> ---------------------------------------------------------------- >>>> --other code blah blah >>>> -- >>>> DECLARE c1 SCROLL CURSOR FOR SELECT ... >>>> OPEN c1 >>>> WHILE SQLCODE <> 100 THEN >>>> FETCH c1 INTO ... >>>> IF SQLCODE = 100 THEN >>>> BREAK >>>> ENDIF >>>> INSERT INTO ... >>>> EDIT USING ... >>>> >>>> IF vescape = 'T' THEN >>>> CLEAR ALL V >>>> DROP CURSOR c1 >>>> RETURN <-- THIS OK? >>>> ENDIF >>>> >>>> ENDWHILE >>>> DROP CURSOR c1 >>>> >>>> --other code follows that I don't want run if VAR vescape = 'T' >>>> ... >>>> ... >>>> ... >>>> return >>>> --eof--------------------------------------------------------- >>>> >>>> >>>> >>>> >>>> >>> >>> >>> Albert Berry >>> Management Consultant >>> RR2 - 1252 Ponderosa Drive >>> Sparwood BC, V0B 2G2 >>> Canada >>> (250) 425-5806 >>> (250) 425-7259 >>> (708) 575-3952 (fax) >>> [EMAIL PROTECTED] >>> >>> >>> >>> >> >> >> > > > Albert Berry > Management Consultant > RR2 - 1252 Ponderosa Drive > Sparwood BC, V0B 2G2 > Canada > (250) 425-5806 > (250) 425-7259 > (708) 575-3952 (fax) > [EMAIL PROTECTED] > >
