DATA Step, Macro, Functions and more

My if do loop is not working

Accepted Solution Solved
Reply
Contributor
Posts: 26
Accepted Solution

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
Super User
Posts: 7,401

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.

View solution in original post


All Replies
Valued Guide
Posts: 797

Re: My if do loop is not working

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

Respected Advisor
Posts: 4,649

Re: My if do loop is not working

What is the ERROR/WARNING message?

PG
Solution
‎11-30-2016 08:46 PM
Super User
Super User
Posts: 7,401

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.

Need further help from the community? Please ask a new question.

Discussion stats
  • 3 replies
  • 197 views
  • 0 likes
  • 4 in conversation