Вот что я сделал в прошлом. Есть два подхода к этому.
- Отправляйте новое задание каждый раз, когда программа запускается с DLYJOB, прежде чем она запустится.
- Создать цикл и завершить его только при определенных условиях.
То, что я сделал с программой 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 вечера. Затем я добавляю это в планировщик заданий для отправки каждое утро.
Насколько задание. Я использую QINTER, но он действительно может быть запущен где угодно. Убедитесь, что вы выбрали подсистему с достаточным количеством доступных рабочих мест, так как она займет одно.
Недостаток работы в QINTER, если программа начинает загружать 100% CPU, это израсходует весь ваш интерактивный процессор и эффективно блокирует вашу систему.