jungsee 发表于 2014-3-30 23:07 
大神,程序的最后两句没有看明白,能否稍微解释一下,我也在google上查询了有关哈希表在SAS中应用的文档 ...
add()那句是要把invest=1的ID+TARGET组合添加到hash表中;
find()那句是说如果hash表中已经有了这个ID+TARGET组合,那就删掉。
这里并没有“一直搜索”的意思。还是应该按照正常的data步去理解,也就是“逐条处理,顺序运行”。
对于当前处理记录:
1. find(): 如果hash表中有相对应的ID+TARGET,则说明之前已经遇到过,就需要删去。
(这里如果执行了delete语句,那之后的语句都会跳过,而直接转到DATA语句。)
2. add(): 如果invest=1, 就把这个ID+TARGET组合加到hash表中。
如果顺序变化的话,每一句的功能不会变,只是最后的效果却不一样。例如执行到到第二行
1 b 2004 1
1. add(): invest=1,所以把ID=1,TARGET=b加到hash表中;
2. find(): 在hash表中找到了对应的ID+TARGET,删掉。