Loops SAS连续环路

Loops SAS连续环路,loops,sas,continuous,Loops,Sas,Continuous,我可以理解为什么它是数据测试的连续循环,但我不知道如何解释为什么数据m1不是无限循环。(t1有29条记录) 有人有什么想法吗?感谢您的帮助。M1步骤中的第一个SET语句定义了数据步骤何时停止。它看到T1数据集的结束并停止 M1步骤中的第一个SET语句定义数据步骤何时停止。它看到T1数据集的结束并停止 M1步骤中的第一个SET语句定义数据步骤何时停止。它看到T1数据集的结束并停止 M1步骤中的第一个SET语句定义数据步骤何时停止。它看到T1数据集的结束并停止 每当出现文件结束条件时(当不再存在记录

我可以理解为什么它是数据测试的连续循环,但我不知道如何解释为什么数据m1不是无限循环。(t1有29条记录)


有人有什么想法吗?感谢您的帮助。

M1步骤中的第一个SET语句定义了数据步骤何时停止。它看到T1数据集的结束并停止

M1步骤中的第一个SET语句定义数据步骤何时停止。它看到T1数据集的结束并停止

M1步骤中的第一个SET语句定义数据步骤何时停止。它看到T1数据集的结束并停止

M1步骤中的第一个SET语句定义数据步骤何时停止。它看到T1数据集的结束并停止

每当出现文件结束条件时(当不再存在记录时,尝试从文件或数据集读取数据),数据步骤就会“停止”

在第一个示例中,数据步骤从名为
t1
的表(数据集)中读取记录,然后从表
t2
中读取29条记录。输出表
m1
的记录数将与
t1
中的记录数相同。一旦该步骤尝试从
t1
读取新记录,该步骤将立即停止

第二个示例将永远运行,因为它从未遇到文件结束条件。它将继续输出记录,直到磁盘空间用完或中断该步骤。

每当出现文件结束条件时(当不再存在记录时,尝试从文件或数据集读取数据),数据步骤将“停止”

在第一个示例中,数据步骤从名为
t1
的表(数据集)中读取记录,然后从表
t2
中读取29条记录。输出表
m1
的记录数将与
t1
中的记录数相同。一旦该步骤尝试从
t1
读取新记录,该步骤将立即停止

第二个示例将永远运行,因为它从未遇到文件结束条件。它将继续输出记录,直到磁盘空间用完或中断该步骤。

每当出现文件结束条件时(当不再存在记录时,尝试从文件或数据集读取数据),数据步骤将“停止”

在第一个示例中,数据步骤从名为
t1
的表(数据集)中读取记录,然后从表
t2
中读取29条记录。输出表
m1
的记录数将与
t1
中的记录数相同。一旦该步骤尝试从
t1
读取新记录,该步骤将立即停止

第二个示例将永远运行,因为它从未遇到文件结束条件。它将继续输出记录,直到磁盘空间用完或中断该步骤。

每当出现文件结束条件时(当不再存在记录时,尝试从文件或数据集读取数据),数据步骤将“停止”

在第一个示例中,数据步骤从名为
t1
的表(数据集)中读取记录,然后从表
t2
中读取29条记录。输出表
m1
的记录数将与
t1
中的记录数相同。一旦该步骤尝试从
t1
读取新记录,该步骤将立即停止


第二个示例将永远运行,因为它从未遇到文件结束条件。它将继续输出记录,直到磁盘空间用完或中断该步骤。

其他人所说的是正确的。SAS数据步骤是一个隐式循环,在满足特定条件时结束。我认为第二个数据步骤是连续无限的,因为do循环之外没有
setDataSet
语句。因此,数据步骤循环不知道关于文件结尾(EOF)的任何信息。
do
循环内的
未观察到EOF,因此无法停止

data test
中,结束无限循环的条件触发器是
set
语句,它位于
do
循环之外,因为数据集的条目数量有限。这意味着EOF是可到达的。一旦数据集循环被告知已达到EOF且无法进一步读取,它将结束循环


此外,还可以使用其他触发器,如
停止语句或提示用户按一些键结束循环

其他人所说的是对的。SAS数据步骤是一个隐式循环,在满足特定条件时结束。我认为第二个数据步骤是连续无限的,因为do循环之外没有
setDataSet
语句。因此,数据步骤循环不知道关于文件结尾(EOF)的任何信息。
do
循环内的
未观察到EOF,因此无法停止

data test
中,结束无限循环的条件触发器是
set
语句,它位于
do
循环之外,因为数据集的条目数量有限。这意味着EOF是可到达的。一旦数据集循环被告知已达到EOF且无法进一步读取,它将结束循环


此外,还可以使用其他触发器,如
停止语句或提示用户按一些键结束循环

其他人所说的是对的。SAS数据步骤是一个隐式循环,在满足特定条件时结束。我认为第二个数据步骤是连续无限的,因为do循环之外没有
setDataSet
语句。因此,数据步骤循环不知道关于文件结尾(EOF)的任何信息。
do
循环内的
未观察到EOF,因此无法停止

在数据测试中,结束无限循环的条件触发器是
data m1;
set t1;
do i = 1 to 29;
    set t2 point=i;
end;
run;

data test;
do i=1 to 29;
    set t2 point=i;
end;
run;