我在RPG中编码了一个监视程序,该程序检查传真/400是否运行。

现在,我希望该程序每15分钟检查一次。

我没有在工作调度程序中每15分钟安排每15分钟的工作(这将是丑陋的) DLYJOB.

现在,如何使该程序“将自己放置”在内存中,以使其保持运行?

(我想使用 SBMJOB, ,但我无法弄清楚我可以将哪个工作排队放置。)

有帮助吗?

解决方案

QSysnomax是一个不断运行的工作的好工作队列。这允许无限数量的作业运行。

您可以在您的队列中提交工作 QSTRTUP 程序,它将一直保持运行。

其他提示

我过去所做的。有两种方法。

  1. 每次程序运行之前,每次使用Dlyjob运行时提交新工作。
  2. 创建一个循环,只有一定条件才能结束。

我使用Monitor MSGW程序所做的是以下内容:

         PGM     
         DCL        VAR(&TIME) TYPE(*CHAR) LEN(6)
         DCL        VAR(&STOPTIME) TYPE(*CHAR) LEN(6) +
                      VALUE('200000')   
         /* Setup my program (run only once) */
START:
         /* Perform my actions */

         RTVSYSVAL  SYSVAL(QTIME)  RTNVAR(&TIME)
         IF         COND(&TIME *GE &STOPTIME) THEN(GOTO CMDLBL(END))
         DLYJOB     DLY(180)
         GOTO       CMDLBL(START)
END:
         ENDPGM

这将连续运行到晚上8:00。然后,我将其添加到工作调度程序中,每天早上提交。

至于哪个JobQ。我正在使用QINTER,但它确实可以在任何地方运行。确保您选择一个具有足够可用的运行作业的子系统,因为这将需要一个。

如果程序开始达到100%的CPU,则在Qinter中运行的负面影响,这将消耗您的所有交互式CPU并有效地锁定您的系统。

我知道有3种方法。

1)使用数据队列,有Parm可以告诉它无休止地等待时间间隔。
2)使用OVRDBF CMD,那里有Parm可以说它不应结束或EOF,使您的PGM保持在等待。
3)最容易实施的是,SBMJOB调用一个PGM,该PGM永远循环使用DOW 1 = 1,您可以在迭代之前插入代码以检查某些时间间隔。您可以在循环中将逻辑放置在检查传真,对其进行处理然后返回等待。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top