2016-02-08 2 views
2

Я использую пакетный файл, который вызывает производственное задание SPSS, которое запускает много файлов синтаксиса.Выход с кодом ошибки из синтаксиса SPSS

В файлах синтаксиса я хочу проверить некоторые переменные, и если определенные условия не выполняются, я хочу остановить производственное задание, выйти из SPSS и вернуть код ошибки в пакетный файл.

Пакетный файл должен прекратить выполнение следующих команд на основе возвращенного кода ошибки. Я знаю, как это сделать в пакетном файле.

Самое основное решение может быть, если код ошибки не равен 0, затем остановится, а текст ошибки будет выводиться в отдельный текстовый файл из синтаксиса. Бонус был бы другим кодом ошибки, который я мог бы затем сопоставить с тем, где в синтаксисе, который генерируется кодом.

Каков наилучший способ достичь этого в синтаксисе и/или производственном файле SPSS?

ответ

2

Один из способов сделать это - выполнить статистику как внешнее задание на Python. Затем вы можете опросить любые результаты, поймать исключения и установить коды выхода и сообщения, как вам нравится. Вот пример:

jobs.py:

работы Python

импорт SYS
sys.path.append (г "" "C:/spss23/питон/Lib/сайт-пакеты" "")
импорт SPSS

попробовать:
spss.Submit ("" "ВСТАВИТЬ FILE =" C: /temp/syntax1.sps " """) кроме:
печати «. syntax1.spss не удалось " выход (код = 1)

попробовать:
spss.Submit ("" "ВСТАВИТЬ FILE =" C: " "/temp/syntax2.sps"")
кроме:
печати «Синтаксис 1. SPSS не удалось»
выхода (код = 2)

Затем файл летучая мышь будет делать
питона C: /myjobs/jobs.py
печати% ERRORLEVEL%

или аналогичный. Задание должно сохранить выход в соответствующем формате с использованием OMS или перенаправления оболочки. (Блоки после try и except должны быть отступом.)

+0

Как бы синтаксис SPSS выдавал исключение? –

+0

Если в представленных командах SPSS имеется ошибка с уровнем серьезности 3 или выше, возникает исключение Python. Сев 3 и выше означает, что команда не удалась. Уровни 1 и 2 - это просто предупреждения, которые позволяют команде завершить. Существует api для получения уровня ошибок, если вы хотите более тонкое управление, но вам нужно будет отправлять команды один за другим, чтобы это было полезно. – JKP

+0

Не понимаю, как это отвечает на мой вопрос? Я хочу, чтобы SPSS выбрасывал исключение. Я хочу, чтобы где-то в синтаксисе SPSS я могу иметь условие, которое создает ошибку. –

0

В внешнем режиме вы можете использовать такой код, или вы могли бы опросить элементы в средстве просмотра.

import spss, spssdata 

curs = spssdata.Spssdata("variable2") 
for case in curs: 
    if case[0] == 6: 
     exit(99) 
curs.CClose