我想使用SAS中的数据步骤创建一个表,其中包含SSRS的显示格式代码。
例如,我有一些类似“#,0;(#,0)”的代码,但是当我尝试在数据步骤中分配此值时出现错误。我还尝试过先将其放在宏中,但无济于事。
代码:
%let fmt1 = %STR(#,0;(#,0)); *thousand-comma separator;
data FORMAT_XREF;
length METRIC_TYPE DSP_FORMAT $ 20;
if METRIC_TYPE = 'TOT_ACCT' then
do;
DSP_FORMAT = quote(&fmt1.);
end;
run;
错误:34#,0;(#,0) _ _ 386180 _ 76 错误386-185:需要算术表达式。
错误180-322:该语句无效或使用不正确。
错误76-322:语法错误,该语句将被忽略。
答案 0 :(得分:0)
您在这里遇到的问题是,您认为quote
函数的功能不同于它。
quote函数将双引号字符添加到某些内容,而不是用于分隔字符值的引号。仍然会使用字符值作为输入,但您并未提供该值(请记住,宏变量包含文本,而不是字符值)。
所以您需要:
%let fmt1 = %STR(#,0;(#,0)); *thousand-comma separator;
data FORMAT_XREF;
length METRIC_TYPE DSP_FORMAT $ 20;
if METRIC_TYPE = 'TOT_ACCT' then
do;
DSP_FORMAT = "&fmt1.";
end;
run;
对您来说应该很好。如果您实际上需要在值还中加引号,则可以将quote
函数括起来(这样DSP_FORMAT = quote("&fmt1.");
会将"#,0;(#,0)"
存储在变量中,包括{ {1}}个字符。