SAS Programming

DATA Step, Macro, Functions and more
BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
sathya66
Barite | Level 11

Hi All,

it has to create 

sashelp

aa

dd

ss

dd data sets but macro is not resolving.

Thanks,

S

data test;
infile cards;
input a$;
cards;
sashelp
aa
dd
ss
dd
;
run;

proc sql noprint;
	select count(*) into :numb
	from test;
	;
quit;
%macro a;
%do i=1 %to &numb.;
	data _null_;
	set test (firstobs=&i obs=&i);
	call symput("a&&i",trim(left(a)));
	run;
	data work.&a&i._01;
	  set sashelp.class;
	  run;
	  %end;
%mend;

%a;

 

1 ACCEPTED SOLUTION

Accepted Solutions
Astounding
PROC Star

This line is wrong:

 

data work.&a&i._01;

 

It should be:

 

data work.&&a&i.._01;

 

This piece won't cause an error, but is mildly misleading:

 

call symput("a&&i", trim(left(a)));

 

It should become:

 

call symputx("a&i", a);

 

Only one ampersand is needed, and switching to SYMPUTX removes all leading and trailing blanks.

View solution in original post

2 REPLIES 2
Astounding
PROC Star

This line is wrong:

 

data work.&a&i._01;

 

It should be:

 

data work.&&a&i.._01;

 

This piece won't cause an error, but is mildly misleading:

 

call symput("a&&i", trim(left(a)));

 

It should become:

 

call symputx("a&i", a);

 

Only one ampersand is needed, and switching to SYMPUTX removes all leading and trailing blanks.

PaigeMiller
Diamond | Level 26

You have too many & in your code.

 

Replace the lines you typed with these

 

call symputx("a&i",a);

and

data work.a&i._01;

Hint: debugging these things is much easier if your code begins with

 

options mprint;
--
Paige Miller

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 1008 views
  • 0 likes
  • 3 in conversation