0

変数の数とログに出力する数を計算したい

do ループを使用したい

これは私のプログラムです

%PUT _USER_;

OPTIONS MPRINT;

%MACRO varnum(a);
data d;
array a &a. ;
%do i=1 %to %str(dim(a)-1);
%put there are &i variables;
%end;
run;
%MEND;
%varnum(age  income   educ)

ありがとう

4

1 に答える 1

0

これはおそらく良い考えではないという Dirk に同意しますが、かなり些細なことです。これにはいくつかの正当な理由があります。主に、パラメーター数が不明なパラメーター リストを使用します。より完全な使用方法を確認したい場合は、SYSPARM ( http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#a000543608.htm ) を調べてください。通常はこれが必要です。一種の操作です (これはおそらくパラメーターの数が不明な問題を処理する正しい方法ですが、実際には違いはありません)。

%MACRO varnum(a);
data d;
array a &a. ;
%do i=1 %to %sysfunc(countc(%sysfunc(compbl(&a)),%str( )))+1; 
*First COMPBL (remove extra spaces) to ensure one space between parameters;
*Then count the number of spaces between parameters, and add one since (1 2 3) has 2 spaces;
%put there are &i variables;
%end;
run;
%MEND;
%varnum(age  income   educ)
于 2013-04-29T14:28:14.797 に答える