這是可能將具有宏觸發器的字符串作爲宏參數傳遞嗎? 請參閱下面的示例代碼:SAS MACRO引用問題:將具有宏觸發器的字符串作爲宏參數傳遞
options mprint;
%let string5='%abc%def%';
%macro test(string);
data _null_;
call execute('%test2('||&string.||')');
run;
%mend;
%macro test2(string2);
data test3;
a=%str(%')&string2.%str(%');
run;
%mend;
%test(&string5);
此代碼成功運行,但它試圖調用宏%ABC和DEF%,這導致了警告。
如果我試圖把它變成引用掩蓋的字符串,它給了語法錯誤,如下圖所示:
options mprint;
%let string5='%abc%def%';
%macro test(string);
data _null_;
call execute('%test2('||%superQ(string)||')');
run;
%mend;
%macro test2(string2);
data test3;
a=%str(%')&string2.%str(%');
run;
%mend;
%test(&string5);
ERROR 22-322: Syntax error, expecting one of the following: a name, a quoted string, a numeric constant, a datetime constant, a missing value, arrayname, (, +, -, INPUT, NOT, PUT, ^, _NEW_, ~.
有沒有辦法解決這個問題,而不警告? 在此先感謝!
你究竟在做什麼?這可能是一個更簡單的方法。 – user667489
我試圖通過類似的模式作爲參數,其中包含%。我在這裏做的只是一個例子。 –
當通過CALL EXECUTE調用宏時,使用'%nrstr()'非常有用,但我不確定這對您的問題是否有影響。 '調用執行(貓'('%nrstr(%test2)(',symget('string'),')');' – Tom