DO IF 結構的遺漏值

遺漏值會影響來自 DO IF 結構的結果,因為如果表示式評估為遺漏,則控制將立即傳遞至該點的 END IF 指令。為避免此類型的問題,您應於評估任何情況之前先嘗試處理 DO IF 結構中的遺漏值。

*create sample data with missing data.
DATA LIST FREE (",") /a.
BEGIN DATA
1, , 1 , ,
END DATA.

COMPUTE b=a.

* 下列內容不起作用,因為尚未評估第二種狀況。
DO IF a=1.
- COMPUTE a1=1.
ELSE IF MISSING(a).
- COMPUTE a1=2.
END IF.
* 另一方面,下列內容起作用。
DO IF MISSING(b).
- COMPUTE b1=2.
ELSE IF b=1.
- COMPUTE b1=1.
END IF.EXECUTE.

在此範例中,DO IF MISSING(b) 將一律評估為 true 或者 false,且永不為遺漏,就可排除第一個狀況可能不經評估其他狀況便評估為遺漏且傳遞控制項至 END IF 的情況。

表 1. 包含遺漏值的 DO IF 結果
a b a1 b1
1 1 1 1
遺漏 遺漏 遺漏 2
1 1 1 1
遺漏 遺漏 遺漏 2