sas - 仅当用户名与列表匹配时才运行宏
问题描述
我正在尝试根据用户名的条件运行宏,我在哪里进行更改:
例如:我有以下带有用户名的数据集:
data users2;
input name$;
cards;
ABC
DEF
YUT
GTR
;
run;
我有一个宏要调用:%callmacro;
proc sql;
select name into: usernames separated by ',' from users2;
quit;
所以我调用宏
%macro NEW();
%if &sysuserid in (&usernames) %then %do;
%callmacro;
%end;
%mend;
%new;
所以在这里我得到一个错误:
ERROR: Required operator not found in expression: ( "&sysuserid" in
(&usernames))
仅当用户名在列表中匹配时,我才想运行宏。否则有什么方法可以从 SAS 宏调用 WINDOWS AD 组并检查该 Windows AD 组中的 sysuserid 是否存在?
解决方案
您可以检查宏内的用户名
%macro ThisIsConditionallyRestricted(nametable=users2);
proc sql noprint;
select name from &nametable where name = "&sysuserid";
quit;
%if &SQLOBS = 0 %then %do;
%put WARNING: You were not prepared!;
%return;
%end;
…
%mend;
%ThisIsConditionallyRestricted;
推荐阅读
- javascript - Angular:在伪类中动态更改 SCSS 属性
- javascript - “OperatorFunction”类型上不存在属性“订阅”
' - terraform - 为 aws_api_gateway_gateway_response 中的字段 status_code 设置默认值
- unity3d - 如何更改为游戏自动记录的“我的公司”的名称
- sapui5 - 如何在表单中添加消息
- javascript - 重用 React 'key'
- android - 个人资料头像中的表情符号
- ios - Xcode 11.1 升级奇怪 - 主屏幕显示为模态视图
- android - 当我输入“webview”这个词时,andrioad 工作室告诉“期待成员声明”
- python - 从字典中返回值