我正在使用一个批处理文件来调用运行许多语法文件的SPSS生产作业。
在语法文件中,我希望能够检查一些变量,如果不满足某些条件,那么我想停止生产作业,退出SPSS并将错误代码返回到批处理文件。
批处理文件需要根据返回的错误代码停止运行下一个命令。我知道如何在批处理文件中执行此操作。
最基本的解决方案可能是如果错误代码不是0则停止,并且错误文本将从语法中输出到单独的文本文件。奖金将是一个不同的错误代码,然后我可以匹配到抛出代码的语法中的位置。
在SPSS语法和/或生产文件中实现此目的的最佳方法是什么?
答案 0 :(得分:2)
执行此操作的一种方法是将Statistics作为外部模式Python作业执行。然后,您可以询问任何结果,捕获异常,并设置退出代码和消息,但是,您喜欢。这是一个例子:
jobs.py:
import sys
sys.path.append(R""" C:/ spss23 /蟒/ LIB /站点包""")
import spss
尝试:
spss.Submit(""" INSERT FILE =" c:/temp/syntax1.sps"。""")
除了:
print" syntax1.spss失败"
出口(代码= 1)
尝试:
spss.Submit(""" INSERT FILE =" c:/temp/syntax2.sps"。""")
除了:
print" syntax1.spss失败"
退出(代码= 2)
然后bat文件会执行
python c:/myjobs/jobs.py
打印%ERRORLEVEL%
或类似的。该作业需要使用OMS或shell重定向以适当的格式保存输出。 (try和except之后的块应该缩进。)
答案 1 :(得分:0)
在外部模式下,您可以使用这样的代码,也可以在查看器中查询项目。
import spss, spssdata
curs = spssdata.Spssdata("variable2")
for case in curs:
if case[0] == 6:
exit(99)
curs.CClose