楼主: Wo_si_鍕
2993 4

[问答] 宏变量 find不能用吗 [推广有奖]

  • 0关注
  • 1粉丝

大专生

53%

还不是VIP/贵宾

-

威望
0
论坛币
789 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
741 点
帖子
33
精华
0
在线时间
36 小时
注册时间
2014-11-3
最后登录
2018-9-18

楼主
Wo_si_鍕 发表于 2015-7-13 12:23:02 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
%macro dealMoney(money);
        tmp=0;
        %if (find(&money,'以下')) %then tmp=1;
        %if (find(&money,'以上')) %then tmp=2;
        &money = compress(&money,'以下');
        &money = compress(&money,'以上');

        %if tmp=1 %then &money=&money-1;
        %if tmp=2 %then &money=&money+1;
%mend dealMoney;

data salary;
        salary="5000以下";
        if salary^="" then
                do;
                        %dealMoney(salary)
                end;
run;

提示:ERROR: 需要的操作符在以下表达式中没有找到: (find(&money,'以下'))

求大大帮助

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:find IND Fin 不能用 compress 表达式 money ERROR

沙发
Tigflanker 发表于 2015-7-13 14:08:06
%index
不对,你好像有些混淆了宏语句和data语句的运行方式;%if 下的判断条件是需要用宏语句层面的东西来带动的。

%if &aaa. = bbb %then ...

%let ccc = %str(aaa = 1);
if &ccc. then ...

--------------------------------------

你的%if和%then好像都不需要用%

藤椅
Wo_si_鍕 发表于 2015-7-13 15:42:07
感谢,但是find查找还是不行find(&money,'以下'),改成一个字符的字符串就好了find(&money,'下')

板凳
苹果叶 在职认证  发表于 2015-7-13 20:37:28
Wo_si_鍕 发表于 2015-7-13 15:42
感谢,但是find查找还是不行find(&money,'以下'),改成一个字符的字符串就好了find(&money,'下')
不可能啊,应该还是不行的,在宏语句直接用sas 的函数,是要用%sysfunc() 的,类似 %if %sysfunc(find(&money,'以下')) %then %do;

报纸
Wo_si_鍕 发表于 2015-7-14 13:40:54
苹果叶 发表于 2015-7-13 20:37
不可能啊,应该还是不行的,在宏语句直接用sas 的函数,是要用%sysfunc() 的,类似 %if %sysfunc(find(&m ...
学习了

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 14:47