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
41
* ВОПРОС: В макрос передаётся чётное число имён переменных. Как мне использовать их пара за парой?.

* ОТВЕТ. Автор: rlevesque@videotron.ca.
* Если вопрос не слишком понятен, всё станет яснее, когда вы запустите синтаксис и посмотрите на результат.
* Данный синтаксис может быть полезен в том случае, когда число передаваемых переменных может меняться.

SET MPRINT=yes.

* Смоделируем данные.
INPUT PROGRAM.
LOOP #cnt=1 TO 100.
DO REPEAT var=var001 var002 var002a var004 varc varz break1 ct.
COMPUTE var=RND(UNIFORM(5)).
END REPEAT.
END CASE.
END LOOP.
END FILE.
END INPUT PROGRAM.
SET MPRINT=yes.

*Определяем макрос.
DEFINE !macro (!POS=!CMDEND)
!LET !cnt=""
!DO !var !IN (!1)
!LET !cnt=!CONCAT(!cnt," ")

!IF (!LEN(!cnt)=1) !THEN !LET !arg1=!var
!ELSE
!LET !arg2=!var 
TABLES FORMAT=ZERO
 /PTOTAL=T1'YTD 2000' /TABLE CT + !arg1 + !arg2 BY break1 
 /STATISTICS=COUNT ('') CPCT (''(PCT4.0):break1 ). 
!IFEND

!IF (!LEN(!cnt)=2) !THEN !LET !cnt="" !IFEND

!DOEND
!ENDDEFINE.

* Вызов макроса.
!macro var001 var002 var002a var004 varc varz.