- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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!
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
@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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
@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.