SAS中文论坛

标题: 求助:open() 和 close() 函数! [打印本页]

作者: shiyiming    时间: 2003-12-3 17:38
标题: 求助:open() 和 close() 函数!
各位大侠,我编了下面这段程序,想计算数据库的记录数,当第一次运行时,结果是对的,当第二次运行时,出现错误提示,不知怎么回事了?谢谢!!!


data class;
set sashelp.class;
run;

%let data=class;
%let dsid=%sysfunc(open(&data,i));
%let nobs=%sysfunc(attrn(&dsid,NOBS));
%let rc=close(dsid);

[color=red:9088d]ERROR: You cannot open WORK.CLASS.DATA for output access with member-level control because WORK.CLASS.DATA is in use by you in resource environment DMS Process.
NOTE: The SAS System stopped processing this step because of errors.[/color:9088d]
作者: shiyiming    时间: 2003-12-3 21:01
原因在于你没有关闭打开的数据集work.class,虽然程序中包含一个close函数。程序第一次运行时将数据集打开了而没有正常关闭,第二次要再打开并进行修改当然会出错。

在此程序中,close函数也必须按照前面的语句格式来书写,即也必须通过调用%sysfunc函数来执行,否则close函数无效。

程序应修改为如下的形式,就不会出错了。

data class;
set sashelp.class;
run;

%let data=class;
%let dsid=%sysfunc(open(&data,i));
%let nobs=%sysfunc(attrn(&dsid,NOBS));
%let rc=%sysfunc(close(&dsid));
作者: shiyiming    时间: 2003-12-4 10:33
多谢同学指点,问题搞定!




欢迎光临 SAS中文论坛 (http://mysas.net/forum/) Powered by Discuz! X3.2