首页 > 解决方案 > SAS EG 中的程序延迟启动

问题描述

目前我每天早上都在运行一个程序,因为我正在开发它,所以我可以使用今天的数据我的问题是它确实需要一些时间来运行。我想知道是否有人知道我可以编写一些代码,这样当我单击运行时,它会等到特定时间开始。目前我正在考虑在顶部添加一个循环来尝试这样做:

例如

%macro delay();
    data _null_;
         if %sysdate() >= 8:00 then %put Start;
         else %delay();
    run;
%mend;

原谅伪劣代码编写,在没有 SAS 的情况下这样做。此外,我不想使用任何 SQL 服务器,如 T-SQL。

无论如何,制作本质上的无限循环是否有害?

标签: mysqlsqlsassas-macro

解决方案


WAKEUP() 函数可以使您的 SAS 会话休眠到指定时间。还有一个 SLEEP() 函数。WAKEUP() 接受日期时间或时间。从文档:

在日期时间唤醒:

data _null_;
   slept=wakeup('01JAN2004:13:00:00'dt);
run;

一次唤醒:

data _null_;
   slept=wakeup("22:00:00"t);
run;

这应该比无限循环使用更少的 CPU 资源。


推荐阅读