我有以下宏变量:
%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函数来获得所需的结果?
答案 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));