gpt4 book ai didi

sas - 终止整个流程而不是单个程序

转载 作者:行者123 更新时间:2023-12-04 14:20:15 31 4
gpt4 key购买 nike

如果满足此过程中任何程序中的特定条件,是否有办法停止该过程?

我有一个由 5 个 SAS 程序组成的过程。此过程计划在每天早上 8 点运行。但是,有时数据库没有刷新,这个过程会发出奇怪的数字。

我需要有“异常控制”。在第二个程序中,我用一些标准检查数据库。如果没有错误,则继续运行其余代码。否则,发送通知电子邮件并停止运行第二个程序和所有后续程序。

我尝试%abort cancel 但它只终止当前程序。后续程序不受影响。我可以检查每个程序,但这会使代码变得多余...

我也尝试过谷歌“终止 SAS 进程”,但其中大部分都引用了没有帮助的 abort 语句......

最佳答案

如果您使用的是企业指南,它会通过逻辑门内置到程序中。

首先,在确定数据库文件是否通过/失败的程序(“门程序”)中,根据该测试为宏变量赋值。大概这个程序只会做你乐意做的事情,即使它失败了也是如此。

在流程页面上,右键单击确定数据库文件是否通过/失败的程序,然后选择“条件 -> 添加”。

然后添加一个基于宏变量的条件,并使用“等于”和您要查找的值(或“大于”或任何有意义的值)。然后在“Then run this task”之后选择下一个任务;并将其他选项放在 Else 运行此任务之后。

然后,无论哪一个是向前移动的,都应该链接到您要运行的其余程序;不应该结束这个过程。

SAS 在 KB Sample 39995 中给出了如何执行此操作的示例包括一个您可以下载的示例项目。


其次,如果达到错误条件,您可以设置OBS=0。这将使 SAS 继续工作,但在大多数情况下它无法做任何事情(因为 OBS=0,那么它只能影响任何数据集的 0 条记录)。我不确定这是否能保证它不会做任何事情,但就我所做的一切而言,这已经足够了。我还使用了 OPTIONS ERRORABEND 如果您使用外部 libnames 进行所有处理,它工作正常,当 SAS 重新连接时不会自动重新连接。

关于sas - 终止整个流程而不是单个程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36255692/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com