Jackywolf_2008 发表于 2012-2-22 17:39 
数据集变量和宏变量是两个概念,在同一个data step中不可使用数据集的变量给宏变量赋值,因为在run;语句提交 ...
太感谢您了,您从根本上解决了我心中的疑惑,如果有多个变量需要调用的话,比如宏中有两个变量。那么就需要在data步骤里面用两次 call symput()函数来调用这两个参数对吧?还有就是我用call symput()函数,运行的结果是只把最后一个观测的变量的values传出去了,而不是每一个都传出去了。怎么回事儿呢?请看下面这个例子:proc sql;
create table customer(
id int,
name char(50)
)
;
data test1;
input id name $;
datalines;
1 wang
2 lei
3 wency
4 lucy
5 jacky
;
run;
data test;
set test1;
call symput('id',id);
call symput('name',name);
run;
%chage(&id,&name);
%macro chage(id,name);
proc sql;
insert into customer (id,name) values (&id,&name);
%mend;
我想把test1的值保存在test里面的同事还保存到表customer中,就用了这个宏。有两个问题,第一 values后面跟的参数总是报错,说格式不对。第二,就算运行成功 customer表里面也只有一个值,就是test1的最后一个观测。5 jacky。 我该怎么办才能把所有记录都保存呢,难道symput只能读取最后一个观测?