1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
* Пропущенные значения и конструкции DO IF.

* Согласно "Руководству по синтаксису" (Command Syntax Reference):
*"Пропущенные значения, возникшие в условиях DO IF или ELSE IF, вызывают переход к оператору END IF".

* Автор: rlevesque@videotron.ca.

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.

* ...не сработает, так как если результат сравнения a=1 является пропущенным значением, выполнение немедленно переходит к 
* концу конструкции: END IF.
* Таким образом, условие MISSING(a) даже не будет проверено.

С другой стороны, следующий вариант работоспособен:.

DO IF MISSING(b).
	COMPUTE b1=2.
ELSE IF b=1.
	COMPUTE b1=1.
END IF.