DATA Step, Macro, Functions and more

LOOP & LEAVE;

Reply
Frequent Contributor
Posts: 75

LOOP & LEAVE;

Hi

 

Using SAS 7.1.

 

I don't understand how the below loop works.

Does the "Leave" indicate the loop will be exited once a missing TYP is found?

 

For Eg if I=14 --> TYP(14)=missing, then IK=15.

 

It won't continue to see if TYP(13), TYP(12), ...TYP(1), has missing values. Thank you

 

 

DO I = 15 TO 1 BY -1;
        IF MISSING(TYP{I}) THEN DO;
                IK = I + 1;
                LEAVE;
        END;
END;
 
 

 

Super User
Posts: 5,441

Re: LOOP & LEAVE;

Documentation is quite clear :
"You can use the LEAVE statement to exit a DO loop or SELECT group prematurely based on a condition."
So, yes.
Data never sleeps
Trusted Advisor
Posts: 1,118

Re: LOOP & LEAVE;

It should be noted that the LEAVE statement is not valid within a non-looping/non-iterative DO-END block (an error message would occur!), unless this block is in turn located in a SELECT-END block or in a DO loop (as in your example).

 

In the latter situation, both the remaining iterations of the DO loop and the statements following the LEAVE statement in the DO-END block (if any) are skipped.


In your example (with missing TYP{14} and provided that TYP{15} is not missing) IK is set to 15 and no further IF-checks are performed.

Ask a Question
Discussion stats
  • 2 replies
  • 357 views
  • 0 likes
  • 3 in conversation