ODS中宏变量20&year.M&month.无法识别问题求助
解决ODS PACKAGE中宏变量无法识别的问题
你的问题核心是单引号包裹的字符串中,SAS不会解析宏变量,而你在其他可正常使用宏变量的场景,大概率是用了双引号或者宏变量处于无引号/宏语句环境中。
解决方案:将单引号替换为双引号
把代码中包裹路径和文件名的单引号改成双引号,SAS就会自动解析其中的&year和&month宏变量:
ods package(ProdOutput) open nopf; ods package(ProdOutput) add file="\\path(...)\20&year.M&month.\file.csv"; ods package(ProdOutput) publish archive properties(archive_name="File 20&year.M&month..zip" archive_path="\\path(...)\20&year.M&month."); ods package(ProdOutput) close;
原因说明
SAS的宏变量解析规则:
- 单引号
'包裹的内容会被当作纯文本,其中的&和%不会触发宏解析 - 双引号
"包裹的内容中,宏变量引用会被正常展开替换为对应值
这就是为什么你在代码其他部分能正常使用宏变量,但ODS PACKAGE的参数里失效的根本原因。
内容的提问来源于stack exchange,提问作者manso.andre
相关产品推荐
相关产品推荐

