テーブルの値を返す関数の例
注 ユーザ関数定義の機能は,SAS9.2から使えます
/*関数定義*/
proc fcmp outlib=work.tmp.func1;
function tab1(a,b);
if a=10 and b=100 then r=111;
else if a=10 and b=200 then r=222;
else if a=20 and b=100 then r=333;
else if a=20 and b=200 then r=444;
else r=0;
return(r);
endsub;
run;
options cmplib = work.tmp;
/*関数呼出*/
data _null_;
x1=tab1(10,200);
put x1=;
run;
/* x1=222*/
比例按分を行う関数の例
x1に対しy1,x2に対しy2が対応している場合,与えられたxに対応するyの値を比例按分で返す.
/*関数定義*/
proc fcmp outlib=work.tmp.func1;
function prorate(x,x1,x2,y1,y2);
y=(x-x1)*(y2-y1)/(x2-x1)+y1;
return(y);
endsub;
run;
options cmplib = work.tmp;
/*関数呼出*/
data _null_;
y=prorate(12,10,20,100,200);put y=;
y=prorate(10,10,20,100,200);put y=;
y=prorate(20,10,20,100,200);put y=;
y=prorate(80,10,20,100,200);put y=;
y=prorate( 0,10,20,100,200);put y=;
y=prorate(-5,10,20,100,200);put y=;
y=prorate(-5,-10,-20,100,200);put y=;
run;
/*
y=120
y=100
y=200
y=800
y=0
y=-50
y=50
*/