楼主: 智泉time
4391 2

SAS Macro 错误提示 有 1 个未闭合的“DO”块 能解决么 [推广有奖]

  • 0关注
  • 0粉丝

小学生

7%

还不是VIP/贵宾

-

威望
0
论坛币
3 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
30 点
帖子
1
精华
0
在线时间
7 小时
注册时间
2013-9-22
最后登录
2019-10-22

楼主
智泉time 发表于 2016-9-8 16:31:50 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

程序如下;
%macro setymcurr(ns=);
data _null_;
set ymtot(firstobs=&ns. obs=&ns.);
call symput('ymcurr',ymcurr);
run;

%mend;
data _null_;
   do i=1 to 2;
    %setymcurr(ns=1);
    put &ymcurr.;
   end;
run;
结果如下:
  data _null_;
31            do i=1 to 2;
32             %setymcurr(ns=1);
NOTE: 由于出错,SAS 系统停止处理该步。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间          0.00 秒
      CPU 时间          0.00 秒
      
NOTE: 由调用宏“SETYMCURR”生成行。
32              data _null_;  set ymtot(firstobs=&ns. obs=&ns.);  call symput('ymcurr',ymcurr); run;
               _
               117

ERROR 117-185: 有 1 个未闭合的“DO”块。
NOTE: 数值已转换为字符值,位置:(行:列)。
      2902:77   
NOTE: 从数据集 WORK.YMTOT. 读取了 1 个观测
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间          0.00 秒
      CPU 时间          0.00 秒
      
2                                                             SAS 系统                        2016年09月08日 星期四 下午03时29分54秒

33             put &ymcurr.;
33             put &ymcurr.;
               ___
               180
ERROR 180-322: 语句无效或未按正确顺序使用。

34            end;
              ___
              180
ERROR 180-322: 语句无效或未按正确顺序使用。

二维码

扫码加我 拉你入群

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

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

关键词:Macro 错误提示 CRO acr Mac SAS程序 错误提示

沙发
wang1839 在职认证  发表于 2016-9-18 15:21:32
宏单独运行后在调用宏变量

藤椅
prince315 在职认证  发表于 2016-9-19 10:57:06
按照宏的执行顺序,进行简单的替换,就能看到问题了。宏大部分是在进行简单的语义替换,而不是一个自定义函数可以预编译。

data _null_;
   do i=1 to 2;
/*    %setymcurr(ns=1); 替换成宏内语句*/
data _null_;
set ymtot(firstobs=1 obs=1);
call symput('ymcurr',ymcurr);
run;

    put &ymcurr.;
   end;
run;

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-3 21:34