根据用户分配路径变量

时间:2018-08-20 07:39:01

标签: sas

我想根据用户分配一个名为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;

1 个答案:

答案 0 :(得分:0)

这是事件发生的顺序:-

  1. 宏变量已解析并已归入您的数据步骤代码中。
  2. 具有估算的(已解析的)宏值的数据步骤代码将被提交。

因此,当您提交代码时,实际提交的内容是:-

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;

这就是为什么put语句不能在第一个实例中解析宏变量文件夹的原因。

解决方案是->将%put语句移出数据步。