全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2252 1
2015-12-20
%macro multcond(dsname);
  %local rc dsid exist nlobs readpw;
  %let rc=1;
  %let dsid=0;
  %let exist=%sysfunc(exist(&dsname));
  %if &exist=0 %then %goto setrc;
  %let dsid=%sysfunc(open(&dsname,i));
  %if &dsid le 0 %then %goto setrc;
  %let nlobs=%sysfunc(attrn(&dsid,nlobs));
  %if &nlobs le 0 %then %goto setrc;
  %let readpw=%sysfunc(attrn(&dsid,readpw));
  %if &readpw=1 %then %goto setrc;

  %goto exit;
  %setrc:
  %let rc=0;
  %exit:
  %if &dsid ne %then %let closerc=%sysfunc(close(&dsid));
  %sysfunc(putn(&rc,1))
%mend;

%macro listsample(dsname);
  %if %multcond(&dsname)=1 %then %do;
    proc print data=&dsname(obs=10);
          title "First 10 Observations of &dsname";
        run;
%end;
%else %put error:***data set &dsname cannot be listed.;
%mend listsample;

%listsample(books.ytdsales)
%listsample(books.ytdsaless)

这段程序在multcond宏中的%mend前一句  %sysfunc(putn(&rc,1))后面加了分号为什么就得不到想要的结果。为什么不加分号
二维码

扫码加我 拉你入群

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

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

全部回复
2015-12-21 08:34:36
%sysfunc(putn(&rc,1))
这一句函数,返回的是个format后的结果,是个值;
你加了分号后,他就变成了个句子,

而,你前面这个宏是当做返回值来编写的,
故,%sysfunc(putn(&rc,1))就让他成为一个值的存在,而不能给他一个结尾
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群