macro ejemplos sas sas-macro

ejemplos de macros en sas



lĂ­mite% do% mientras iteraciones (1)

Quiero ejecutar un ciclo while / until en una función de macro, y tener su número máximo de iteraciones limitadas. Encontré cómo hacerlo en sas ''habituales'':

data dataset; do i=1 to 10 until(condition); /*10 iterations max */ /* stuff */ end; run;

pero si lo intento en una función de macro:

%macro mf; data dataset; %do i=1 %to 10 %until(nrow(X)>10); /*10 iterations max */ /* stuff */ %end; run; %mend; %mf;

Obtengo estos errores:

ERROR: Improper use of macro reserved word until. ERROR: A dummy macro will be compiled. ERROR: Required operator not found in expression: 10 %until(nrow(X)>10) ERROR: The %TO value of the %DO I loop is invalid. ERROR: The macro MF will stop executing.

¿Cuál es la forma correcta de limitar iteraciones de bucles en macro-funciones?

Aquí hay un conjunto de datos en caso de que quiera probar ideas:

DATA dataset; input X Y Z; cards; 10 0 20 50 20 60 90 60 30 run;


El siguiente es un ejemplo de lo que puede usar:

%macro mf; %let i=0; %do %until(&onechar=e or &i=10); %let i=%eval(&i+1); %let onechar=%substr(abcdefghij,&i,1); %end; %put onechar=&onechar; %put i=&i; %mend mf; %mf;

El macro loop se detiene si encuentra "e" o i = 10.