Sas %bquote不';不成对支架

Sas %bquote不';不成对支架,sas,sas-macro,Sas,Sas Macro,根据%bquote()宏函数文档,我不必标记为“未配对”(“使用%)将其分配给宏变量 但由于某些原因,此代码不起作用(因此变量var为空): 为什么?如何修复代码以产生预期的结果?您将执行时的屏蔽与编译时的屏蔽混淆了 %BQUOTE屏蔽特殊字符: %BQUOTE函数将解析宏变量引用或宏调用时生成的所有括号和引号视为执行时要屏蔽的特殊字符。(它不会在编译时屏蔽参数中的括号或引号。) 要在编译时屏蔽它,必须使用%let,因为要在%let中分配它的值,必须使用%str,这确实需要在括号前加上% %le

根据%bquote()宏函数文档,我不必标记为“未配对”(“使用%)将其分配给宏变量

但由于某些原因,此代码不起作用(因此变量var为空):


为什么?如何修复代码以产生预期的结果?

您将执行时的屏蔽与编译时的屏蔽混淆了

%BQUOTE
屏蔽特殊字符:

%BQUOTE函数将解析宏变量引用或宏调用时生成的所有括号和引号视为执行时要屏蔽的特殊字符。(它不会在编译时屏蔽参数中的括号或引号。)

要在编译时屏蔽它,必须使用
%let
,因为要在
%let
中分配它的值,必须使用
%str
,这确实需要在括号前加上
%

%let var=%str(%();

%put &var;
%let var=%str(%();

%put &var;