Domanda

ho codificato un programma di monitoraggio in RPG che controlla se il fax / 400 è operativo.

E ora voglio questo programma per verificare ogni 15 minuti.

Invece di mettere un lavoro ogni 15 minuti nel job scheduler (che sarebbe brutto da gestire), ho fatto il programma di attesa tra i controlli utilizzando DLYJOB.

Ora come posso fare questo programma "luogo stesso" in memoria in modo che continua a funzionare?

(ho pensato di usare SBMJOB, ma non posso figura in cui coda di lavoro ho potuto metterlo.)

È stato utile?

Soluzione

Un buon coda di lavoro da utilizzare per un lavoro senza fine corsa sarebbe QSYSNOMAX. Ciò consente un numero illimitato di posti di lavoro per essere in esecuzione.

Si potrebbe inviare il processo a quella coda nel vostro QSTRTUP programma e sarà semplicemente rimangono in esecuzione tutto il tempo.

Altri suggerimenti

Ecco quello che ho fatto in passato. Ci sono due approcci per questo.

  1. Invia un nuovo lavoro ogni volta che il programma viene eseguito con DLYJOB prima che si.
  2. Creare un ciclo ed unico fine dato una certa condizione.

Quello che ho fatto con un programma Monitor MSGW era la seguente:

         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

Questo funziona continuamente fino alle 8:00 pm. Poi aggiungo questo al job scheduler di presentare ogni mattina.

Per quanto riguarda quale jobq. Sto usando QINTER, ma potrebbe davvero essere eseguito ovunque. Assicurati di aver scelto un sottosistema con lavori in esecuzione disponibili sufficienti come questo avrà uno.

Il negativo di esecuzione in QINTER se il programma si avvia a colpire 100% della CPU, che utilizzerà tutta della CPU interattivo ed efficace blocca il sistema.

so di 3 modi per questo.

1) con coda di dati, non v'è parm per dirgli di aspettare all'infinito e al intervallo di tempo.
2) utilizzando OVRDBF cmd, c'è parm lì per dire che non dovrebbe finire o EOF, rendendo il vostro PGM per mantenere ad aspettare.
3) più semplice da implementare, SBMJOB chiamare un PGM che loop sempre ad esempio con DOW 1 = 1, è possibile inserire un codice per verificare la presenza di certo intervallo di tempo prima che si itera. Si può avere la logica all'interno del ciclo che verifica la presenza di fax, elaborarla e poi di nuovo ad aspettare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top