缺失值 (LOOP-END LOOP 命令)

  • 如果程序迂到具有初始,终端或增量值或表达式的缺失值的情况,或者如果 LOOP 命令上的条件表达式返回缺失值,那么会将零循环结果和控制传递到 END LOOP 命令之后的第一个命令。
  • 如果案例在 END LOOP 命令上缺少条件表达式的值,那么循环将在第一次迭代后终止。
  • 要防止具有循环结构中使用的任何变量的缺失值的个案进入循环,请在 LOOP 命令上使用 IF 子句 (请参阅下面的第三个示例)。

示例

LOOP #I=1 TO Z  IF (Y GT 10). /*Loop to X=Z for cases with Y GT 10
COMPUTE X=X+1.
END LOOP.
  • 对于 Y 缺失值或 Z 缺失值 (或者如果 Z 小于 1) 的个案, X 的值保持不变。

示例

MISSING VALUES X(5).
LOOP.
COMPUTE X=X+1.
END LOOP IF (X GE 10). /*Loop until X is at least 10 or missing
  • X 的值为 5 时,将终止循环,因为对于 X, 5 定义为缺失。

示例

LOOP IF NOT MISSING(Y). /*Loop only when Y isn't missing
COMPUTE X=X+Y.
END LOOP IF (X GE 10). /*Loop until X is at least 10
  • 对于具有 Y缺失值的个案,变量 X 保持不变,因为从未输入循环。