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

Dear community,

 

I would like to ask for your help, concerning the following issue:

The scenario is, that I am running a macro-%DO-loop.

What I do want to do is, to reference the “previous” step, which is to say, that, if my loop run from 1 to 5 and I am at point 4, I do want to create a macro variable, containing the value 3.

I have tried the following, but sadly, it does not work:

 

%macro doloop;

%DO j=1 %TO 5;

data interim; incr = &j.-1; run;
data _null_; set pft; call symput("s", interim); run;

data no_&j.; test=&j.; run;
data no_&s.; test=&s.; run;

%End;

%mend doloop;

%doloop;

where j is the indicator of the loop and s is the "minus 1" variable.

 

I would be glad, if you could help me with this issue of mine.

 

Yours sincerely,

Sinistrum

1 ACCEPTED SOLUTION

Accepted Solutions
Reeza
Super User

 

 

 

Wrap your calculation in %eval().

 

 

%let s = %eval(&j. - 1);

 

 

View solution in original post

2 REPLIES 2
Reeza
Super User

 

 

 

Wrap your calculation in %eval().

 

 

%let s = %eval(&j. - 1);

 

 

Sinistrum
Quartz | Level 8

Thank you very much indeed - I do not now, how long I carried around this issue, but, finally, it is resolved.

 

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
  • 2 replies
  • 1494 views
  • 1 like
  • 2 in conversation