|
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
|