SAS 为标签用法引用一个字符串

SAS quote a string for label usage

我想引用以下字符串 '%LLY+' 并将其用作绘图中的 Y 轴。

但我总是收到来自 SAS 的警告消息,说

警告:未解决宏 LLY 的明显调用。

或注意:当前正在处理的引用字符串已超过 262 个字符。您可能有不平衡的引号。 警告:未解决宏 LLY 的明显调用。

但实际上'%LLY'并不是宏变量。我的问题是如何在没有收到任何警告消息的情况下引用它?

data _null_;
 CALL SYMPUTX('var1','%LLY+');
 run;

使用单引号代替双引号。 当您使用双引号时,SAS 会尝试将其解析为宏。

data _null_;
 CALL SYMPUTX('var1','%LLY+');
run;

编辑:

data _null_;
  %*option 1;
 CALL SYMPUTX('var1',%nrstr('%LLY+'));
 
 %*option 2;
 var = '%LLY+';
 call symputx('var2', var);
 
  %*option 3;
 call symputx('var3', '%LLY+');
run;

data demo;
var1 = symget('var1');
var2 = symget('var2');
var3 = symget('var3');
run;

proc print data=demo;
run;

这是显示没有问题的日志,如果您遇到错误,它们来自其他地方。

69         data _null_;
 70           %*option 1;
 71          CALL SYMPUTX('var1',%nrstr('%LLY+'));
 72         
 73          %*option 2;
 74          var = '%LLY+';
 75          call symputx('var2', var);
 76         
 77           %*option 3;
 78          call symputx('var3', '%LLY+');
 79         run;
 
 NOTE: DATA statement used (Total process time):
       real time           0.00 seconds
       cpu time            0.00 seconds
       
 
 80         
 81         data demo;
 82         var1 = symget('var1');
 83         var2 = symget('var2');
 84         var3 = symget('var3');
 85         run;
 
 NOTE: The data set WORK.DEMO has 1 observations and 3 variables.
 NOTE: DATA statement used (Total process time):
       real time           0.00 seconds
       cpu time            0.00 seconds
       
 
 86         
 87         proc print data=demo;
 88         run;
 
 NOTE: There were 1 observations read from the data set WORK.DEMO.
 NOTE: PROCEDURE PRINT used (Total process time):
       real time           0.01 seconds
       cpu time            0.02 seconds

这是输出:

Obs var1 var2 var3

1 %LLY+ %LLY+ %LLY+

编辑 2:

如果你使用 %PUT,你会得到:

 1          OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
 WARNING: Apparent invocation of macro LLY not resolved.
 68         
 69         
 70             %Put &var1.;
 %LLY+
 71             %put &var2.;
 WARNING: Apparent invocation of macro LLY not resolved.
 %LLY+
 72             %put &var3.;
 WARNING: Apparent invocation of macro LLY not resolved.
 %LLY+
 73         
 74         OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
 84