BookmarkSubscribeRSS Feed
Ronein
Onyx | Level 15

Hello

User define 2 macro variables

%let minYYMM=2007;

%let maxYYMM=2106;

 

I want to create another macro variable called List that will get YYMM  values between &minYYMM and &maxYYMM.

So in this case the desired value of the new macro variable  is  2007+2008+2009+2010+2011+2012+2101+2102+2103+2104+2105+2106

 

 

Thanks

 

1 REPLY 1
Kurt_Bremser
Super User

Use a DO loop with INTNX:

data _null_;
length vector $32767;
start = input("20&minyymm.01",yymmdd10.);
do while (start le input("20&maxyymm.01",yymmdd8.));
  vector=catx("+",vector,substr(put(start,yymmddn8.),3,4));
  start = intnx('month',start,1);
end;
call symputx("vector",vector);
run;

This loop can be used to directly create repeated code with CALL EXECUTE or similar.

CFC_SAS_Communities_400x225.jpg

Call for content now open!

It's your turn to help shape SAS Innovate 2027. Share your expertise and inspire the SAS community.

Submit your proposal →

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
  • 1 reply
  • 900 views
  • 0 likes
  • 2 in conversation