Date: Mon, 17 Jun 2002 15:54:36 -0400
Reply-To: Steve Bloom <steve@WHITEHURST-ASSOCIATES.COM>
Sender: "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From: Steve Bloom <steve@WHITEHURST-ASSOCIATES.COM>
Subject: Re: simplifying a macro
In-Reply-To: <sd0ded57.059@dhss.state.mo.us>
Content-Type: text/plain; charset="us-ascii"
One approach is to create a temporary file and then us %include;
data _null_;
set input_data;
file 'temp.sas';
put "%let hosp ='" var1 +(-1) "';";
put "%let select1 =" var2 +(-1) ";";
put '%discharg;';
run;
%include 'temp.sas';
-----Original Message-----
From: SAS(r) Discussion [mailto:SAS-L@LISTSERV.UGA.EDU]On Behalf Of
Frank Schiffel
Sent: Monday, June 17, 2002 3:08 PM
To: SAS-L@LISTSERV.UGA.EDU
Subject: simplifying a macro
I've written:
%macro discharg;
data it;
set i;
if hidihosp = &hosp. then output;
run;
proc surveyselect data=it n=&select1. method=srs out=file1;
run;
proc append base=final data=file1 force;
run;
%mend discharg;
%LET hosp ='260107'; %LET select1=48; %discharg;
%LET hosp ='260131'; %LET select1=15; %discharg;
%LET hosp ='260037'; %LET select1=35; %discharg;
which works.
the question is, can I input some sort of file for the hosp and select1
information instead of hardcoding it into the macro. i.e. can the line
%LET hosp ='260037'; %LET select1=35; %discharg;
instead of being repeated for a number of hospitals, be changed to
%LET hosp ='var1'; %LET select1=var2; %discharg;
where there is a data set with
var1 var2
260107 48
260131 15
etc
so that somebody else can change that dataset which is input into the macro?