楼主: liu022
2745 4

[原创博文] 为什么程序单独运算没问题,放到宏里不可以了呢? [推广有奖]

  • 0关注
  • 6粉丝

已卖:181份资源

讲师

64%

还不是VIP/贵宾

-

威望
0
论坛币
879 个
通用积分
7.4013
学术水平
23 点
热心指数
18 点
信用等级
21 点
经验
3667 点
帖子
430
精华
1
在线时间
375 小时
注册时间
2007-5-21
最后登录
2025-10-22

楼主
liu022 发表于 2011-7-20 20:12:49 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
大家好!请教大家一个问题:我在拆分数据集的时候,如果写%let k=1,DATA步是能够正确运行的,但是放到宏里面,就不可以了。请大家帮我看看问题在什么地方。

程序如下:
%macro split;
%do k=1 %to 20;
data h;
set dst;
if _n_=&k.;
rename date=d;
run;
%end;
%mend;
%split;




日志是这样写的:
NOTE: 由调用宏“SPLIT”生成行。
3     data h; set dst;
              ---
              180
ERROR 180-322: 语句无效或未按正确顺序使用。
NOTE: 由调用宏“SPLIT”生成行。
3                      if _n_=&k.;
                       --
                       180
ERROR 180-322: 语句无效或未按正确顺序使用。
NOTE: 由调用宏“SPLIT”生成行。
3                                  rename date=d;
                                   ------
                                   180
ERROR 180-322: 语句无效或未按正确顺序使用。
ERROR: 文件“WORK.H.DATA”不存在。
NOTE: SAS 系统由于错误而停止了该步的处理。
WARNING: 数据集 WORK.TST 可能不完整。该步停止时,共有 0 个观测和 3 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间          0.03 秒
      CPU 时间          0.01 秒
二维码

扫码加我 拉你入群

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

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

关键词:请教大家一个问题 warning rename split Error 程序

沙发
xinpanjin 发表于 2011-7-20 20:15:31
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽

藤椅
liu022 发表于 2011-7-21 00:00:18
这个问题解决了~就把SAS关掉,重新开一下就好~呵呵~它累了~

板凳
zhangzachary 发表于 2011-7-21 01:39:07
WORK是一个临时library,一般只是在里面测试运行。最好还是自己建一个permanent library吧~

报纸
bobguy 发表于 2011-7-21 10:44:27
liu022 发表于 2011-7-20 20:12
大家好!请教大家一个问题:我在拆分数据集的时候,如果写%let k=1,DATA步是能够正确运行的,但是放到宏里面,就不可以了。请大家帮我看看问题在什么地方。

程序如下:
%macro split;
%do k=1 %to 20;
data h;
set dst;
if _n_=&k.;
rename date=d;
run;
%end;
%mend;
%split;




日志是这样写的:
NOTE: 由调用宏“SPLIT”生成行。
3     data h; set dst;
              ---
              180
ERROR 180-322: 语句无效或未按正确顺序使用。
NOTE: 由调用宏“SPLIT”生成行。
3                      if _n_=&k.;
                       --
                       180
ERROR 180-322: 语句无效或未按正确顺序使用。
NOTE: 由调用宏“SPLIT”生成行。
3                                  rename date=d;
                                   ------
                                   180
ERROR 180-322: 语句无效或未按正确顺序使用。
ERROR: 文件“WORK.H.DATA”不存在。
NOTE: SAS 系统由于错误而停止了该步的处理。
WARNING: 数据集 WORK.TST 可能不完整。该步停止时,共有 0 个观测和 3 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间          0.03 秒
      CPU 时间          0.01 秒
The problem can not be reproduced.

31   %macro split;
32   %*do k=1 %to 20;
33   %do k=1 %to 2;
34   data h;
35   set sashelp.class;
36   if _n_=&k.;
37   *rename date=d;
38   run;
39   %end;
40   %mend;
41   %split
NOTE: There were 19 observations read from the data set SASHELP.CLASS.
NOTE: The data set WORK.H has 1 observations and 5 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds

NOTE: There were 19 observations read from the data set SASHELP.CLASS.
NOTE: The data set WORK.H has 1 observations and 5 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 00:00