SAS 不评估 %PUT 的内容

标签 sas sas-macro

我在任何 DATA 步骤之外使用这个位。

%let sth = 20191111;
%let sthelse=SUBSTR(INPUT(&sth.,12.),1,4);
%put &sthelse.;

它不会产生“2019”,这是我所期望的,而是

SUBSTR(INPUT(20191111,12.),1,4)

这里出了什么问题?

最佳答案

使用宏函数 %SUBSTR 提取其参数的一部分。请记住,宏值只是字符值(不要与数据步骤字符变量和值混淆)并且没有明确的数值,即使宏值由所有数字组成也是如此。

%let sth = 20191111;
%let first4 = %substr(&sth,1,4);

关于SAS 不评估 %PUT 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59071978/

相关文章:

sas - SAS中PROC SURVEYSELECT后如何获取未采样的样本?

sas - 如何确定SAS宏存储在哪个文件夹中

search - 你如何在 SAS 中返回包含目标值的库中所有表中所有列的列表?

sas - 何时引用宏变量

SAS - 在宏条件之前分配库

group-by - 使用 PROC SQL 折叠 SAS 中的数据

arrays - 如何在SAS中创建与另一个数组具有相同维度的数组

sas - 使用变量值作为宏变量的值

sas - 在宏 SAS 中使用 max 函数

SAS 对我的宏变量值进行排序