String 双引号和单引号参数字符串的SAS函数差异

String 双引号和单引号参数字符串的SAS函数差异,string,sas,String,Sas,在Sas中,下面使用单引号的情况1运行良好,但使用双引号字符串参数的情况2运行良好 case 1: data _null_; a = lowcase('ABC'); run; case 2: data _null_; a = lowcase("ABC"); run; 825 data _null_; 826 a = lowcase("ABC"); - 386

在Sas中,下面使用单引号的情况1运行良好,但使用双引号字符串参数的情况2运行良好

case 1:
    data _null_;
    a = lowcase('ABC');
    run;

case 2:
    data _null_;
    a = lowcase("ABC");
    run;

825   data _null_;
826   a = lowcase("ABC");
                  -
                  386
                  200
                  76
ERROR 386-185: Expecting an arithmetic expression.
ERROR 200-322: The symbol is not recognized and will be ignored.
ERROR 76-322: Syntax error, statement will be ignored.*

827   run;

我重新运行了你的代码,它在SAS 9.3上运行得非常好

 data _null_; a = lowcase('ABC'); put  a;   run;

 abc 

 NOTE: DATA statement used (Total process time):
       real time           0.00 seconds
       cpu time            0.00 seconds


 data _null_; a = lowcase("ABC");   put a;  run;

 abc 

 NOTE: DATA statement used (Total process time):
       real time           0.00 seconds
       cpu time            0.00 seconds
查看日志,在此之前有800行代码。查看错误,第二种情况场景将“ABC”解释为一个宏变量。宏变量不在单引号中解释,这就是为什么第一种情况可以正常工作的原因

我希望您在将代码发布到此处之前已经更改了代码,而在您的真实代码中,您可能会出现类似“lowcase”(“ABCD&EDGR”)的内容如果是这样的话,那么符号就是SAS认为您正在向其传递宏变量的原因。如果您不希望SAS尝试将符号解释为宏变量的指示符,请使用单引号。

这是一个伪问题。 系统重新启动后,问题消失。
单引号和双引号的工作原理相同。

您确定代码中没有“智能引号”字符吗?我认为,如果以上内容大部分是忠实复制的(智能引号=与“”不同的“字符”),那么智能引号几乎肯定是问题所在Greatvia,您需要发布一些在运行时实际导致错误的内容,以便在此处获得进一步的帮助。由于上述内容不会导致错误,因此无助于解决您的问题。另外,请在日志的前面检查是否存在不平衡的引号。如果您忘记并保留一组打开的引号,SAS可能会对什么是命令感到非常困惑什么是带引号的字符串文字。我也在使用SAS9.3。这是我的计算机的问题吗?我将尝试重新启动并重试。你确定没有“&“字符串中的符号是小写的吗?那应该是你的问题,当然。我在代码中遇到了这样的错误,然后我创建了这个简单的案例来测试,同样的错误。我必须尽可能使用单引号。@VasilijNevlev怀疑这是宏变量,错误在双引号一侧,在第一个字符上(除非错误被不可靠地复制)。在任何情况下-错误并不在于SAS将其视为宏变量。这是因为SAS看到无效的语法,它指向智能引号或类似的东西。