楼主: playmore
5740 5

[问答] 请问如何让一个宏有返回值 [推广有奖]

学科带头人

2%

还不是VIP/贵宾

-

TA的文库  其他...

R相关

经济学相关

金融工程

威望
1
论坛币
16309 个
通用积分
7.3197
学术水平
372 点
热心指数
394 点
信用等级
341 点
经验
15297 点
帖子
1194
精华
1
在线时间
1331 小时
注册时间
2007-1-11
最后登录
2023-12-15

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

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
在网上看到如下的宏:

  1. %macro defined (mvar);
  2.   %local dsid rc scope;
  3.           /** Open the vmacro view which contains info about macor vars **/
  4.   %let dsid=%sysfunc(open(sashelp.vmacro (where=(name="%upcase(&mvar)"))));
  5.           /** Fetch a record into the pdv if it exists **/
  6.   %let rc=%sysfunc(fetch(&dsid));
  7.           /** Return varnum 1, the scope **/
  8.   %let scope = %sysfunc(getvarc(&dsid,1));
  9.           /** Close the view **/
  10.   %let rc=%sysfunc(close(&dsid));
  11.   %if &scope = GLOBAL %then 1; %else 0;
  12. %mend;
复制代码


作用就是检查某个宏变量是否存在,当存在时,运行%put %defined(a);后可以得到1,否则得到0。
请问是哪条语句可以赋给宏一个返回值?
谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:返回值 sysfunc Defined SASHELP Contain 如何

本帖被以下文库推荐

playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛
沙发
bobguy 发表于 2012-6-26 07:27:19 |只看作者 |坛友微信交流群
No such a statement exists.

使用道具

藤椅
bolus123 发表于 2012-6-26 09:52:18 |只看作者 |坛友微信交流群
应该没有吧...

使用道具

板凳
hopewell 发表于 2012-6-26 12:11:29 |只看作者 |坛友微信交流群
  1. %then 1; %else 0;
复制代码
观钓颇逾垂钓趣 种花何问看花谁

使用道具

报纸
playmore 发表于 2012-6-26 14:54:28 |只看作者 |坛友微信交流群
hopewell 发表于 2012-6-26 12:11
嗯,我试了下,果真是这句话

这就是说SAS支持宏有返回值?不用在宏里另设一个Global宏变量调用所需要返回的值了?
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

使用道具

地板
Tigflanker 发表于 2012-9-16 13:03:59 |只看作者 |坛友微信交流群
playmore 发表于 2012-6-26 14:54
嗯,我试了下,果真是这句话

这就是说SAS支持宏有返回值?不用在宏里另设一个Global宏变量调用所需要返 ...
SAS的宏和Java的方法也许最明显的一点就是SAS的宏不正式的支持返回值,

不过SAS宏的牛逼之处在于:

它里面一句话就是一句话,一个变量就是一个变量;它里面的宏语句会被宏编译器完整的读取,吸收。

那么剩下的东西,例如“1”,“字符串”,“&r”就是它的返回值,不过,这样做也是有牺牲的:

如果你想要拿他跟JAVA中的方法纯比较,这要求这个宏里面只有:宏语句,尾巴(就是你要返回的东西)。

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-22 06:40