见:https://bbs.pinggu.org/forum.php? ... &from^^uid=165978
就像probel说的,“SET在程序中的位置不重要,即在不在do循环里面不影响SET的运行机制”,也就是,不管有没有在do循环中,set语句读取数据时,总是接着之前的位置读取下一条,不会因为do循环而重新开始。
data4的生成经过两个Do-loop,而set数据的输出需要碰到output或者run之类的语句。第一个只循环一次,所以读取data3的第一条记录,第二个循环了两次,但是因为没有output或run,所以,第二次循环时将第一次覆盖。而第二次循环后,data3到达了结尾,data步结束。所以,最后结果只有两条记录。如果将注释掉的output语句恢复,会有三条记录。
个人理解。