ユーザ定義関数

Last-modified: 2011-05-21 (土) 09:33:34

テーブルの値を返す関数の例
注 ユーザ関数定義の機能は,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
 */