【问题标题】:format macro variable to comma6将宏变量格式化为 comma6
【发布时间】:2015-01-15 08:34:20
【问题描述】:

%let vc = 12025;

理想的输出(格式为comma)是12,025

%put %sysfunc(put(&vc,comma6.)) 似乎不起作用。错误如下。

ERROR: The PUT function referenced in the %SYSFUNC or %QSYSFUNC macro function is not found.

【问题讨论】:

  • 您最初是如何创建vc 宏变量的?宏变量是文本,因此您首先应该以正确的格式创建它。

标签: format sas


【解决方案1】:

PUT 函数不适用于 %SYSFUNC,但您可以将 PUTN 用于数值,或将 PUTC 用于字符。

试试:

%put %sysfunc(putn(&vc,comma6.));

【讨论】:

【解决方案2】:

使用putn() 函数格式化%sysfunc() 返回的值的另一种方法是使用%sysfunc() 鲜为人知的第二个参数,如下所示:

%let vc = 12025;
%put %sysfunc(sum(&vc),comma6.);

第二个参数将格式应用于%sysfunc() 正在调用的任何函数返回的结果。在上面的示例中,我只是将一个数字本身相加,它实际上只是返回了该数字。如果是字符值,我可以使用cats() 函数。

值得注意的是,如果您想执行以下操作,它将简化代码:

%put %sysfunc(putn(%sysfunc(date()),date9.));    

变成这样:

%put %sysfunc(date(),date9.);

【讨论】:

  • 你需要提供一个函数让 %sysfunc 工作@randombet。 sum 或 cat 只是一个“技巧”,因为它们总是返回与输入相同的值。
猜你喜欢
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-25
  • 2012-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多