I'm trying to generate a stored process that allows end users to select more than one "NOS" code, while also selecting a specific date range. However, happens when I run the stored process.
libname IDB "/res/IDB/updates";
%macro noslist;
%global nos0;
/* If more than one nos value was selected then cycle through the values */
%if %eval(&nos0 ge 2) %then %do;
%do i=1 %to &nos0;
&&nos&i
%end;
%end;
/* If only one nos value was selected */
%else &nos
%mend noslist;
%stpbegin;
data test;
set idb.cv00on;
/* Keep the observation ONLY if the following conditions are True */
if (filedate >= "&FILEDATE_MIN"d and filedate <= "&FILEDATE_MAX"d) then;
if nos in(%noslist);
run;
%stpbegin;
proc print data=test;
run;
%stpend;
I can generate output with a single value for NOS, but agin, not with multiple values.
libname IDB "/res/IDB/updates";
data work.test;
set idb.cv00on;
where (NOS = &NOS) and (filedate between "&FILEDATE_MIN"d and "&FILEDATE_MAX"d);
run;
%stpbegin;
proc print data=work.test;
run;
%stpend;
Hi,
Can you check and see if this works for you ... Cannot Test at my end right now...
%stpbegin;
libname IDB "/res/IDB/updates";
%macro data();
data work.test;
set idb.cv00on;
where
(NOS in
(
%DO I = 1 %TO &NOS_COUNT;
%if &i =1 %then %do;
&nos
%end;
%else %do;
&&nos&i
%end;
%END;
)
)
and (filedate between "&FILEDATE_MIN"d and "&FILEDATE_MAX"d);
run;
%mend;
%data
proc print data=work.test;
run;
%stpend;
Hi,
Can you check and see if this works for you ... Cannot Test at my end right now...
%stpbegin;
libname IDB "/res/IDB/updates";
%macro data();
data work.test;
set idb.cv00on;
where
(NOS in
(
%DO I = 1 %TO &NOS_COUNT;
%if &i =1 %then %do;
&nos
%end;
%else %do;
&&nos&i
%end;
%END;
)
)
and (filedate between "&FILEDATE_MIN"d and "&FILEDATE_MAX"d);
run;
%mend;
%data
proc print data=work.test;
run;
%stpend;
Thank you! This worked
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.