Windows11下SAS9.4如何将Q_start转为mmddyy8.格式适配旧代码
解决SAS中Q_start宏变量格式问题
你的代码存在两处关键问题,导致Q_start宏变量始终输出带斜杠的xx/xx/xx格式:
call symputx('Q_Start',put(Q_start);有语法错误,缺少右括号,导致SAS无法正确解析格式设置- 数据步中给Q_start指定的
mmddyy8.格式,没有通过put函数明确传递给宏变量
修正后的代码
Data _null_; dt = '01MAR26'd; Q_start = intnx('quarter', dt, 0); /* -0等价于0,可简化写法 */ call symputx('dtip', vvalue(dt)); call symputx('Q_Start', put(Q_start, mmddyy8.)); /* 补全括号并直接指定格式 */ format dt mmddyy8.; format Q_start mmddyy8.; run; %put NOTE: &=dtip; %put NOTE: &=q_start;
修正说明
- 补全
put函数的右括号,修复语法错误,确保代码正常执行 - 在
put函数中直接指定mmddyy8.格式,让宏变量存储无斜杠的8位日期字符串(如010126),完全适配遗留代码需求 - 简化
intnx函数的第三个参数为0,和原代码-0功能一致
运行效果
修正后日志输出会变为:
NOTE: DTIP=030126 NOTE: Q_START=010126
内容的提问来源于stack exchange,提问作者MeatPopsicle
相关产品推荐
相关产品推荐

