SAS data step 包含两个阶段,编译和执行阶段,具体流程如下:
一般来讲,SAS DATA Step处理的第一阶段是编译阶段,主要执行以下任务:
1.自动将SAS语句转换为稍后要执行的机器代码
2. 标识变量的类型以及长度
3. 确定后续的引用是否需要对变量进行类型转化
4. 若存在外部的input语句,则创建输入缓冲区
5. 创建程序数据向量(PDV)
6. 创建数据集和变量的描述性信息
7. 执行语句,但仅限于编译;给编译器如何开始提供相应的信息:DROP,KEEP,RENAME,RETAIN,WHERE,LABEL,LENGTH,FORMAT,ARRAY,BY,ATTRIB
8. 创建自动变量:N,ERROR,END=,IN=,FIRST,LAST,POINT=
第二阶段是执行阶段:
1.从data语句开始,并将_N_变量设置为1(每第二代一次DATA步,_N_加1)。
2. 在PDV中将变量值设置为缺失
3. 使用Input 语句将数据记录读入缓冲区(如果读取原始文件)
4. 使用以下语句之一从SAS数据集读取SAS观察结果:set,merge,modify,update
5. 执行data步内的语句
6. 将观测写入OUTPUT 的数据集(data null 除外)
7. 返回至data 语句
8. 每次迭代