我有一个名为CLIENT_ID
的变量。它用于遍历一堆代码。问题是宏正在寻找特定的客户列表,如:
%stuff(CLIENTX)
%stuff(CLIENTA)
等等。因此,如果数据中出现新客户端(例如CLIENTY
),则该客户端不会包含在输出中。
我想要:
我知道如何比较以找到新的客户端ID,它只是停止代码或更新代码,如果有一个我正在努力的新客户端。可能第二个是不可能的?但我希望至少有一些方法可以解决这个问题。
我完全承认我不是宏专家。
答案 0 :(得分:0)
您要做的是从数据中调用宏,而不是从编写代码中调用宏。
所以而不是
%yourMacro(clientX)
%yourMacro(clientY)
你这样做:
proc sql;
select distinct cats('%yourMacro(',clientID,')')
into :macro_call_list separated by ' '
from your_Data
;
quit;
¯o_call_list.;
您可以将your_data
指向主数据集(如果这是您拥有的),或者指向有效客户列表(如果您将其保存在单独的文件中(例如客户端位置人行横道或某些人))。无论最新的数据是什么。在查询中添加distinct
可确保每个clientID
只能进行一次调用。然后¯o_call_list
包含所有这些%yourMacro(clientX)
等调用,只需将该引用放入开放代码中即可调用它。