[英]SAS Macro with Return value with more text afterwards
是否可以從SAS宏返回值,並在返回值后繼續當前的SAS行?
例如,期望輸出到SAS(不帶引號):
“設置test.hello_2018_2020_2028;”
我嘗試了以下方法:
%MACRO returnFunc(passVar);
%local testReturn;
%let testReturn = %eval(&passVar +1);
&testReturn
%return;
%MEND returnFunc;
%MACRO test;
%local var1;
%local varPassed;
%local anotherVar;
%let var1 = 2018;
%let varPassed = 2019;
%let anotherVar = 2028;
set test.hello_&var1._%returnFunc(&varPassed)_&anotherVar;
%MEND test;
但是我得到如下錯誤:
文件test.hello_2018_2020.DATA不存在
文件WORK._2028不存在
因此該宏返回的值很好,但是它開始嘗試制作另一個set語句,而不是在set語句中添加_&anotherVar
是%UNQUOTE並刪除。 在宏調用之后。
111 %MACRO returnFunc(passVar);
112 %local testReturn;
113 %let testReturn = %eval(&passVar +1);
114 &testReturn
115 %return;
116 %MEND returnFunc;
117
118 %MACRO test;
119 %local var1;
120 %local varPassed;
121 %local anotherVar;
122
123 %let var1 = 2018;
124 %let varPassed = 2019;
125 %let anotherVar = 2028;
126
127 set %unquote(test.hello_&var1._%returnFunc(&varPassed)_&anotherVar);
128 %MEND test;
129 options mprint=1;
130 data _null_;
131 %test;
MPRINT(TEST): set
MPRINT(TEST): test.hello_2018_2020_2028;
ERROR: Libref TEST is not assigned.
132 run;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.