BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
sas_newbie3
Obsidian | Level 7

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?

1 ACCEPTED SOLUTION

Accepted Solutions
RW9
Diamond | Level 26 RW9
Diamond | Level 26

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

3 REPLIES 3
mkeintz
PROC Star

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

--------------------------
The hash OUTPUT method will overwrite a SAS data set, but not append. That can be costly. Consider voting for Add a HASH object method which would append a hash object to an existing SAS data set

Would enabling PROC SORT to simultaneously output multiple datasets be useful? Then vote for
Allow PROC SORT to output multiple datasets

--------------------------
PGStats
Opal | Level 21

What is the ERROR/WARNING message?

PG
RW9
Diamond | Level 26 RW9
Diamond | Level 26

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.

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

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