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]



Reply via email to