【发布时间】:2017-05-30 20:25:51
【问题描述】:
如何定义一个包含对其他尚未定义的宏变量的引用而不产生警告的宏变量?
考虑一个为不同变量生成相似图的程序。根据变量的不同,每个图形的标签都会发生变化。由于除了特定的分析变量外,所有图形都具有相似的标签,因此将标签放在程序顶部以便于修改是有意义的。问题是,此时程序中的变量名还没有被定义。
例如:
/*Top of program*/
%let label = This &thing gets defined later.;
/* ... */
/*Later in program*/
%let thing = macro variable;
%put &=label;
这会产生所需的输出:
LABEL=This macro variable gets defined later.
但它也会在日志中生成警告:
WARNING: Apparent symbolic reference THING not resolved.
如果我在&thing 周围加上%nrstr,那么label 的形式是正确的(即LABEL=This &thing gets defined later.)但是,&thing 在定义后不再解析。
/*Top of program*/
%let label = This %nrstr(&thing) gets defined later.;
%put &=label;
/* ... */
/*Later in program*/
%let thing = macro variable;
%put &=label;
这个输出:
LABEL=This &thing gets defined later.
LABEL=This &thing gets defined later.
有没有办法避免将警告写入日志?
【问题讨论】:
标签: sas