SAS宏变量未输出表值仅显示列名问题排查求助
SAS宏变量赋值后无法打印值的问题解决
核心错误:宏变量引用缺少&符号
你用%put打印宏变量时,没加宏变量的引用符号&。SAS里宏变量必须通过&变量名的形式引用,不然SAS会把它当成普通字符串输出。
正确的打印写法应该是:
%put &Format_YYYYMM_quo; %put &Format_YYYYMM;
其他可能的排查点
如果加了&还是出不来正确值,还要检查这些情况:
- 确认
DATOSTAMP表是否有数据:要是源表为空,PROC SQL的INTO语句不会给宏变量赋值,这时宏变量不存在,%put &变量名会直接输出&变量名本身 - 看PROC SQL的执行日志:如果日志里出现
NOTE: No rows were selected.的提示,说明没从Format_YYYYMM_tbl查到数据,宏变量没被成功赋值 - 可以用
%PUT _USER_;打印所有用户自定义的宏变量,确认Format_YYYYMM和Format_YYYYMM_quo是否存在
修正后的完整示例代码
PROC SQL; CREATE TABLE Format_YYYYMM_tbl AS SELECT t1.str_perdag_SAS_default FORMAT=YYMMN6. AS Format_YYYYMM, ("'"!!put(t1.str_perdag_SAS_default, YYMMN6.)!!"'") AS Format_YYYYMM_quo FROM DATOSTAMP t1; QUIT; PROC SQL NOPRINT; SELECT DISTINCT Format_YYYYMM, Format_YYYYMM_quo INTO :Format_YYYYMM, :Format_YYYYMM_quo FROM Format_YYYYMM_tbl; QUIT; /* 正确打印宏变量 */ %put &Format_YYYYMM_quo; %put &Format_YYYYMM; /* 可选:打印所有用户宏变量确认 */ %PUT _USER_;
内容的提问来源于stack exchange,提问作者Christoffer
相关产品推荐
相关产品推荐

