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
34
35
36
37
38
39
40
* Как произвести вычисления с участием макропеременных.
* Размещено в SPSSX-L 24.09.1999, автор Rolf Kjoeller <rolf.kjoeller@GET2NET.DK>.

/* Вопрос был в следующем: */
/* Возможно ли производить вычисления с макропеременными? */
/* Например, мне нужен макро, которому бы передавалась макропеременная год */
/* и он бы вычислял год 15 лет назад. */


*** Метод1.
define !subtrct (year=!tokens(1) /minus=!tokens(1)) .
preserve .
set printback=on mprint=on errors = off .

/******** Начало интересной части ***
!let !x = !length(!concat(!blanks(!minus)," "))
!let !newyear = !length(!substr(!blanks(!year),!x)) .
/******** Конец интересной части ***

compute tst = !newyear .
restore .
exe.
!enddefine .

!subtrct year=1999 minus=15 .
!subtrct year=1984 minus=25 .
/* ВНИМАТЕЛЬНО!.
!subtrct year=1999 minus=2000 .

*** Метод 2.
define !sub2 (year=!tokens(1) /minus=!tokens(1)) .
COMPUTE tst=!year-!minus.
EXE.
!enddefine.


!sub2 year=1999 minus=15 .
!sub2 year=1984 minus=25 .
/* ВНИМАТЕЛЬНО.
!sub2 year=1999 minus=2000 .