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
* (Вопрос) Допустим, имеется поле x с номерами SSN (social security numbers - номера социальных страховок).
* Мне нужно увидеть в каких строках введённые номера записаны в неверном формате.


* (Ответ) Автор: Raynald Levesque. Размещено в новостной группе 1.8.2002.

* Пример данных.
DATA LIST FIXED /ssn 1-11 (A).
BEGIN DATA
123-45-6789
1234-5-6789
12e-45-6789
123&45-2222
END DATA.
LIST.

* Проверяем два символа 2 "-".
COMPUTE test1=SUBSTR(ssn,4,1)="-" & SUBSTR(ssn,7,1)="-".

* Проверяем, что остальные символы - цифры.
COMPUTE test2=~MISSING(NUMBER(CONCAT(SUBSTR(ssn,1,3),SUBSTR(ssn,5,2),SUBSTR(ssn,8)),F9.0)).
COUNT error=test1 test2 (0).
EXECUTE.

* Переменная error даёт число выявленных ошибок.