Hi All,
I am curious to know why missing ";" after do did not cause problem in the code below?
data have;
id=1;
input letter $8.;
cards;
b
bu
but
bur
butter
;
proc transpose data=have out=temp;
by id;
var letter;
run;
data want;
set temp;
array _s(*) col:;
do _n_=1 to dim(_s) ;
if lengthn(_s(_n_))=1 and _s(_n_)="b" then do score1=1; score+1;end;
else if lengthn(_s(_n_))=2 and _s(_n_)="bu" then do score2=1; score+1;end;
else if lengthn(_s(_n_))=6 and _s(_n_)="butter" then do score6=1; score+1;end;
end;
proc print;run;
Thanks - Linlin
Message was edited by: Linlin
You have inadvertantly defined iterative do loops, as in :
do i = 1, 10, 100;
score + i;
end;
except that the list of values for the control variable contains a single value. It thus executes only once, which is also what the do block would have done. So in the end, with or without the ";", the result is the same. Interesting. Thanks for brinning it up Linlin.
PG
You have inadvertantly defined iterative do loops, as in :
do i = 1, 10, 100;
score + i;
end;
except that the list of values for the control variable contains a single value. It thus executes only once, which is also what the do block would have done. So in the end, with or without the ";", the result is the same. Interesting. Thanks for brinning it up Linlin.
PG
Thank you PG for your explanation! I was so scared when I found out the missing ";". - Linlin
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!
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.