前のページ|次のページ

%DO, 反復ステートメント

インデックス変数の値に基づいて、マクロの特定セクションを繰り返し実行します。

種類: マクロステートメント
制限事項: マクロ定義でのみ使用可能
参照項目: %ENDステートメント

構文

%DO macro-variable=start %TO stop <%BY increment> ;

text and macro language statements
%END;

必須引数

macro-variable

マクロ変数名を指定するか、またはマクロ変数名を生成するテキスト式を指定します。このマクロ変数の値は、%DOループの反復回数を決定するインデックスとして機能します。インデックスとして指定されたマクロ変数が存在しない場合、マクロプロセッサは同変数をローカルシンボルテーブル内に作成します。

ユーザーはインデックス変数の値を処理中に変更できます。たとえば、ある条件が満たされた場合にインデックス変数の値をstop値よりも大きい値に設定することで、ループの処理を終了できます。

startstop

反復%DOステートメントと%ENDステートメント間にあるマクロの部分を処理する回数を制御する整数を指定するか、またはそのような整数を生成するマクロ式を指定します。

%DOグループの初回反復時に、macro-variableの値はstartに等しくなります。処理を続行すると、macro-variableの値はincrementの値だけ変化し、macro-variableの値がstartstopの値の範囲外になるまで反復処理が続けられます。

increment

ループを繰り返すたびにインデックス変数に加算される整数(ゼロ以外)を指定するか、またはそのような整数を生成するマクロ式を指定します。デフォルトでは、incrementは1になります。incrementは、ループの初回反復前に評価されます。このため、この値はループの反復時には変更できません。

例: 一連のDATAステップの作成

次の例は、マクロ定義における反復%DOグループの使い方を示すものです。
%macro create(howmany);
   %do i=1 %to &howmany;
      data month&i;
         infile in&i;
         input product cost date;
      run;
   %end;
%mend create;
%create(3)
前述のマクロCREATEを実行すると、次のステートメントが生成されます。
DATA MONTH1;
   INFILE IN1;
   INPUT PRODUCT COST DATE;
RUN;
DATA MONTH2;
   INFILE IN2;
   INPUT PRODUCT COST DATE;
RUN;
DATA MONTH3;
   INFILE IN3;
   INPUT PRODUCT COST DATE;
RUN;
前のページ|次のページ|ページの先頭へ