Friday, 7 October 2011

IF DO and GOTO


data dm;
input pid salary sale;
cards;
101 2300 523
102 3300 451
103 2900 600
104 2200 258
105 5000 358
106 4500 350
;

/*numeric*/
data dm1;
set dm;
if sale>500 then newsalary=salary+2000;
else if sale>350 and sale<500 then newsalary=salary+1500;
else newsalary=salary+1000;
run;
proc print data=dm1;
run;

/*charcter variable*/
data dm2;
set dm;
if sale>500 then Rating='A+++';
else if sale>350 and sale<500 then Rating='A++';
else Rating='A+' ;
run;
proc print data=dm2;
run;

/*do*/
data dm3;
set dm;
if sale>500 then do;
newsalary=salary+2000;
Rating='A+++';
end;
else if sale>350 and sale<500 then do;
newsalary=salary+1500;
Rating='A++';
end;
else do;
newsalary=salary+1000;
Rating='A+';
end;
run;
proc print data=dm3;
run;

/*goto*/
data dm4;
set dm;
if sale>500 then goto case1;
else if  sale>350 and sale<500 then goto case2;
else goto case3;
case1:newsalary=salary+2000;
Rating='A+++';
return;
case2:newsalary=salary+1500;
Rating='A++';
return;
case3:newsalary=salary+1000;
Rating='A+';
return;
run;
proc print data=dm4;
run;

/*multiple datasets depending on charcter/numeric*/
/*numeric*/
data customer2;
set Customer1 (keep=_numeric_);
run;
proc print data=Customer2;
format date ddmmyy10.;
run;

/*assign operator '='*/
data emp;
eid=101;
des='tester';
jdate='15jan2005'd;
jtime='12:22:22't;
edt='18mar2007:10:33:33'dt;
run;
proc print data=emp;
format jdate ddmmyyd10. jtime time8. edt datetime18.;
run;

No comments:

Post a Comment