楼主: dxystata
12487 6

在需要数值操作数的 %EVAL 函数或 %IF 条件中发现字符操作数 [推广有奖]

版主

已卖:302份资源

大师

37%

还不是VIP/贵宾

-

TA的文库  其他...

Software

中英文Ebook

R学习

威望
2
论坛币
183395 个
通用积分
15333.1475
学术水平
208 点
热心指数
271 点
信用等级
174 点
经验
298627 点
帖子
5586
精华
1
在线时间
13632 小时
注册时间
2006-6-21
最后登录
2025-12-2

初级学术勋章 初级热心勋章 中级热心勋章 初级信用勋章

楼主
dxystata 发表于 2015-2-23 19:29:27 |AI写论文
10论坛币
%macro aaa;
%let varlabel=M(Q1~Q3);
%if &varlabel ne %then %do;
%put "aaaaaaaaaaa";
%end;
%mend;
%aaa;
ERROR: 在需要数值操作数的 %EVAL 函数或 %IF 条件中发现字符操作数。条件是: &varlabel ne
ERROR: 宏 AAA 将终止执行。

如何修改,谢谢!



关键词:eval EVA label Error Macro ERROR 如何

沙发
jl60156 发表于 2015-2-23 22:34:24
%let varlabel=%nrbquote(M(Q1~Q3));
已有 1 人评分论坛币 收起 理由
admin_kefu + 20 热心帮助其他会员

总评分: 论坛币 + 20   查看全部评分

藤椅
zhangjiashun 发表于 2021-5-11 19:49:38
jl60156 发表于 2015-2-23 22:34
%let varlabel=%nrbquote(M(Q1~Q3));
大佬,你知道这个错误是怎么回事吗

板凳
zhangjiashun 发表于 2021-5-11 19:50:16
jl60156 发表于 2015-2-23 22:34
%let varlabel=%nrbquote(M(Q1~Q3));
1982  %macro dz;
1983  data b;
1984  _RHS_=0;
1985  sy=0;
1986  %do u=66 %to 153 %by 1;
1987  %ecgh(u);
1988  proc append base=b data=b3;
1989  run;
1990  %end;
1991  %mend dz;
1992  %dz;

NOTE: 数据集 WORK.B 有 1 个观测和 2 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间          0.01 秒
      CPU 时间          0.01 秒


NOTE: 由调用宏“ECGH”生成行。
5       parms x1-x7; bounds 0<=x1-x7;       lincon  x1+x2+x3+x4+x5+x6+x7=1,
5   ! 0.01402*x1+0.00885*x2+0.00889*x3+0.01011*x4+0.01527*x5 +0.00665*x6+0.00933*x7>=%sysevalf(&u./10000); data b1; set res; if
                                                                                                         -
                                                                                                         22
5   !   _TYPE_="GE" then sy=_RHS_; where _TYPE_="GE"; keep
ERROR: 在需要数值操作数的 %EVAL 函数或 %IF 条件中发现字符操作数。条件是: u/10000

报纸
zhangjiashun 发表于 2021-5-11 19:50:40
jl60156 发表于 2015-2-23 22:34
%let varlabel=%nrbquote(M(Q1~Q3));
大佬,你知道这个错误怎么解决吗

地板
zhangjiashun 发表于 2021-5-11 19:51:09
zhangjiashun 发表于 2021-5-11 19:50
大佬,你知道这个错误怎么解决吗
      parms x1-x7; bounds 0<=x1-x7;       lincon  x1+x2+x3+x4+x5+x6+x7=1,
! 0.01402*x1+0.00885*x2+0.00889*x3+0.01011*x4+0.01527*x5 +0.00665*x6+0.00933*x7>=%sysevalf(&u./10000); data b1; set res; if
                                                                                                         -
                                                                        !   _TYPE_="GE" then sy=_RHS_; where _TYPE_="GE"; keep
ERROR: 在需要数值操作数的 %EVAL 函数或 %IF 条件中发现字符操作数。条件是: u/10000

7
jasminemok 发表于 2024-7-10 10:41:53
把宏变量用quote装起来再做判断

%macro aaa;
%let varlabel=M(Q1~Q3);
%if %quote(&varlabel) ne %then %do;
%put "aaaaaaaaaaa";
%end;
%mend;
%aaa;

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-5 17:54