tangliang0905 发表于 2013-10-28 14:19 
大神,
那么想再继续请教一下,
set 应该是一条一条的读数据,第一个set读取第一条数据 1, 11以后outp ...
个人认为楼主可以这样理解:每一个set语句所读取的数据,相对于其他set语句来说,都是独立的。
比如楼主的例子中,第一个set语句要读取的数据是:
1 11
2 22
3 33
4 44
而第二个set语句要读取的数据是:
1 11
3 33
整个data步的执行情况是这样的:
_N_=1:
1. set a; 读入 数据 1 11;并输出
2. set a(where=(a in (1 3))); 读入数据 1 11。 后面的if语句会将b的值改为11111,输出。
_N_=2:
1. set a; 读入数据2 22; 并输出
2. set a(where=(a in (1 3))); 读入数据3 33。后面的if语句将b的值改为33333,输出。
_N_=3:
1. set a; 读入数据3 33; 输出
2. set a(where=(a in (1 3))); 没有数据可读,整个data步结束,后面的if语句和output语句都不执行。