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
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.