Usando% eval es suficiente, siempre y cuando sólo se requiere la aritmética de enteros. Si necesita realizar una aritmética de coma flotante con variables macro, debe usar% sysevalf en su lugar.
La mayoría de las funciones escalonadas de datos se pueden aplicar directamente a las variables macro a través de uno de dos métodos:
1. %function()
2. %sysfunc(function())
Para muchas de las funciones más utilizadas, hay equivalentes macro exactas, y todo lo que tiene que hacer es agregue un% al frente del nombre de la función. Las funciones que no tienen macroequivalentes exactos generalmente se pueden hacer para aceptar una variable de macro llamándolas dentro de% sysfunc(). N.B. funciones de paso de datos que normalmente esperan que una cadena envuelta en comillas simples falle cuando se llama en un fragmento de código de macro a través de% sysfunc() a menos que elimine las comillas. P.ej.
data _null_;
x = rand('uniform');
run;
funciona bien en un paso de datos, sino para dar una variable macro el mismo valor en un trozo de código de macro, que tendría que utilizar
%let x = %sysfunc(rand(uniform));
Esto se debe a que en el entorno macro, SAS interpreta el texto uniforme como una cadena, mientras que en un paso de datos SAS interpretaría el texto sin comillas como el nombre de una variable.