data _null_;
do x=1 to 10;
do y=1 to 10;
do z=1 to 10;
if (x*y*z=125) then goto exit;
end;
end;
end;
return;
exit:
put x= y= z= "xyz=125";
run;
/*link实现伪函数封装功能*/
data test;
x=1;y=2;
link func_add;
output;
put x= y= z=;
return;
func_add:
z=x+y;
return;
run;
proc print data=test;
run;
data test;
input x y;
link func_add;
output;
put x= y= z=;
return;
func_add:
z=x+y;
return;
cards;
1 2
3 4
;
run;
proc print data=test(keep=z);
run;
/*计算逻辑封装为SAS宏*/
%macro func_add(arg1,arg2,arg3);
&arg3=&arg1+&arg2;
%mend;
data mydata;
input x y;
%func_add(x,y,z);
cards;
1 2
3 4
;
run;
proc print data=mydata;
run;
/*FCMP函数封装*/
proc fcmp outlib=work.funcs.math;
function add(arg1,arg2);
ret=arg1+arg2;
return(ret);
endsub;
function multiply(arg1,arg2);
ret=arg1*arg2;
return(ret);
endsub;
r
SAS函数封装代码巧用
最新推荐文章于 2022-08-05 17:24:47 发布