我仍然陷入SAS特殊字符治疗。引号SAS(+)PROC FORMAT值| invalue
%macro mFormat();
%do i=1 %to &numVar. ;
proc format library = work ;
invalue $ inf&&nomVar&i..s
%do j=1 %to &&numMod&i.;
"%superq(tb&i.mod&j.)" = &j.
%end;
;
run;
proc format library = work ;
value f&&nomVar&i..s
%do k=1 %to &&numMod&i.;
&k. = "%superq(tb&i.mod&k.)"
%end;
;
run;
%end;
%mend mFormat;
%mFormat();
正如你所看到的,程序假设为每个变量创建格式和信息。我唯一的问题是,当变量名称解析为包含
GOTAN-GOTAN
FRANCES-FRANCES
+ & DECO- + DECO &
等品牌......
这些名字使我这个错误
“ERROR: This range is repeated, or values overlap:”
我希望我可以强制SAS读取这些名称。或者,对于包含这些字符的变量,这不是最好的方法来生成FORMATS和INFORMATS(&,%, - ,',“)。
其实我看不出有什么错在这里处理特殊字符。双引号就足够了。我将代码分解成一小段来测试(http://pastebin.com/vXsE8KWw)。结果,8号被正确翻译成'GOTAN-GOTAN'。处理过程中没有错误。有一件令我困惑的事情是你在'proc format'中使用了do循环。我不知道它是否有效。可以由宏生成'proc format'的实际值语句。如果我理解错误,请纠正我。 –