宏转义字符串

时间:2014-07-15 13:25:07

标签: escaping sas sas-macro

我正在尝试在控制台上打印一行,该控制台应打印一个宏变量和一个带有&符号的文本。让我用一个小例子来说明这一点:

%LET THIS_IS_A_MACRO_VAR = test; 
%PUT &THIS_IS_A_MACRO_VAR..&THIS_SHOULD_BE_TEXT;

运行时我希望输出为:

test.&THIS_SHOULD_BE_TEXT

来自像PHP这样的语言我希望有类似转义字符的东西。不幸的是我找到了类似的东西。

我尝试使用'和'的不同放置,但这导致两个变量都被解释为宏变量或两个变量都没有。同时尝试使用%NRQUOTE没有成功。最后,我尝试连接两个字符串:{{1} }。

我希望有人知道如何做到这一点。

2 个答案:

答案 0 :(得分:2)

快速的方法是简单地将&符号与文本分开,以防止它被解析为宏变量,如下所示:

%LET THIS_IS_A_MACRO_VAR = test; 
%PUT &THIS_IS_A_MACRO_VAR..%str(&)THIS_SHOULD_BE_TEXT;

这给出了:

test.&THIS_SHOULD_BE_TEXT

答案 1 :(得分:1)

我建议通常的方法是使用非分辨率转义来逃避整个文本。 SAS肯定有非常强大(但非常令人困惑)的逃避选择。

%nrstr(&this_should_be_text) 

如果它只尝试解决一次,那将是最简单的。您可能需要使用bquote或类似内容,如果需要保留转义以进行多次解决。有关详细信息,请参阅Susan O' Connor的Secrets of Macro Quoting Functions