3

I coded a monitoring program in RPG that checks if the fax/400 is operational.

And now I want this program to check every 15 minutes.

Instead of placing a job every 15 minutes in the job scheduler (which would be ugly to manage), I made the program wait between checks using DLYJOB.

Now how can I make this program "place itself" in memory so it keeps running?

(I thought of using SBMJOB, but I can't figure in which job queue I could place it.)

4

3 に答える 3

2

ここで私が過去にやったこと。これには 2 つのアプローチがあります。

  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

20:00まで連続して運行されます。次に、これをジョブ スケジューラに追加して、毎朝送信します。

どのジョブqまで。QINTER を使用していますが、実際にはどこでも実行できます。これには 1 つかかるため、実行中のジョブが十分にあるサブシステムを選択してください。

プログラムが 100% の CPU を使用し始めた場合、QINTER で実行することのマイナス面です。これにより、対話型 CPU がすべて使用され、システムが効果的にロックされます。

于 2010-10-21T19:17:05.250 に答える
2

私はそれへの3つの方法を知っています。

1)データキューを使用して、無限に時間間隔で待機するように指示するparmがあります。
2) OVRDBF cmd を使用すると、終了または EOF してはならないことを示す parm があり、pgm が待機し続けるようになります。
3) 実装が最​​も簡単な sbmjob は、永遠にループする pgm を呼び出します。たとえば、DOW 1=1 の場合、反復する前に特定の時間間隔をチェックするコードを挿入できます。ファックスをチェックして処理し、待機に戻るループ内にロジックを含めることができます。

于 2016-01-25T13:23:22.993 に答える
2

絶え間なく実行されるジョブに使用するのに適したジョブ待ち行列は、QSYSNOMAX です。これにより、無制限の数のジョブを実行できます。

QSTRTUPプログラムでそのキューにジョブをサブミットすることができ、そのジョブは常に実行されたままになります。

于 2010-10-21T20:47:49.077 に答える