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
33
* Странное свойство обработчика макросов.
* Размещено в SPSSX-L, David Marso, 19.12.2000.


*Обработчик макросов (MACRO parser) делит некоторые параметры,  представляющие собой комбинации цифр и символов (как, например, 234С) на 2 параметра!.

STRING dx1, dx2_1 to dx2_15 (A8).

** ЭТО РАБОТАЕТ НЕПРАВИЛЬНО **  .
DEFINE diagflag (!POS  !CMDEND ).
!DO !diag !IN ( !1 ) .
-      COMPUTE FLAGDMM= FLAGDMM OR ANY(!QUOTE(!diag), dx1, dx2_1 to dx2_15).
!DOEND.
!ENDDEFINE.
set mprint on.

** Проверим... Опс! **.
NUMERIC FLAGDMM.
diagflag 1234 234C CODE 666S 333A A33c3d 234c3.
exe .

** ЭТО РАБОТАЕТ ПРАВИЛЬНО ** .
DEFINE diagflg2 (!POS  !CMDEND ).
!DO !diag !IN ( !1 ) .
-      COMPUTE FLAGDMM2=FLAGDMM2 OR ANY(!diag, dx1, dx2_1 to dx2_15).
!DOEND.
!ENDDEFINE.
set mprint on.

** Проверим... Всё ОК ** .
NUMERIC FLAGDMM2 .
DIAGFLG2 '1234' '234C' 'CODE' '666S' '333A' 'A333' '234c3'.
exe .