SAS Programming

DATA Step, Macro, Functions and more
BookmarkSubscribeRSS Feed
☑ This topic is solved. Need further help from the community? Please sign in and ask a new question.
Jerrynetwork
Obsidian | Level 7

I am trying to develop a do loop for nonconsecutive number like:

1 to 45, plus 101, 105

How to writhe the code?

I tried %do i=1 % to 45, 101, 105, but doesn't work. Any suggestion? Thank you!

 

1 ACCEPTED SOLUTION

Accepted Solutions
SASKiwi
PROC Star

Just create a separate loop variable:

%do i=1 %to 47;
  %if &i <= 45 %then %let j = &i;
  %else %if &i = 46 %then %let j = 101;
  %else %if &i = 47 %then %let j = 105;
    %put j = &j;
  %* more statements;
%end;

View solution in original post

3 REPLIES 3
SASKiwi
PROC Star

Just create a separate loop variable:

%do i=1 %to 47;
  %if &i <= 45 %then %let j = &i;
  %else %if &i = 46 %then %let j = 101;
  %else %if &i = 47 %then %let j = 105;
    %put j = &j;
  %* more statements;
%end;
Tom
Super User Tom
Super User

@Jerrynetwork wrote:

I am trying to develop a do loop for nonconsecutive number like:

1 to 45, plus 101, 105

How to writhe the code?

I tried %do i=1 % to 45, 101, 105, but doesn't work. Any suggestion? Thank you!

 


That is easy to do with a DO loop.

do i=1 to 45,101,105 ;

It is harder with a macro %DO loop as the macro %DO statement is not as powerful as the data step DO loop.

ballardw
Super User

@Jerrynetwork wrote:

I am trying to develop a do loop for nonconsecutive number like:

1 to 45, plus 101, 105

How to writhe the code?

I tried %do i=1 % to 45, 101, 105, but doesn't work. Any suggestion? Thank you!

 


"Doesn't work" is such a vague description as to be meaningless.

I suspect that you get an ERROR message similar to

ERROR: A character operand was found in the %EVAL function or %IF
       condition where a numeric operand is required.

If so you should include complete code, entire data step, procedure and/or macro definition and the error messages from the log. Copy and paste the text into a text box opened on the forum with the </> icon above the message window. Then possible describe what the result should be as it is impossible to tell from your incomplete snippet

.

Note that your code is incomplete for the macro language as it should be %to not 'to' with the %do.

The comma is not part of a numeric value so that throws the character operand as %to expects something that resolves to an integer.

 

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


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
  • 980 views
  • 4 likes
  • 4 in conversation