SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

12
返回列表 发新帖
楼主: shiyiming
打印 上一主题 下一主题

在scl中用rsubmit不能得到obs

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
11#
 楼主| 发表于 2004-3-8 21:52:39 | 只看该作者

SAS peter or dream,can you give me some suggestions!

??
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
12#
 楼主| 发表于 2004-3-9 11:42:29 | 只看该作者
改动一下你的SCL变量名试试:

dcl num obs_scl;

submit continue;rsubmit;
proc sql noprint;
select count(1) into :obs from sashelp.class where age=14;
quit;

%sysrput obs=&obs;
endrsubmit;endsubmit;

obs_scl=symgetn('obs');
put obs_scl=;
return;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
13#
 楼主| 发表于 2004-3-10 16:15:56 | 只看该作者
我曾经也试过也上的程序,我只想知道为什么?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
14#
 楼主| 发表于 2004-3-10 19:51:55 | 只看该作者
我猜原因是:SCL中DCL的变量在submit块中是全局宏变量,你在sql中 into的宏变量是局部宏变量,取值被全局变量覆盖;在sysrput中,=&obs实际上是将SCL变量obs的初值(.)赋给了本地宏变量obs,而select into 的局部宏变量在此没有作用。

呵呵,有点绕... ...其实做几个实验就可以看到,SCL变量赋值后,在submit块中可以直接当宏变量引用;而select into的宏变量,只要不发生上述冲突也没有问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-9 11:45 , Processed in 0.107367 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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