Запуск макроса лишь при наличии наблюдений
1 2 3 4 5 6 7 8 9 10 | * Как перед запуском макроса проверить наличие наблюдений в файле? * Автор: Raynald Levesque, 13.11.2005, www.spsstools.net. ***************************. *Шаг 1 (выполняется один раз): ***************************. * Сохраните этот программный блок в файл "c:\\temp\\Run local if there are cases.SPS". *---------------------------------. BEGIN PROGRAM python. |
11 12 13 14 15 | import spss if spss.GetCaseCount() == 0: # т.е. пусто; макрос !local не запускаем, печатаем сообщение и выходим. spss.Submit("TITLE *Файл пуст, макрос запущен не будет") else: spss.Submit("!local.") # передаём в SPSS команду на запуск !local |
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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | END PROGRAM. *Код, расположенный выше, назовём "программным блоком". ***************************. * Шаг 2 (выполняется один раз): ***************************. * Включим определение этого макроса в файл синтаксиса, исполняющийся при каждой загрузке SPSS. *(как сделать такой файл? См. http://www.spsstools.ru/Scripts/Utils/AutomaticallyRunAscriptOrSyntaxWhenSPSSstarts.txt). DEFINE !RunIfCase(). INSERT FILE="c:\\temp\\Run local if there are cases.SPS". !ENDDEFINE. *Примеч.: программные блоки не могут включаться внуть определения макроса, но вариант, предложенный выше, работает. * ПРИМЕР №1. *Допустим, исходный синтаксис таков. GET FILE="C:\\Program Files\\SPSS\\employee data.sav". SELECT IF jobcat=10. GRAPH /BAR(SIMPLE)=COUNT BY jobcat . FREQ VAR= gender. *Модифицируем его следующим образом. GET FILE="C:\\Program Files\\SPSS\\employee data.sav". SELECT IF jobcat=3. EXECUTE. /* Тут необходима вставка EXECUTE чтобы обновить информацию о числе наблюдений в файле после отбора. */ DEFINE !local() GRAPH /BAR(SIMPLE)=COUNT BY educ . FREQ VAR= gender. !ENDDEFINE !RunIfCase. * ПРИМЕР №2. GET FILE='C:\\Program Files\\SPSS\\employee data.sav'. SET MPRINT=NO. SELECT IF 1=0 /* Чтобы получить пустой набор данных и убедиться, что макрос сработал как надо */ . EXE. *Следующий макрос содержит код, который должен быть исполнен лишь при непустом наборе данных. DEFINE !local() SET MPRINT=YES. GRAPH /BAR(SIMPLE)=COUNT BY jeduc . !ENDDEFINE. !RunIfCase. |
Related pages
...