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 (November 2006, week 4)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:   Thu, 23 Nov 2006 18:10:57 -0800
Reply-To:   Stig Eide <stig.eide@GMAIL.COM>
Sender:   "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From:   Stig Eide <stig.eide@GMAIL.COM>
Organization:   http://groups.google.com
Subject:   Re: A question about how to let user defined macro returns
Comments:   To: sas-l@uga.edu
In-Reply-To:   <200611231610.kANBsYPx002299@mailgw.cc.uga.edu>
Content-Type:   text/plain; charset="us-ascii"

Gerhard Hellriegel wrote: > example: > > %macro double(x); > %let res=%eval(&x*2); > &res; > %mend; > > %let test=%double(8); > > > But be careful with the usage: > > data a; > set sashelp.class; > *double_age=%double(age); /* this will not work */ > quad_age=age*%double(2); > put quad_age; > run; > > Regards, > Gerhard > You must be aware that the macro will resolve before the program is run, so the value of age is not known at the time the macro is resolved. If you want to resolve a macro during execution, you need to use the resolve function: double_age=resolve('%double('!!put(age,2.)!!')'''); Documentation: http://support.sas.com/onlinedoc/913/getDoc/no/mcrolref.hlp/a000210258.htm Stig


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