楼主: liu022
8216 16

SAS怎么定义带返回值的函数 [推广有奖]

  • 0关注
  • 6粉丝

已卖:181份资源

讲师

64%

还不是VIP/贵宾

-

威望
0
论坛币
879 个
通用积分
7.4013
学术水平
23 点
热心指数
18 点
信用等级
21 点
经验
3667 点
帖子
430
精华
1
在线时间
375 小时
注册时间
2007-5-21
最后登录
2026-1-16

楼主
liu022 发表于 2011-9-8 20:47:39 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
大家好!
       请教大家一下,怎么用SAS定义带返回值的函数?谢谢
      例如 add(a,b)=a+b
二维码

扫码加我 拉你入群

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

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

关键词:返回值 add 大家好

沙发
honghejing 发表于 2011-9-9 08:41:53
sum(a,b)?这个算不算?

藤椅
liu022 发表于 2011-9-9 08:58:07
honghejing 发表于 2011-9-9 08:41
sum(a,b)?这个算不算?
我需要宏来模拟带返回值的函数~为了简单,才举的这个例子~谢谢!

板凳
soporaeternus 发表于 2011-9-9 09:11:34
macro的话需要评估macro被解析后整个程序的语法是否正确
真正意义上的自定义函数需要proc fmcp吧,貌似9.2以上就可以了
Let them be hard, but never unjust

报纸
liu022 发表于 2011-9-9 09:42:24
soporaeternus 发表于 2011-9-9 09:11
macro的话需要评估macro被解析后整个程序的语法是否正确
真正意义上的自定义函数需要proc fmcp吧,貌似9.2 ...
我知道proc fmcp可以,但是如果用宏来写,我不知道怎么返回值。比如如下程序该怎么修改?
%macro add(a,b);
%let c=%eval(&a+&b);
%mend;

怎么才能做到
data _null_;
x=%add(1,2);
run;

返回x的值为3呢?

谢谢老师!

地板
soporaeternus 发表于 2011-9-9 09:51:18
  1. %macro add(a,b);
  2. %let c=%eval(&a+&b);
  3. &c
  4. %mend add;
复制代码
仅限此例哈
用macro的时候不断心中默念文本替换,文本替换......,问题就少很多了......
Let them be hard, but never unjust

7
liu022 发表于 2011-9-9 10:04:48
soporaeternus 发表于 2011-9-9 09:51
仅限此例哈
用macro的时候不断心中默念文本替换,文本替换......,问题就少很多了......
呵呵~谢谢!上面代码还可以进一步化简如下:
%macro add(a,b);
%eval(&a+&b);
%mend add;
%put %add(1,2);

8
jingju11 发表于 2011-9-9 10:12:34
如果考虑到二者的时间差,---如果用在data步里,那个%eval就是画蛇添足了。京剧

9
liu022 发表于 2011-9-9 10:25:39
jingju11 发表于 2011-9-9 10:12
如果考虑到二者的时间差,---如果用在data步里,那个%eval就是画蛇添足了。京剧
我的目标是用宏来模拟函数,以便定义更复杂的函数。

Anyway, thank you for your advice :)

10
jingju11 发表于 2011-9-9 10:44:38
为什么不举个例子呢?复杂的例子。我怀疑其复杂性要受制于如何供给macro parameters。
另外,是否把问题复杂化了呢?自定义的假宏函数好象不是很流行啊。有个自定义宏函数叫%ifn来替代ifn。编写的人在sas上颇有名气,但是这个函数大家所知寥寥。。。
京剧

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

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