尝试:
%macro ab(where_p=); %let array_size = %EVAL(%SYSFUNC(COUNTC(&WHERE_P, '"'))/2); data want; set have; array B_(&array_size) $20 (&where_p); run; %mend; %ab(WHERE_P=" ATF" " TRUST" );
您首先找到的项目数是引号数除以2。 然后创建一个该大小的数组,并直接使用& WHERE_P分配值。
如果要允许WHERE_P中的字符串超过20个字符,则需要更改数组行中的长度。