LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous messageNext messagePrevious in topicNext in topicPrevious by same authorNext by same authorPrevious page (May 2001, week 1)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Wed, 2 May 2001 14:00:33 -0400
Reply-To:     Myra Oltsik <moltsik@RESPONSE.COM>
Sender:       "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From:         Myra Oltsik <moltsik@RESPONSE.COM>
Subject:      Re: simple macro question - %let
Comments: To: Dan Fiscus <fiscus@AL.UMCES.EDU>
Content-Type: text/plain; charset=ISO-8859-1

On Wed, 2 May 2001 10:22:31 -0400, Dan Fiscus <fiscus@AL.UMCES.EDU> wrote:

>Hi, > >This must be an easy one, but as fairly early on in getting the >macro language, I am stumped... > >I want to store a dataset variable value into a macro variable. >I have a dataset variable called x and want to store the current >observation's value of x into the macro variable chosenx. But >if I say (from inside a data step): > >%let chosenx = x ; > >the value of chosenx becomes the string 'x'. > >Thanks for any suggestions... > >Dan Fiscus > > >-- > >Dan Fiscus >Ecologist/Research Assistant email: fiscus@al.umces.edu >Appalachian Laboratory phone: 301-689-7121 >University of Maryland C.E.S. fax: 301-689-7200 >301 Braddock Road http://www.al.umces.edu >Frostburg, MD 21532 USA

Dan,

It's not exactly easy. Here's some code I use to do what I think you want to do: [I have comments below.]

PROC SUMMARY DATA=NCLM.EARNPQ MISSING NWAY; VAR SEARNED; CLASS MASTERST; WHERE MASTERST NE 'NY'; FORMAT SEARNED DOLLAR20.2; OUTPUT OUT=STATES(RENAME=(MASTERST=ST) DROP=_TYPE_ _FREQ_) SUM=; RUN;

DATA _NULL_; SET STATES(KEEP=ST) NOBS=NO; CALL SYMPUT('OBSV',LEFT(PUT(NO,8.))); STOP; RUN;

%GLOBAL OBSV;

DATA _NULL_; SET STATES; DO I = 1 TO &OBSV; IF _N_ = I THEN DO; CALL SYMPUT('STATE'||LEFT(PUT(I,2.)),ST); END; END; RUN;

%MACRO MRESVD;

%GLOBAL Z;

%DO Z = 1 %TO &OBSV; %MSTCLM(&Q,ST=&&STATE&Z); %END;

%MEND MRESVD;

%MRESVD;

==========

On it's first pass, &&STATE&Z resolves to &STATE1. On the next pass, &STATE1 response to AZ (for Arizona). I learned this in Art Capenter's Macro class about 1-½ years ago. I don't have the code memorized, but always available when I need it.

Myra


Back to: Top of message | Previous page | Main SAS-L page