%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();
コードが自己文書化されていることを願っています。ここで問題を説明します。変数によってモダリティを表示するのに役立つプログラムの2番目に進むまで、すべてが正常に機能しています。
たとえば、マクロ変数にストックされているモダリティの名前が
$ 100%BLO、
100%COLOR、
AVON&RAGOBERT、
BALLANTINE'S、
L'OREAL、
AT&T、
UVA
などの
場合、%putを適切に使用できません。%bquoteと%nrstrを使用してみましたが、問題は解決しません。これまでのところ、私が見ることができる唯一の解決策は、モダリティの名前を変更することですが、名前はクライアントからのものであるため、データを修正する可能性はありません。
ありがとうございました