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
* Во многих макросах используются процедуры, требующие наличия открытого файла данных в редакторе
* даже в том случае, если макрос фактически не использует данные. При этом, например, команда
* DATA LIST не может быть использована внутри макроса. Однако, перед вызовом процедуры, требующей
* наличия данных, может быть вставлен матричный код, создающий данные. Следующий макрос генерирует
* значения случайной нормально распределённой величины. 
* Автор: Fernando Cartwright, Оттава, Канада.
* 15.11.2004.

NEW FILE.

DEFINE mymacro (!POS !TOKENS(1))

/*Начало матричного кода*/
MATRIX.
COMPUTE temp=1.
COMPUTE mylength=(!1-1).

/*Цикл по числу записей, указанных при вызове макроса*/
LOOP i=1 to mylength.
COMPUTE temp={temp;1}.
END LOOP.

/*Сохранение значений вектора в редакторе данных*/
SAVE temp
 /outfile=*
 /variables=temp.
END MATRIX.

COMPUTE random=RV.NORMAL(0,1).
EXECUTE.

!END DEFINE.

/*Запуск макроса с указанием числа записей в новом файле.*/

mymacro 15.