t*****8 发帖数: 157 | 1 程序如下:
data _null_;
set cnt;
i+1;
ii=left(put(i,2.));
call symput('name'||ii,clinname);
%put &&name&i;
run;
log:
WARNING: Apparent symbolic reference I not resolved.
WARNING: Apparent symbolic reference NAME not resolved.
WARNING: Apparent symbolic reference I not resolved.
&name&i
但是我加了LOOP在下面就可以了,为什么?
%do i=1 %to &sqlobs;
%put &&name&i;
%end; |
B****k 发帖数: 188 | |
t*****8 发帖数: 157 | 3 i 不需要定义。这是Carpenter__s_Complete_Guide_to_SAS_Macro的一个程序在131页。
**********************;
***6.5.3c
***
**********************;
proc summary data=sasclass.clinics noprint nway;
class clinname;
var dob;
output out=cnt n=count;
run;
data _null_;
set cnt;
i+1;
ii=left(put(i,best12.));
call symput('name'||ii,clinname);
call symput('cnt'||ii,left(put(_freq_,best12.)));
call symput('namecnt',ii);
run; |
p********a 发帖数: 5352 | 4 MACRO VAR i需要定义。你的例子中又没有%put &&name&i; |
t*****8 发帖数: 157 | 5 原来如此, 那么i+1中的i,是什么,也没有定义,是roe number? |
p********a 发帖数: 5352 | 6 I+1; 是从C语言里的指针借用过来的吧。它似乎等于retain i; i=i+1;你可以自己查查 |
t**c 发帖数: 539 | 7 i+1定义了i,但是macro variable “i”没有被定义。 |