Debugging SAS宏错误

Debugging SAS宏错误,debugging,macros,sas,Debugging,Macros,Sas,我提交以下程序 %let col1=dept; %让数据=公司; proc-sql; 挑选* 来自&数据,员工 其中&data&col1=employee.name; 退出 我得到了这个错误: 错误:在贡献表中找不到以下列:companydept。 是什么导致了这样的错误?宏变量后的第一个句点用作宏分隔符。你需要再加一个这样的句号 &data..&col1=为什么在这种情况下需要分隔符?where语句需要一个句号,例如“company.dept”,宏变量的名称需要一个句号。SAS使用几个分隔符(

我提交以下程序

%let col1=dept;
%让数据=公司;
proc-sql;
挑选*
来自&数据,员工
其中&data&col1=employee.name;
退出

我得到了这个错误:

错误:在贡献表中找不到以下列:companydept。


是什么导致了这样的错误?

宏变量后的第一个句点用作宏分隔符。你需要再加一个这样的句号


&data..&col1=

为什么在这种情况下需要分隔符?where语句需要一个句号,例如“company.dept”,宏变量的名称需要一个句号。SAS使用几个分隔符(最常用的分隔符是[space])来确定宏变量名称的结尾。因此,它相当于写入
&数据&col1=
?我记得在某些情况下,我们可以省略分隔符。但是我忘记了细节。@zhuoer-它不是等效的,因为SAS将保留该实例中的空间。当宏变量名称的结尾不明确时,SAS需要分隔符。句点是用户选择的分隔符,用于明确告诉SAS宏名称的结尾在哪里。周期与符号一样,被宏变量替换。因此,如果有一个实例需要在宏变量后面加一个句点,则必须使用两个句点。一个用于标记变量的结尾,另一个用于指定字符“句点”。