星期二, 10月 31, 2023

2001-07-24 如何監控 Job Status 為 MSGW 的 Job 並以 e-Mail 自動通知相關人員?


如何監控 Job Status 為 MSGW 的 Job 並以 e-Mail 自動通知相關人員?


1. 請參閱電子報
 “如何從 AS/400  直接傳送 E-Mail to Internet ?“
  設定 AS/400 e-mail 相關設定。


2. FILE  : QCLSRC
   Member: ALERTC
   Type  : CLP

   在這個程式中,我並沒有使用 System API,而是
   使用 TFRCTL 指令,讓 CLP 能重複讀取 PF 
   檔案資料的技巧,才能省略另一支專門讀取檔案
   資料的程式。
      

/* JOB STATUS MONITORING                                           */
/* PROGRAM : ALERTC                                                */
/*                  STATUS : MSGW                                  */
/*                           DLYW                                  */
/*                           HLD                                   */
/* Usage:                                                          */
/*    BEFORE COMPILED,  CRTPF QTEMP/ALERTJOB RCDLEN(132)           */
/*                                                                 */
/*    SBMJOB CMD(CALL ALERTC 'MSGW') JOB(ALERTJOB) JOBQ(QCTL)      */
/*                                                                 */
PGM        PARM(&STS)
             DCL        VAR(&STS) TYPE(*CHAR) LEN(4)
             DCL        VAR(&TXT) TYPE(*CHAR) LEN(60)
             DCLF       FILE(QTEMP/ALERTJOB)

START:       OVRPRTF FILE(QPDSPAJB) HOLD(*YES)
             WRKACTJOB  OUTPUT(*PRINT)
             DLTOVR FILE(QPDSPAJB)
             CHKOBJ     OBJ(QTEMP/ALERTJOB) OBJTYPE(*FILE)
             MONMSG     MSGID(CPF9801) EXEC(DO)
             CRTPF      FILE(QTEMP/ALERTJOB) RCDLEN(132)
             ENDDO
             CPYSPLF    FILE(QPDSPAJB) TOFILE(QTEMP/ALERTJOB) +
                        SPLNBR(*LAST)
             DLTSPLF    FILE(QPDSPAJB) SPLNBR(*LAST)

READ:        RCVF       RCDFMT(ALERTJOB)
             MONMSG     MSGID(CPF0864) EXEC(GOTO CMDLBL(EOF))
             IF         COND(%SST(&ALERTJOB 111 4) *EQ &STS) +
                          THEN(DO)
             CHGVAR     VAR(&TXT) VALUE(&STS *CAT ' STATUS : ' *CAT     +
                          %SST(&ALERTJOB 29 6) *CAT '/' *CAT +
                          %SST(&ALERTJOB 17 10) *TCAT '/' *CAT +
                          %SST(&ALERTJOB 4 10) *CAT '!!!')
             SNDDST     TYPE(*LMSG) +
                          TOINTNET((your-email@your-domain.com)) +
                          DSTD('ALERT') LONGMSG(&TXT) SUBJECT(&TXT)
             SNDBRKMSG  MSG(&TXT) TOMSGQ(DSP01 your-console)
             ENDDO
             GOTO READ
EOF:
             DLYJOB     DLY(180)
             /* RERUN ALERTC FOR REREAD ALERTJOB PF */
             TFRCTL     PGM(ALERTC) PARM(&STS)

END:         ENDPGM
      


沒有留言: