RPGプログラムをメモリで実行するにはどうすればよいですか?
-
10-10-2019 - |
質問
FAX/400が動作しているかどうかをチェックするRPGで監視プログラムをコーディングしました。
そして今、私はこのプログラムに15分ごとにチェックしたいと思っています。
ジョブスケジューラに15分ごとにジョブを配置する代わりに(管理するのが醜い)、私はプログラムを使用してチェック間で待機させました DLYJOB
.
では、このプログラムをメモリに「配置」して、実行し続けるにはどうすればよいですか?
(私は使用することを考えました SBMJOB
, 、しかし、私はどの求職者がそれを配置できるかを理解することはできません。)
解決
無限に実行されているジョブに使用するための良いジョークキューは、qsysnomaxです。これにより、無制限の数のジョブが実行されます。
あなたはあなたのキューに仕事を提出することができます qstrtup プログラムとそれは単に常に実行され続けます。
他のヒント
ここで私が過去にしたこと。これには2つのアプローチがあります。
- プログラムが実行される前に、プログラムがDlyjobで実行されるたびに新しいジョブを提出します。
- ループを作成し、特定の条件を考慮してのみ終了します。
モニター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時まで継続的に実行されます。次に、これをジョブスケジューラに追加して、毎朝送信します。
どのjobqまで。私はQINTERを使用していますが、実際にどこでも実行できます。十分に利用可能な実行ジョブを備えたサブシステムを選択することを確認してください。
プログラムが100%CPUにヒットし始めた場合、QINTERで実行するというネガは、インタラクティブなCPUをすべて使い果たし、システムを効果的にロックします。
私はそれに3つの方法を知っています。
1)データキューを使用して、PARMがそれを際限なく待機するように指示することができます。
2)ovrdbf cmdを使用して、PARMが終了したりEOFであったりしてはならないことを伝え、PGMを待ち続けます。
3)最も簡単に実装すると、sbmjobがダウ1 = 1で永遠にループするPGMを呼び出すために、繰り返す前に特定の時間間隔をチェックするコードを挿入できます。ファックスをチェックするループ内にロジックを配置し、処理してから待機に戻ることができます。