Your SAS programs, embedded in web apps and elsewhere

Processing multi-value input parameters in a stored process

Accepted Solution Solved
Reply
Contributor
Posts: 48
Accepted Solution

Processing multi-value input parameters in a stored process

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;


Accepted Solutions
Solution
‎01-31-2012 03:44 AM
Regular Contributor
Regular Contributor
Posts: 166

Re: Processing multi-value input parameters in a stored process

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;

View solution in original post


All Replies
Solution
‎01-31-2012 03:44 AM
Regular Contributor
Regular Contributor
Posts: 166

Re: Processing multi-value input parameters in a stored process

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;

Contributor
Posts: 48

Processing multi-value input parameters in a stored process

Thank you! This worked Smiley Happy

🔒 This topic is solved and locked.

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

Discussion stats
  • 2 replies
  • 223 views
  • 0 likes
  • 2 in conversation