BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
bncoxuk
Obsidian | Level 7

%macro break(byval);
  data work.age_&byval;
    set work.sorted(where=(age=&byval));
  run;
%mend;
proc sort data=sashelp.class out=work.sorted;
  by age;
run;
options mprint;
data _null_;
  set work.sorted;
  by age;
  if first.age then call execute('%break('||age||')');
run;

1 ACCEPTED SOLUTION
5 REPLIES 5
art297
Opal | Level 21

concatenation

bncoxuk
Obsidian | Level 7

Sorry I don't understand why there is concatenation here. The files are produced as age_11, age_12...

art297
Opal | Level 21

It is concatenating the string that is being sent.  In short, it is submitting:

%break(16)

which will run the macro with the variable's value


bncoxuk
Obsidian | Level 7

Can I ask how '||age||' became the value of the variable?

Thanks for help.

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
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
  • 5 replies
  • 1394 views
  • 0 likes
  • 2 in conversation