DATA Step, Macro, Functions and more

index value in array

Accepted Solution Solved
Reply
Regular Contributor
Posts: 234
Accepted Solution

index value in array

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;

 


Accepted Solutions
Solution
‎06-19-2017 09:33 AM
Super User
Posts: 6,963

Re: index value in array

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.

---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers

View solution in original post


All Replies
PROC Star
Posts: 552

Re: index value in array

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;
Solution
‎06-19-2017 09:33 AM
Super User
Posts: 6,963

Re: index value in array

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.

---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
Regular Contributor
Posts: 234

Re: index value in array

@KurtBremser What are numeric values 7 and 2?

Super User
Posts: 6,963

Re: index value in array

These are just "line numbers" similar to those used in eg BASIC, to identify places in the code.


SAS_inquisitive wrote:

@KurtBremser What are numeric values 7 and 2?


 

---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
PROC Star
Posts: 7,364

Re: index value in array

[ Edited ]

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

 

Regular Contributor
Posts: 234

Re: index value in array

Thank you all for the explanation.
☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 6 replies
  • 173 views
  • 3 likes
  • 4 in conversation