Help using Base SAS procedures

sas macro does not output the correct values

Accepted Solution Solved
Reply
Contributor
Posts: 33
Accepted Solution

sas macro does not output the correct values

Hi, can you please tell me what is wrong with my code? I get the following error when I run it: 

 

WARNING: Apparent symbolic reference J not resolved.
547 %put &j;
&j
548 %put &m;
WARNING: Apparent symbolic reference M not resolved.
&m
549 %put &r;
WARNING: Apparent symbolic reference R not resolved.
&r
550 %put &s;
WARNING: Apparent symbolic reference S not resolved.
&s

 

 

Here is my code: 

 

%LET alp=0.05;
%LET nn=30;
%LET side=twosided;


%macro calc(alp,nn,side);
%let side=%upcase(&side);
%if &side=TWOSIDED %then %do;
%let p1=%sysevalf(&alp/2);
%end;
%else %do; %let p1=&alp; %end;
%let p2=%sysevalf(1-&p1);
%let np1=%sysevalf(&nn*&p1);
%let np2=%sysevalf(&nn*&p2);
%LET m=%sysevalf(&np2,floor);
%if %sysevalf(&np1,floor)=0 %then %do;
%let j=1; %end;
%else %do;
%let j=%sysevalf((&np1,floor); %end;
%let r=%sysevalf(&np1+1,floor);
%let s=%sysevalf(&np2+1,floor);
data getit;
j=&j;
m=&m;
r=&r;
s=&s;
run;
%mend calc;
%calc(alp=&alp,nn=&nn,side=&side);
%put &j;
%put &m;
%put &r;
%put &s;

 

 

Thanks in advance!


Accepted Solutions
Solution
‎09-25-2015 06:23 AM
Super User
Posts: 19,772

Re: sas macro does not output the correct values

Also, macro variables declared inside an array are local to the macro, they disappear when the macro ends. Create a global set of macro variables first and you shouldn't have that issue.

%global j m r s;

View solution in original post


All Replies
Super User
Posts: 19,772

Re: sas macro does not output the correct values

Without reading thoroughly or much, comparisons tend to be case sensitive, ie twosided IS NOT EQUAL to TWOSIDED
Solution
‎09-25-2015 06:23 AM
Super User
Posts: 19,772

Re: sas macro does not output the correct values

Also, macro variables declared inside an array are local to the macro, they disappear when the macro ends. Create a global set of macro variables first and you shouldn't have that issue.

%global j m r s;
Contributor
Posts: 33

Re: sas macro does not output the correct values

Thanks Reeza! I put the %global j m r s;

and it worked! 

 

Thanks a lot! Smiley Happy

🔒 This topic is solved and locked.

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

Discussion stats
  • 3 replies
  • 263 views
  • 1 like
  • 2 in conversation