BookmarkSubscribeRSS Feed
MarkGreenaway
Calcite | Level 5

I want to pass two long strings into a sas macro, like this:

%some_macro(first=this is quite a long string, two=and so is this);

I can define macros where I pass an argument like the first, but if I have two arguments like this it seems SAS gets confused, and I get errors about strings being 262 characters or longer. I suspect I should be using some sort of quoting or something, but I'm not sure exactly what to use. Any ideas?

Mark

3 REPLIES 3
art297
Opal | Level 21

Mark,

It would help if you posted an example of code that produces the error.

MarkGreenaway
Calcite | Level 5

%macro

two(first=,second=);

title

"&first &second"

;

proc freq data=hsurvey2.hsa05_adult_public;

table year;

run;

%mend

two;

%two(first=this is a long string, second=and so is this);


It turns out that this works fine. The problem in my code is something else entirely. I'll try to track that down.

Tom
Super User Tom
Super User

There is a limit on the length of a macro variable.  Should be around 32,000.

The error message you report can be suppressed by using the option NOQUOTELENMAX.

http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a002233891.htm

You would see it if your macro did something like.

data out;

   var1="&first";

run;

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

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
  • 3 replies
  • 2045 views
  • 3 likes
  • 3 in conversation