Version 9.4 The SAS source code contains several equations and each is numbered. The macro CountPrimaryResults counts the number of observations that are Primary. It has parameters of inputdataset, outputdataset, and equation_number. %macro CountPrimaryResults(inputdataset=,outputdataset=,equation_number=);
proc sql;
create table work.&outputdataset as
select Constituent_Name, count(Constituent_Name) as PrimaryResultsCount
from work.&inputdataset
where Result_Type in ('PRIMARY_RESULT')
group by Constituent_Name;
quit;
data work.&outputdataset;
set work.&outputdataset end=eof;
retain flag 0;
if PrimaryResultsCount le 5 then do;
Warning=Constituent_Name;
flag=1;
end;
if eof and flag=1 then call symputx('check','failed');
else call symputx('check','passed');
run;
%put ✓
%mend CountPrimaryResults; I would like to create a global macro within CountPrimaryResults that has "passed" or "failed" with the equation number as a part of the macro variable created within symputx. For equation 7, the call to the macro was:
%CountPrimaryResults(inputdataset=feedunitdose,outputdataset=countfeedunitdose,equation_number=7); I want a global macro check7 with the result of "passed" or "failed". This is what I tried: %macro CountPrimaryResults(inputdataset=,outputdataset=,equation_number=);
proc sql;
create table work.&outputdataset as
select Constituent_Name, count(Constituent_Name) as PrimaryResultsCount
from work.&inputdataset
where Result_Type in ('PRIMARY_RESULT')
group by Constituent_Name;
quit;
data work.&outputdataset;
set work.&outputdataset end=eof;
retain flag 0;
if PrimaryResultsCount le 5 then do;
Warning=Constituent_Name;
flag=1;
end;
if eof and flag=1 then call symputx('chk&equation_number','failed');
else call symputx('chk&equation_number','passed');
run;
%put &chk&equation_number;
%mend CountPrimaryResults; The warning message reads: WARNING: Apparent symbolic reference CHK not resolved. &chk7 but reference to %put &chk7 also doesn't work (echos &chk7) within or outside the macro. Thank you, Jane
... View more