Hello,
Why is the value of index (i) 2 in below two programs since the loop iterates just only for once?
data have;
input x y;
cards;
1 2
;
data want;
set have;
array ar{*} x y;
do i = 1 to dim(ar)-1;
put i =;
var = ar{i+1}-ar{i};
end;
put i =;
run;
data have;
input x y;
cards;
1 2
;
data want;
set have;
array ar{*} x y;
do i = 1 to dim(ar)-1;
put i =;
var = ar{i}-ar{i};
end;
put i =;
run;
A do loop works like that:
1 - set index variable to initial value
2 - compare index variable with termination value
3 - if higher goto 7
4 - execute loop body
5 - increment index value
6 - goto 2
7 - end
So you see that the loop terminates only when the index variable exceeds the termination value.
When i increases to be > dim(ar)-1, the statements inside the loop are not executed. So i increases to be equal to 2, but i is never equal to two inside the loop. Run this program to verify
data have;
input x y;
cards;
1 2
;
data want;
set have;
array ar{*} x y;
do i = 1 to (dim(ar)-1);
put i=;
var = ar{i+1}-ar{i};
end;
run;
A do loop works like that:
1 - set index variable to initial value
2 - compare index variable with termination value
3 - if higher goto 7
4 - execute loop body
5 - increment index value
6 - goto 2
7 - end
So you see that the loop terminates only when the index variable exceeds the termination value.
@Kurt_Bremser What are numeric values 7 and 2?
These are just "line numbers" similar to those used in eg BASIC, to identify places in the code.
@SAS_inquisitive wrote:
@Kurt_Bremser What are numeric values 7 and 2?
The index of a do loop, by definition, increases until it exceeds it's "to" value. When it does exceed that value, it exits from the loop with processing the commands within the loop.
Art, CEO, AnalystFinder.com
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
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.
Ready to level-up your skills? Choose your own adventure.