欠損値 (LOOP-END LOOP コマンド)
- プログラムが、初期値、端末値、増分値、または式の値が欠落しているケースを検出した場合、または
LOOPコマンドの条件式が欠落しているケースを返した場合は、ゼロ・トリップ・ループが発生し、END LOOPコマンドの後の最初のコマンドに制御が渡されます。 END LOOPコマンドの条件式にケースの値が指定されていない場合、ループは最初の反復の後に終了します。- ループ構造で使用される変数の欠損値を持つケースがループに入らないようにするには、
LOOPコマンドでIF節を使用します (以下の 3 番目の例を参照)。
例
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.
- X の値は、 Y の欠損値または Z の欠損値を持つケース (または Z が 1 より小さい場合) でも変更されません。
例
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 の場合に終了します。これは、5 が Xに対して欠損値として定義されているためです。
例
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
- 変数 X は、 Yの値が欠損しているケースについては変更されません。これは、ループに入ることがないためです。