%macro name_modal();
/*Create macro variables which contain the modalities of variables*/
%do i=1 %to &num_Var;
data _null_;
set &lib..Table_variable_modal_&i.;
call symputx('num_Mod'||compress(put(&i,4.)),_N_,"G");
call symputx('table'||compress(put(&i,4.))||'modal'||compress(put(_N_,4.)),compress(&&name_Var&i.),"G");
run;
%end;
/*Display modalities by variable*/
%do i=1 %to &num_Var;
%put &&name_Var&i. has &&num_Mod&i. modalities ;
%do j=1 %to &&num_Mod&i.;
%put %nrstr(&&tableb&i.modal&j.);
%end;
%end;
%mend name_modal;
%name_modal();
我希望代码是自记录的。我将在这里解释问题。一切正常,直到我传递到用于按变量显示模态的程序的第二个。
例如,当宏变量中存储的模式名称为
$100% BLO、
100% COLOR、
AVON & RAGOBERT、
BALLANTINE'S、
L'OREAL、
AT&T、
UVA
等时,
我无法正确使用 %put。我尝试使用 %bquote 和 %nrstr,但问题仍然存在。到目前为止,我能看到的唯一解决方案是修改模式的名称,但由于名称来自客户,我无法对数据进行修改。
谢谢