Sas 根据用户指定路径变量
我想根据用户分配一个名为Sas 根据用户指定路径变量,sas,Sas,我想根据用户分配一个名为folder的路径变量。我正在使用以下代码。但我总是要运行这段代码两次才能正常工作。你知道为什么吗?我是否需要以任何方式初始化userid变量 %global folder; data _null_; userid = &sysuserid.; if userid in ('user1', 'user2') then do; call symput('folder','<special_path>'); end; else do
folder
的路径变量。我正在使用以下代码。但我总是要运行这段代码两次才能正常工作。你知道为什么吗?我是否需要以任何方式初始化userid
变量
%global folder;
data _null_;
userid = &sysuserid.;
if userid in ('user1', 'user2') then do;
call symput('folder','<special_path>');
end;
else do;
call symput('folder',"<default_path>");
end;
%put NOTE: user is &sysuserid. path to '<standard folder>' folder assigned is &folder.;
run;
%全局文件夹;
数据为空;
userid=&sysuserid。;
如果userid在('user1','user2')中,则执行;
调用symput('文件夹','');
结束;
否则你会;
调用symput('folder',“”);
结束;
%注意:用户是&sysuserid。分配给“”文件夹的路径为&folder。;
跑
这是事件发生的顺序:-
data _null_;
userid = SOME_USER_ID;
if userid in ('user1', 'user2') then do;
call symput('folder','<special_path>');
end;
else do;
call symput('folder',"<default_path>");
end;
%put NOTE: user is &sysuserid. path to '<standard folder>' folder assigned is ;
run;
数据\u空\u;
userid=某个用户ID;
如果userid在('user1','user2')中,则执行;
调用symput('文件夹','');
结束;
否则你会;
调用symput('folder',“”);
结束;
%注意:用户是&sysuserid。已分配“”文件夹的路径;
跑
这就是put语句在第一个实例中不解析宏变量文件夹的原因
解决方案是->将
%put
语句置于datastep之外。我认为&userid是保留变量?至少在我的系统中,它来自windows first.lastname,它被解释为具有宏点。尝试userid=“&userid”;在陈述中也指后者。