for ciclos loops sas sas-macro

loops - ciclos - Tamaño de paso en el bucle de macro en sas



ciclos en sas (2)

Entonces quiero ejecutar un bucle anidado para mi función macro. Aquí está mi código, parece que a SAS no le gusta by -1 . ¿Hay algún código para que el segundo ciclo disminuya el paso por -1? En este caso, mi yearMix = 1982 y yearMax = 1994 .

%Macro theLoop; %Do I = &yearMin+1 %to &YearMax-1; %Do J = &YearMax-1 %to &I by -1; %Meaw; %END; %END; %MEND theLoop; %theLoop;

Tengo este error:

ERROR: Se encontró un operando de caracteres en la función% EVAL o en la condición% IF donde se requiere un operando numérico. La condición era: & I por -1
ERROR: El valor% TO del ciclo% DO J no es válido.
ERROR: la macro THELOOP dejará de ejecutarse.


Especifique su incremento en un ciclo de macro %do usando %by rather than by . Más detalles se pueden encontrar en la guía del usuario aquí .

En su código, SAS está intentando evaluar &I by -1 como valor numérico.


%let yearMin = 1982; %let yearMax = 1994; %Macro theLoop; %Do I = %eval(&yearMin+1) %to %eval(&YearMax-1); %Do J = %eval(&YearMax-1) %to &I %by -1; %put &i = &j = ; %END; %END; %MEND theLoop; %theLoop;