同じような処理を繰り返す場合にマクロ命令が非常に効果的です。
本章は、マクロに関する記述ルールやコードサンプルを例示しています。
 
参考にしたサイト:SAS Macro Language: Reference
マクロの記述ルール ↑ このページの最初へ
マクロの定義
%MACRO macro-name(para1,pana2・・・);

 macro definition

%MEND macro-name;


マクロ内で変数を使う場合は、「&」を頭につけます。
マクロ変数は,保持する値は文字列だけです。
文字列の中でマクロ変数を参照する場合は,文字列はシングル(')でなく、ダブル(")を使います。
 
マクロの呼び出し ↑ このページの最初へ
マクロの実行は、「%」で始まるマクロ命令文を記述します。

  %マクロ名(引数、・・);
 
%LETステートメント ↑ このページの最初へ
%LETステートメントは、一部の文字列だけを可変にします。
%LET (変数名)=(任意のテキスト); のように使います。

 %MACRO macro-name;
   SET sas-data;
   WHERE class="&myvar";
  %MEND macro-name;

  %let myvar=abc;
  %macro-name;

  SASデータセット「sas-data」の中の変数classの値がabcのオブザベーションだけを選択します。
 
%PUTステートメント ↑ このページの最初へ
ユーザが設定したマクロ変数の値やグ ローバルマクロ変数、ローカルマクロ変数などの値を全てログウィ ンドウに出力します。
 
CALL SYMPUTルーチン ↑ このページの最初へ
CALL SYMPUTルーチンは、DATAステップ変数の値や定数をマクロ変数に格納するためのルーチンです。

 %MACRO macquote;
  DATA _null_;
   CALL SYMPUT('text1','abcdefg');
  RUN;

  DATA temp1;
   PUT text1=;
  RUN;
 %MEND;

 %macquote;
 
再帰呼び出し(Recursive Call) ↑ このページの最初へ
多くの言語ではSubやFunctionの中から、さらに自分自身を呼び出すような処理ができます。再帰呼び出しを利用することで、複雑な処理を非常に単純なコードとして実現できる場合があります。SASでは、CALL EXECUTEによってマクロの再帰呼び出しを実現することができます。下の例では、「PUT &cc」を5回実行します。

%MACRO countdown(cc);
    If &cc > 0 Then
    Do;
      PUT &cc;
      CALL Excecute('%countdon(&cc-1);');
    END;
%MEND countdown;

%countdon(5);


Magazines :SAS Technical News spring 2001 の「Q&A」にも記載がありますので参照してください
 

↑ このページの最初へ

  ご意見・ご感想をお寄せください。info@beagle-hc.com ‖ このサイトについて                                     
  Copyright 2006 - 2009 uTRAM Corp. All Rights Reserved
BEAGLE-HC
HOME くすりのこと 研究開発 個別業務 IT 広報・教育 団体・組織

医薬品・医療機器の研究・開発 ポータルサイト
          サイトマップ
 現在位置 : HOME > IT プログラミング > SAS コードライブラリアン(マクロ)