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

I am an experienced developer in everthing but SAS.

 

I have a Dataset --->   "Periods" with a single column and 12 periods:

 

YYYYPP

201605

201604

201603

201602

....

...

 

I want step thru each data format in the Periods table, run an query to pull based on each of the 12 dates, by setting the current period equal to a variable and using the variable as criteria for the pull. 

 

I can do all parts of this except the looping part of the code. 

This is my approach and I can't get it to work.

 

%Macro macro1;

%Do i = 1 %To 12 %By 1;

 

call symputx ('YYYYPP',trim(YYYYPP));

 

RunQuery using &YYYYPP.

 

%end

%Mend macro1; %macro1;

 

Any Help is appreciated in advance.

 

Thank you.

 

1 ACCEPTED SOLUTION

Accepted Solutions
Astounding
PROC Star

You're moving in the right direction.  Add a semicolon at the end of the %END statement, and embellish on the CALL SYMPUTX line to make it a full DATA step:

 

data _null_;

set have (obs=&i firstobs=&i);

call symputx('YYYYPP', yyyypp);

run;

 

With CALL SYMPUTX, the TRIM function is not needed.  Leading and trailing blanks are automatically removed.  In fact, CALL SYMPUTX will even work properly if your incoming variable is numeric instead of character.

 

Net result:  &YYYYPP gets updated each time through the loop, and is available for your query.

View solution in original post

2 REPLIES 2
Astounding
PROC Star

You're moving in the right direction.  Add a semicolon at the end of the %END statement, and embellish on the CALL SYMPUTX line to make it a full DATA step:

 

data _null_;

set have (obs=&i firstobs=&i);

call symputx('YYYYPP', yyyypp);

run;

 

With CALL SYMPUTX, the TRIM function is not needed.  Leading and trailing blanks are automatically removed.  In fact, CALL SYMPUTX will even work properly if your incoming variable is numeric instead of character.

 

Net result:  &YYYYPP gets updated each time through the loop, and is available for your query.

Kody_devl
Quartz | Level 8

 

Your were correct. 

I was so close (and yet soooo far).

 

You have no idea how long I have been struggling with this simple thing.

 

THANK YOU!

 

Kody_Devl

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 2 replies
  • 816 views
  • 0 likes
  • 2 in conversation