SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1408|回复: 6
打印 上一主题 下一主题

例子:宏变量的拼接和引用

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2003-12-19 09:07:16 | 只看该作者

例子:宏变量的拼接和引用

例子:
程序是这样的:
%let zd001=coilno as m_no,
           FAANFA204,
           FAANFA407_1;
           
%let zd002=coilno as m_no,
           FASLF006;
                  
%let zd003=coilno as m_no,
           MCC1F025;
  中间略……      
%let zd009=coilno as m_no,
           MFT1F031_1,
           MFT1F031_2,
           MFT1F031_3,
           MFT1F031_4,
           J;

%macro cre00(i);
%do j=1 %to &i;
proc sql;
    create table tch100&j
    as select &zd00&j from suipc000&j where coilno in (select coilno from tmp0);
quit;
%end;
%mend;
%cre00(9);

这个程序是错误的,&zd00&j的意思取zd00的值与j的值拼在一起。
SAS出现如下出错信息:
NOTE: Line generated by the invoked macro "CRE00".
1 &zd00&j from ipc_1580.suipc000&j where
-
22
1 ! coilno in (select coilno from tmp0); quit;
ERROR 22-322: Syntax error, expecting one of the following: a name, a quoted string,
a numeric constant, a datetime constant, a missing value, INPUT, PUT, USER.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2003-12-19 09:32:00 | 只看该作者
现在改成这样了,还是错的

%macro cre00(zd,i);
%do j=1 %to &i;
proc sql;
    create table tch100&j
    as select &zd&j from ipc_1580.suipc000&j where coilno in (select coilno from tmp0);
quit;
%end;
%mend;
%cre00(zd00,9);


出错信息:
ERROR: The following columns were not found in the contributing tables: zd001.
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE SQL used:
      real time           0.01 seconds
      cpu time            0.01 seconds



ERROR: The following columns were not found in the contributing tables: zd002.
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE SQL used:
      real time           0.01 seconds
      cpu time            0.01 seconds
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2003-12-19 09:50:25 | 只看该作者
解决了!!

%macro cre00(zd,i);
%do j=1 %to &i;
proc sql;
    create table tch100&j
    as select &&&zd&j from ipc_1580.suipc000&j where coilno in (select coilno from tmp0);
quit;
%end;
%mend;
%cre00(zd00,9);
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2003-12-19 09:51:47 | 只看该作者
你们这里解决问题的速度,太慢了!应该有个常驻班主才是呀
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2003-12-19 09:53:12 | 只看该作者
我一个人在这里自言自语,真没意思!!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2003-12-19 11:08:40 | 只看该作者
回应一下,免得apan太寂寞!!

<!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->  <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->  <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->  <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2003-12-19 13:19:59 | 只看该作者
谢谢!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-7 12:09 , Processed in 0.233318 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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