延迟启动 SAS EG 中的程序

Delayed start of a program in SAS EG

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

例如

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

请原谅我写的粗制滥造的代码,这是在没有 SAS 的情况下完成的。 此外,我不想使用任何 SQL 服务器,例如 T-SQL.

本质上是无限循环是否有害?

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

在日期时间唤醒:

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

一次唤醒:

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

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