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 (July 2006, week 3)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Fri, 21 Jul 2006 17:35:35 -0400
Reply-To:     Arthur Tabachneck <art297@NETSCAPE.NET>
Sender:       "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From:         Arthur Tabachneck <art297@NETSCAPE.NET>
Subject:      Re: How to assign values in macro variables to observations in a
              dataset.
Comments: To: mrweisu@GMAIL.COM

Does it appear to better meet your needs if you add an 'order by' statement. For example, using Dwight's code:

DATA _NULL_; DO i=1 TO 100; CALL SYMPUTX(CATS('MAC',PUT(i,8.)),RANUNI(23)); END; STOP; RUN;

%PUT _USER_;

PROC SQL; CREATE TABLE WORK.mydata AS SELECT INPUT(VALUE,32.) AS target FROM DICTIONARY.MACROS WHERE SUBSTR(NAME,1,3)='MAC' AND INPUT(SUBSTR(NAME,4),8.) BETWEEN 1 AND 100 order by INPUT(SUBSTR(NAME,4),8.); QUIT;

Art ---------- On Fri, 21 Jul 2006 12:25:26 -0700, qqzj <mrweisu@GMAIL.COM> wrote:

>Thanks Buffum: > >I double checked your code. It works very well except that the value of >macro40 was given to observation number 4. I guess that SAS do not >arrange macro values into a orderly array. > >Thanks a lot. > > >Dwight M. Buffum, MindTools, Inc. wrote: >> qqzj, >> >> I recommend using the SAS DICTIONARY.MACRO metadata table for a simple, >> one step solution. The DATA step below generates test data. >> >> DATA _NULL_; >> DO i=1 TO 100; >> CALL SYMPUTX(CATS('MAC',PUT(i,8.)),RANUNI(23)); >> END; >> >> STOP; >> RUN; >> >> >> %PUT _USER_; >> >> >> PROC SQL; >> CREATE TABLE WORK.mydata AS >> SELECT INPUT(VALUE,32.) AS target >> FROM DICTIONARY.MACROS >> WHERE SUBSTR(NAME,1,3)='MAC' >> AND INPUT(SUBSTR(NAME,4),8.) BETWEEN 1 AND 100 >> ; >> QUIT;


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