SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1847|回复: 6
打印 上一主题 下一主题

call symput什么意思

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-2-4 10:53:54 | 只看该作者

call symput什么意思

data _null_;
     call symput('edit_2',compress(substr("&edit_p",5,2)));
run;
这段代码什么意思 有没有好心人解释下
回复 支持 反对

使用道具 举报

0

主题

0

帖子

2

积分

新手上路

Rank: 1

积分
2
沙发
发表于 2010-2-4 12:41:11 | 只看该作者

Re: call symput什么意思

把dataset里的东西弄成宏变量
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2010-2-4 12:50:41 | 只看该作者

Re: call symput什么意思

谢谢
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2010-2-4 21:55:32 | 只看该作者

Re: call symput什么意思

[code:3k8zgbba]%let edit_2 = %substr(&edit_p, 5, 2);[/code:3k8zgbba]

用call symput 的奥妙在哪里呢?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2010-2-5 09:19:34 | 只看该作者

Re: call symput什么意思

&edit_p  不能直接在data步里使用,会出问题,如果直接用的话,结果不是把&edit_p的变量的值赋给edit_2,而是后面的表达式。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2010-2-5 10:14:49 | 只看该作者

Re: call symput什么意思

在这个实例中的效果没有什么不同,但是call symput与%let是有细微的差别的。%let语句在编译的时候也就是在PDV产生之前就已经开辟内存空间存储宏变量。而call symput是在执行的阶段也就是在PDV产生之后,执行到该call symput语句才分配内存空间给宏变量。在有些情况下结果就会有不同了。大部分情况大部分用户一般是感受不到区别的。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2010-2-5 21:57:40 | 只看该作者

Re: call symput什么意思

看来SAS的奥妙还在精细之处。
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-6 09:50 , Processed in 0.180363 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表