我正在尝试在控制台上打印一行,该控制台应打印一个宏变量和一个带有&符号的文本。让我用一个小例子来说明这一点:
%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} }。
我希望有人知道如何做到这一点。
答案 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。