Подключать синтаксис к обработке в зависимости от наличия переменной
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 42 | * Допустим, по ходу преобразования данных вам нужно выполнить файл синтаксиса "c:\\temp\\mysyntax.sps", * но не безусловно, а по условию - только если на момент возможного запуска в файле данных * отсутствует некоторая переменная. * Данный макрос проверяет, существует ли эта переменная, и запускает синтаксис при её отсутствии. * Примеч.: перед пробным запуском синтаксиса вам нужно иметь готовый файл "c:\\temp\\mysyntax.sps". * Он может содержать, по крайней мере, одну строчку с комментарием: "* Это файл mysyntax.sps". * Размещено в SPSSX-L 24.04.2001. Автор: rlevesque@videotron.ca. SET MPRINT=yes. */////////////////////////////. DEFINE !exist (varname=!TOKENS(1)) SAVE OUTFILE='c:\\temp\\temp.sav'. N OF CASES 1. FLIP. IF (!QUOTE(!UPCASE(!varname))=CONCAT('',RTRIM(UPCASE(case_lbl)),'')) exist=1. COMPUTE dummy=1. AGGREGATE /OUTFILE=* /BREAK=dummy /exist = MAX(exist). DO IF ~MISSING(exist). WRITE OUTFILE='c:\\temp\\testvar.sps' /'* Ничего не делаем, так как переменная существует.'. ELSE. WRITE OUTFILE='c:\\temp\\testvar.sps' /'* Переменная не существует, надо исполнять файл.' /'INCLUDE FILE=''c:\\temp\\mysyntax.sps''.'. END IF. EXECUTE. GET FILE='c:\\temp\\temp.sav'. INCLUDE FILE='c:\\temp\\testvar.sps'. !ENDDEFINE. */////////////////////////////. GET FILE='c:\\program files\\spss\\employee data.sav'. * Следующий вызов макроса НЕ приведёт к выполнению файла mysyntax.sps. !exist varname=educ. GET FILE='c:\\program files\\spss\\employee data.sav'. * Следующий вызов макроса ПРИВЕДЁТ к выполнению файла mysyntax.sps. !exist varname=notexist. |
Related pages
...