Solved
Contributor
Posts: 28

# My if do loop is not working

I added if condition but it seems not applied.

``````if state= 3 then
do i = 1 to 4;
if a[2*i-1] NE 0 then
do;
b[4*i-3] = c[i] - a[(2*i-1)];
b[4*i-2] = b[4*i-3] / a[(2*i-1)];
end;
if a[2*i] NE 0 then
do;
b[4*i-1] = c[i] - a[2*i];
b[4*i] = b[4*i-1] / a[2*i];
end;
end;``````

Why?

Accepted Solutions
Solution
‎11-30-2016 08:46 PM
Super User
Posts: 9,799

## Re: My if do loop is not working

What is this code in?  It seems to me to be invalid SAS code.  The if syntax is:

if <logic> then <result>;

Or for multiple statements:

if <logic> then do;

<results>;

end;

So in your code it should start:

if state=3 then do;

do i=1 to 4;

...;

end;

end;

As a tip for your questions:

- Post test data, in the form of a datastep in the post.

- Show what the output should look lke

- Explain any logic

A question, what are all those arrays for, are you sure they are all within bounds?  I would guess that there are simpler methods to do this, but without information can't provide.

All Replies
Posts: 1,387

## Re: My if do loop is not working

How do you know it's "not applied"? Show the unexpected results.

Posts: 5,611

## Re: My if do loop is not working

What is the ERROR/WARNING message?

PG
Solution
‎11-30-2016 08:46 PM
Super User
Posts: 9,799

## Re: My if do loop is not working

What is this code in?  It seems to me to be invalid SAS code.  The if syntax is:

if <logic> then <result>;

Or for multiple statements:

if <logic> then do;

<results>;

end;

So in your code it should start:

if state=3 then do;

do i=1 to 4;

...;

end;

end;

As a tip for your questions:

- Post test data, in the form of a datastep in the post.

- Show what the output should look lke

- Explain any logic

A question, what are all those arrays for, are you sure they are all within bounds?  I would guess that there are simpler methods to do this, but without information can't provide.

☑ This topic is solved.