BookmarkSubscribeRSS Feed
apple
Calcite | Level 5

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;
 
 

 

2 REPLIES 2
LinusH
Tourmaline | Level 20
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
FreelanceReinh
Jade | Level 19

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.

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

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
  • 2 replies
  • 1707 views
  • 0 likes
  • 3 in conversation