* Исходный файл содержит переменную cat1 типа STRING(A2), у которой есть n различных значений.
* Цель - создать n соответствующих файлов.
* Синтаксис сначала создаёт пример данных.
* Вообще он работает с любым числом любых значений переменной cat1.
* Автор: Raynald Levesque. Размещено в SPSSX-L 09.08.2001.
* Модификация от 24.01.2003.
DATA LIST FREE /cat1(A2).
BEGIN DATA
"A2" "B7" "01" "08" "W7" "XY"
"A2" "A2" "08" "W7" "W7" "XY"
"A2" "B7" "01" "08" "W7" "XY"
END DATA.
LIST.
SAVE OUTFILE='c:\\temp\\mydata.sav'.
* Теперь обработаем этот пример.
set mprint=on.
*//////////////////////////////////////////.
DEFINE !SPLIT (var=!TOKENS(1) /value=!TOKENS(1) )
TEMPORARY.
SELECT IF (!var=!value).
SAVE OUTFILE=!QUOTE(!CONCAT('c:\\temp\\f',!UNQUOTE(!value),'.sav')).
EXECUTE.
!ENDDEFINE.
*//////////////////////////////////////////.
* Определим перечень уникальных значений переменной cat1.
AGGREGATE /OUTFILE=*
/BREAK=cat1 /notused = N.
* Запишем синтаксис, который вызовет макрос, заданный выше.
WRITE OUTFILE='c:\\temp\\temp.sps'
/'!SPLIT var=cat1 value="' cat1 '".'.
Execute.
* Загрузим исходный файл данных и вызовем макрос для его обработки (расщепления на n файлов).
GET FILE='c:\\temp\\mydata.sav'.
INCLUDE 'C:\\temp\\temp.sps'.