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
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.