| Date: | Wed, 12 Mar 1997 17:35:32 -0600 |
| Reply-To: | txplltw@UABCVSR.CVSR.UAB.EDU |
| Sender: | "SAS(r) Discussion" <SAS-L@UGA.CC.UGA.EDU> |
| From: | Todd Weiss <txplltw@UABCVSR.CVSR.UAB.EDU> |
| Subject: | Re: Marco assistance |
|
| In-Reply-To: | <9703121547.AA16232@UABCVSR.cvsr.uab.edu> |
| Content-Type: | TEXT/PLAIN; charset=US-ASCII |
|---|
Hi David,
Off the top of my head, something like the
following could be modified to suit your needs:
data test;
input a b c;
cards;
1 . .
2 . .
4 1 .
. 2 1
2 3 4
;
run;
%let varl=a b c;
%macro parse(list);
%let i=1;
%do %while (%scan (&list, &i) ne );
%let val=%scan (&list, &i);
proc freq data=test;
tables &val / out = &val;
%*data step stuff;
Data &val;
set &val;
if &val ne .;
run;
%let i=%eval(&i +1);
%end;
%mend;
%parse(&varl)
Good Luck,
Todd Weiss
On Wed, 12 Mar 1997, Alderton, David wrote:
> Does anyone have an example of a simple macro that accepts a list of
> unrelated items and uses the list to, e.g., subset datasets?
>
> Right now I'm using a %let / %include pair like this:
>
> %let oi=TB;
> %include "&oi_path";
>
> %let oi=PLB;
> %include "&oi_path";
>
> etc.,
>
> The include file consists of a bunch of simple file manipulations dependent
> upon the value of &oi, e.g., as below (actually, 4 sets of the following
> within each include).
>
> proc freq data=New_ASD ;
> weight asd_wgt ;
> table &oi / out=asdwt noprint ;
> by dyr;
> run;
>
> data asdwt;
> set asdwt;
> retain cnt 0 ;
> by dyr;
> if first.dyr then cnt=count;
> else cnt=cnt+count;
> asdwtper=percent;
> asdwt=count;
> asdwt_N=cnt;
> label asdwtper='ASD weighted %';
> if &oi='0' then delete;
> drop &oi count cnt percent;
> run;
>
> One of the problems I'm having is that the OI list is an unrelated series of
> character strings, TB, PC, MAV, WAST, KS, CERV_CA, etc. (27 of them is the
> maximum) and I don't know how to frame this in a macro context. The include
> works just fine but I thought I would look for a macro solution to learn how
> to do it and to keep all of the code in the same file.
>
> Any suggestions or samples would be greatly appreciated. I've been looking
> at the SAS guide to macro processing (version 6) and SAS Macro Facility but
> I cannot find an example that appears to be similar enough for me to grasp
> the relationship. Most of the examples use names generated from a list,
> like week1, week2, week3, etc.
>
> Thanks, David.
> David L. Alderton, Ph.D.
> Centers for Disease Control and Prevention
> HIV/AIDS Surveillance Branch
> Atlanta, GA -- DLA5@CDC.gov
>
|