首先data步的运行是分为两个阶段,编译和执行阶段,编译阶段主要是来开辟内部空间,构成PDV
编译阶段主要的两个操作:
1、PDV的第一步会把输入数据集相关变量的表头copy到PDV中
2、后续语句有新的变量也会开辟在PDV中,做完就编译结束,就会把PDV里面的表头输出到输出数据集中
然后就是进行到了执行阶段:
1、初始化PDV,所有值全部清空,然后读取输入数据集第一条观测放到PDV中,然后根据语句进行相关的操作与计算,遇到output就输出到输出数据集中;然后由于run语句之前的,包含隐藏的return语句,就会重新循环
2、这个时候重新初始化,但是这里需要注意下规则(由input语句和赋值语句创建的变量会被初始化,由set语句读取的变量不会被重新初始化),就相当于这个时候有一些变量会被初始化为缺失值,另一些没有被初始化的,就会被下一行观测给覆盖掉,然后进行相关的操作,直至输入数据集的所有观测全部结束。