Hi,
I am writing a %do loop with decreasing iterative value. But this doesn't work. Can anyone help?
%macro loop;
%do i=3 %to 1 by -1;
data b_&i.;
set a&i.;
run;
%end;
%mend;
%loop;
ERROR: A character operand was found in the %EVAL function or %IF condition where a numeric operand is required. The condition was: 1 by -1
ERROR: The %TO value of the %DO I loop is invalid.
ERROR: The macro LOOP will stop executing.
Use %by rather than just by in your do loop statement.
%macro loop;
%do i=3 %to 1 %by -1;
data b_&i.;
set a&i.;
run;
%end;
%mend;
%loop;
Use %by rather than just by in your do loop statement.
%macro loop;
%do i=3 %to 1 %by -1;
data b_&i.;
set a&i.;
run;
%end;
%mend;
%loop;
That worked. Thank you
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.