代码之家  ›  专栏  ›  技术社区  ›  PalimPalim

根据用户指定路径变量

sas
  •  0
  • PalimPalim  · 技术社区  · 6 年前

    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 回复  |  直到 6 年前
        1
  •  0
  •   Sanchit Bhatia    6 年前

    这是事件发生的顺序:-

    1. 宏变量将在数据步骤代码中解析和输入。

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

    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 语句位于datastep外部。