Loop a Do While in an IF

I have a DO WHILE statement and in that statement there is an IF ststement, is it possible to loop the origional DO ststement in the IF ststement
LVL 1
ict-torquilclarkAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
klakkasConnect With a Mentor Commented:
Since you are using vb6 (I thought it was .NET), the only way to do this is with the GOTO statement.

Using your example:

x = 1
Do While x < 10
     
      IF x = 3 THEN
          x = x + 2  
          GOTO ContinueLoop
      END IF

      x = x + 1

ContinueLoop:
loop
0
 
Meir RivkinFull stack Software EngineerCommented:
do u mean that the DO WHILE should be inside the IF statement?can u post the code?
0
 
ict-torquilclarkAuthor Commented:
Sorry - i didnt explain very well

I I know the code doesnt achieve anything but it just came up with it as an example of what i am trying to do.

in the code x should never = 4

when i do it i get the error

"loop without DO"
x = 1
Do While x < 10

IF x = 3 THEN
    x = x + 2  
    loop
END IF

x = x + 1
loop

Open in new window

0
Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

 
klakkasCommented:
I am not sure I undestand, but here is something that might solve your problem.

Do while Finished = False
       if I_Want_To_Exit=true then
              Exit Do
       End If
       If I_Want_to_Move_to_Next = true then
              Continue Do
       End If
       <Your Normal Code>
Loop

0
 
klakkasCommented:
After reading your second post, "Continue Do" is your solution.

This command will move the code to the "Do" statement.
0
 
Meir RivkinFull stack Software EngineerCommented:
try this:

x = 1
Do While x < 10

IF x = 3 THEN
    x = x + 2
ELSE
   x = x + 1
END IF

loop
0
 
Chris BottomleyCommented:
How about the following ... I have placed a stop itf it hits 4 ... which it doesn't.

You can change the line:
If x = 4 Then Stop

to for example 3 to see it stop since all other values are processed

Chris
    x = 1
    Do While x < 10
        If x = 3 Then
            x = x + 1
        End If
        x = x + 1
        If x = 4 Then Stop
    Loop

Open in new window

0
 
Chris BottomleyCommented:
SLightly modified to support a demo output

Chris
    x = 0
    Do While x < 10
        x = x + 1
        If x = 4 Then
            x = x + 1
        End If
        If x = 4 Then
            Stop
        Else
            Debug.Print x
        End If
    Loop

Open in new window

0
 
ict-torquilclarkAuthor Commented:
basically i need it to stop the current loop and continue on with the next loop if the value of the if is true
0
 
klakkasCommented:
As I said above my friend, the command

Continue Do

will do exacty that.
0
 
Chris BottomleyCommented:
Removing other aspects then .. see the comment this is where you your bit ... and it isn't triggered if x = 4

Chris
    Do While x < 10
        x = x + 1
        If x <> 4 Then
            ' do your stuff
        End If
    Loop

Open in new window

0
 
ict-torquilclarkAuthor Commented:
I have tried Continue do and it is not recognised as a command

i am using vb6...?
0
 
Chris BottomleyCommented:
The only way??? - not so, see my earlier post.

Chris
0
 
klakkasCommented:
chris_bottomley, yes there are several things you can do to work around the need for a continue statement.

Still, if you really need the "Continue Do" functionality, the way to go is with GOTO.
0
 
VBClassicGuyCommented:
Your original code will work with a slight modification:
x = 1
Do While x < 10
   IF x = 3 THEN
      x = x + 2
   Else
      x = x + 1
   END IF
Loop  
Simple...
0
 
Meir RivkinFull stack Software EngineerCommented:
@VBClassicGuy

like my suggestion...
0
 
Chris BottomleyCommented:
For my education why did you select the option:

Do While x < 10
            ' do your stuff
      IF x = 3 THEN
          x = x + 2  
          GOTO ContinueLoop
      END IF

      x = x + 1

ContinueLoop:
loop

It seems much more complex than:

    Do While x < 10
        x = x + 1
        If x <> 4 Then
            ' do your stuff
        End If
    Loop
 
i.e. 5 lines and a jump label as compared to two lines without.  (Jumps are genrally considered bad practice though sometimes are unavoidable.

ALso note my method doesn't care what value you start with ... the accepted solution will fall over when starting at 4 - not critical if you always intend to start on 1 but nonetheless more risky.

Chris
0
 
klakkasCommented:
My friends, I agree that the goto statement in VB6 should only be used for Error Handling and that the correct programming technique is to avoid jumping around the code and creating spagetti code.

BUT, sometimes it is the easiest way around a problem. In the example that ict-torquilclark posted, it wouldn't make any sense. But in a loop where there are several exit positions spread around the loop, maybe it is the correct way to go.
0
 
aikimarkCommented:
IMHO: The selected comment is a poor solution.

Have a look at this relevant article.
http://www.experts-exchange.com/A_2755.html

aikimark
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.