SAS:如何在数据步骤中添加带有括号和引号的值?

时间:2018-06-25 14:23:08

标签: sas enterprise-guide datastep

我想使用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:语法错误,该语句将被忽略。

1 个答案:

答案 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}}个字符。