更改宏变量字符值

时间:2017-07-10 03:55:30

标签: sas sas-macro

我有以下宏变量:

%LET TEST= A1 A2 A3 A4 A5;

我的最初目标是为我们拥有的每个角色添加前缀:

TEST1 = LG_A1 LG_A2 LG_A3 LG_A4 LG_A5

我尝试通过以下方式使用tranwrd函数执行此操作:

%Let TEST1= %SYSFUNC(TRANWRD(&TEST, "A", "LG_A"));

%Let TEST1= %SYSFUNC(TRANWRD(&TEST, A, LG_A));

但无法以任何方式获得结果。

有没有办法使用其他方法或tranwrd函数来获得所需的结果?

1 个答案:

答案 0 :(得分:1)

这样做的一种方法是遍历所有单词并为每个单词添加前缀。

%LET TEST= A1 A2 A3 A4 A5;

%macro add_prefix();
    %global TEST1;
    %let TEST1 =;

    %do i = 1 %to %sysfunc(countw(&TEST));
        %let TEST1 = &TEST1 LG_%scan(&test,&i);
    %end;
%mend;
%add_prefix();
%put &TEST1;

只是注意到你也可以删除“标志以获得相同的结果。但是既然你已经尝试过没有正确结果我不知道。

%Let TEST1= %sysfunc(TRANWRD(&TEST, A, LG_A));