SAS DI Studio用户自定义代码创建宏的调试及值打印方法咨询
SAS DI Studio 自定义代码节点宏变量调试与取值打印方法
宏变量取值打印方法
- 日志打印法(最便捷)
直接在自定义代码中加入%PUT语句即可将宏变量值输出到节点运行日志,示例如下:
运行节点后,打开节点运行日志,搜索对应输出内容即可查看到宏变量的实际取值。/* 打印单个指定宏变量 */ %PUT test宏变量取值为:&test.; /* 一次性打印所有用户自定义宏变量的键值对 */ %PUT _USER_; - 数据集输出法(可视化更强)
如果不想翻阅日志,可以将宏变量取值写入输出数据集,运行节点后直接打开数据集查看即可,示例代码:
记得将该data macro_check; test_val = symget('test'); runYear_val = symget('runYear'); run;macro_check数据集设置为自定义代码节点的输出对象,运行节点后直接打开数据集就能看到对应宏变量的取值。
补充:runYear宏变量的正确语法修正
你给出的%let runYear = if month < 6 then year(today) - 1 else year(today)写法不符合SAS宏语法规则,无法正常生成所需取值,可修改为以下可执行版本:
%let runYear = %sysfunc(ifn( %sysfunc(month(%sysfunc(today()))) < 6, %sysfunc(year(%sysfunc(today()))) - 1, %sysfunc(year(%sysfunc(today()))) ));
自定义代码通用调试技巧
- 调试阶段右键点击对应自定义代码节点,选择仅运行当前节点,无需运行整个作业流,大幅节省调试时间
- 运行后优先查看日志中的ERROR、WARNING提示,宏变量未生效的问题通常会有「未解析的宏变量引用」类提示,可快速定位问题
- 复杂逻辑建议拆分步骤验证:比如计算runYear前,先单独打印月份、当前年的宏变量取值,确认单步逻辑正确后再合并整体逻辑
内容的提问来源于stack exchange,提问作者Rob Wanders
相关产品推荐
相关产品推荐

