小甲克虫 发表于 2012-12-3 22:11 
谢谢大神不吝赐教。那我的疑惑就来了。
第一,双SET 产生双指针,为什么只有一个存储指针变量的变量_N ...
第一,_n_和SET没有关系,和SET几个数据集也没有关系。它是DATA step运行时,每通过一次DATA语句,_N_的值就加一。所以我不认为_N_是一个指针变量。
第二,SET的数据集的变量在DATA步下一个循环开始时不清空,而是执行到SET语句时由新读进来的变量的值去替换原来的值。如:
data test;
put "==================";
put "BEFORE SET:" _n_= age= x=;
set sashelp.class;
x=1;
put "AFTER SET:" _n_= age= x=;
put "==================";
put;
run;
对于你所提到的第五步,如果程序中是“set ch7.madrid;”,那程序执行过程中返回到DATA步开头时是不会清空表madrid中的变量的值的,只有再次执行 set ch7.madrid;一句时才会用新读进的值替换原来的值。
另外,你所贴出的那五步解释好像并不是针对下面那段程序的。