О SPSS макросах
и макросах Кирилла в частности
SPSS макросы это программы для облегчения обработки и анализа данных в статистической программе SPSS Statistics. Пользователь, знающий командный язык SPSS — «синтаксис», — может писать макросы под нужные ему задачи. Как это делать – описано в Справке по синтаксису (“Command Syntax Reference” = “Syntax Reference Guide”), прилагаемому к SPSS. Изучающим программистские возможности SPSS рекомендую книжку Рейналя Левека: Levesque, R. SPSS Programming and Data Management., SPSS Inc (скачать 2-е издание, где макросы описываются лучше всего).
Тем, кто не собирается писать макросы, но хочет их использовать, достаточно знать, что макрос состоит из тела и пусковой команды. Тело это собственно программа, она начинается со слова define
и кончается словом !enddefine
. Макросы, которые вы можете скачать с нашего сайта, помещают свое тело в файлы с расширением SPS. Пусковая команда это в принципе такая же команда как любая команда SPSS-синтаксиса. Она состоит из собственно команды, которая есть имя данного конкретного макроса, и аргументов, т.е. входящих параметров, значения которых должен задать пользователь. Пусковую команду и все описание каждого из здешних макросов вы найдете в соответствующем файле с расширением DOCX (документ Microsoft Word). Там же и примеры. DOCX-файл и SPS-файл вместе находятся в ZIP-архиве, который вы скачиваете со "Страницы SPSS макросов Кирилла".
Почти всегда я пишу макросы так, чтобы аргументы представляли собой подкоманды, подобные подкомандам обычных SPSS-команд. Каждая подкоманда пишется после слэша (/). В отличие от подкоманд при обычных командах, в случае макроса подкоманда, которую вы напишете первой, должна идти без слэша:
!macro vars = v1 v2 /regist = YES.
В этом примере 2 подкоманды, первая упомянутая — без слэша. В большинстве случаев порядок подкоманд не важен, а где не так, я предупреждаю в описании. Заданием для VARS
в примере выше являются имена переменных, т.е. случайные входящие: вы могли бы указать другие переменные, нежели V1
и V2
. Заданием для REGIST
служит ключевое слово, на выбор из некоторого разрешенного списка, например YES
и NO
. Ключевые слова в моих макросах надо писать обязательно прописными буквами. Все остальное можно писать любыми буквами. Не сокращайте ключевые слова и имена подкоманд.
Как запустить макрос. Откройте файл с телом макроса, выделите все его тело и нажмите Run (Пуск). (Если щелкнуть трижды где-л. в теле макроса, все тело выделится.) Это не пуск макроса, но его считка (загрузка) в «память» SPSS. Один и тот же макрос достаточно счесть один раз за сеанс работы с SPSS. В синтаксном окне (Syntax window, рекомендую другое окно, а не то где открылось тело макроса, - чтобы случайно не повредить его) приготовьте пусковую команду для этого макроса. Вы можете ее написать или скопировать из документа с описанием макроса, заменив при этом входящие на нужные вам. Затем выделите пусковую команду или просто поставьте на нее курсор, и нажмите Run.
Сообщения об ошибках. В некоторых макросах я предусмотрел особые сообщения со стороны макроса о типичных ошибках, которые вы можете совершить при задании входящих. Но ни один макрос не следит за всеми возможными нарушениями правил задания, сказанными в его описании. Обычно неправильное задание вызовет сообщения об ошибках со стороны SPSS, но это не во всех случаях имеет место, поскольку неправильное с точки зрения данного макроса задание не обязательно неправильно с точки зрения правил SPSS-синтаксиса. Чтобы не делать ошибок в задании, ознакомьтесь внимательно с описанием конкретного макроса.
Защищенная директория. Некоторые из моих макросов пишут временные файлы на жесткий диск. Если вы не обладаете полными правами Администратора на вашем компьютере, это может вызвать ошибку, говорящую в числе прочего, что вы возможно пытаетесь писать в "to a protected directory". Для решения проблемы скомандуйте перед пуском макроса: CD 'myfolder'.
, где 'myfolder'
это путь/имя папки, куда у вас есть право сохранять файлы.
Умолчания. В описаниях сказано, какие подкоманды можно умалчивать или не задавать. Незадание, т.е. написание подкоманды с пустотой после "=", обычно то же самое, что умолчание подкоманды, но не всегда разрешено.
Текстовые входящие. Входящие, которые в SPSS выступают текстовыми (string) — например описательные ярлыки для переменных или значений — вводятся по обычным правилам SPSS-синтаксиса: в кавычках или апострофах, все равно. Если в тексте есть апострофы как его часть, тогда – только в кавычках. Если в тексте есть кавычки как его часть, тогда – только в апострофах
Юникод-режим. Синтаксис-файлы (.SPS), содержащие данные макросы - это текстовые файлы в Unicode-кодировке. "Data and syntax files saved in Unicode encoding should not be used in SPSS Statistics releases prior to 16.0" - сообщает документ Command Syntax Reference, команда SET. Так что если ваша версия SPSS столь стара, что она ранее 16.0, сначала попробуйте сохранить .SPS-файл в локальной кодировке (Local Encoding - есть такая опция в диалоговом окне Save As).
Изменения в теле макроса. Вряд ли вам потребуется что-либо изменять в теле макроса: максимум параметров я вынес в аргументы, которыми вы можете управлять в пусковой команде. Такие вещи, как число циклов (loops), я предустанавливаю в теле макроса "с запасом". Но если нужно еще большее число циклов, найдите в теле команду SET
и установите там, сколько надо. Если же вы намереваетесь модифицировать (разрабатывать) мои макросы или имеете к тому советы, то осведомляйте, т.к. меня могли бы заинтересовать ваши идеи.