2015年8月14日金曜日

DS2プロシジャ入門8:ユーザー定義パッケージ




メソッドをパッケージに入れる事で、その中に入れたメソッドはいつでもどこでも使えるようになります。



構文


パッケージの定義
PROC DS2;

     PACKAGE パッケージ名 / OVERWRITE=YES;

          METHOD メソッド1;
               ~メソッド処理~
          END;

          METHOD メソッド2;
               ~メソッド処理~
          END;
          ・・・
     ENDPACKAGE;

     RUN;
QUIT;




定義したパッケージを使えるようにする

 DCL PACKAGE パッケージ名  インスタンス参照名();


定義したパッケージを使用するには、パッケージのインスタンスってのを作って、そのインスタンスを参照するための変数(インスタンス参照名)を定義します。


パッケージで定義したメソッドを使う

 インスタンス参照名.メソッド();






*** パッケージの作成 ;
proc ds2;
   package MYPACK / overwrite=yes;
       method TEST (double VAR1) returns double;
          return VAR1+10;
       end;
   endpackage;
   run;
quit;

ログ
package mypack がデータセット work.mypack に作成されました。



数値を放り込むと、10足した値を返してくれるTESTというメソッドを作って、
これをMYPACKというパッケージに入れています。


パッケージは通常WORKに作成されるので、SASを終了すると消えてしまいますが、
package ライブラリ名.パッケージ名」 というように書けば、そのライブラリにパッケージが作成され、SASを終了しても残ります。


*** パッケージを使う ;
proc ds2;
   data _NULL_;
       dcl package MYPACK mp();
       method init();
           dcl double OUTVAR;
           OUTVAR = mp.TEST(100);
           put '******' OUTVAR '******';    
       end;
   enddata;
   run;
quit;

ログ
****** 110 ******



dcl package MYPACK mp()」 でパッケージMYPACKをmpというインスタンス参照名で使えるようにし、
mp.TEST(100)」 でパッケージで定義したTESTというメソッドを使っています。

FCMPプロシジャに似てる感じですね。




DS2プロシジャ入門記事

1: 基本構文
: 変数の宣言
3: 変数属性と配列の定義
4: データ型①
8: ユーザー定義パッケージ

0 件のコメント:

コメントを投稿