/* The program name is HRTBEAT. */ /*****************************************************************************/ /* PROGRAM TO MONITOR FOR REMOTE JOURNAL MSG */ /* AND UPDATE TABLE TO NOTIFY USER OF STATUS CHANGE */ /* INPUTS ARE: MESSAGE QUEUE NAME */ /* MESSAGE QUEUE LIBRARY NAME */ /* COMPILE STATEMENT: */ /* CRTCLPGM PGM(JOLAB00/HRTBEAT) SRCFILE(JOLAB00/HRTBEAT) SRCMBR(HRTBEAT) */ PGM PARM(&MSGQ &LIB &TGTJRN &TGTLIB &TBL &PROFILE) DCL &MSGQ *CHAR 10 DCL &LIB *CHAR 10 DCL &TBL *CHAR 10 DCL &TGTLIB *CHAR 10 DCL &TGTJRN *CHAR 10 DCL &PROFILE *CHAR 10 /* THE MESSAGE TO MONITOR ARE AS FOLLOWS: */ /* CPF70D3 */ /* CPF70D4 */ /* CPF70D5 */ /* CPF70D6 */ /* CPF70D7 */ /* CPF70DB */ /* CPF70DC */ DCL &MSGDATA *CHAR 200 DCL &MSGID *CHAR 7 DCL &KEYVAR *CHAR 4 DCL &JRNNAME *CHAR 10 DCL &JRNLIB *CHAR 10 /* DCL &SRCJRN *CHAR 10 */ /* DCL &SRCLIB *CHAR 10 */ DCL &RDB *CHAR 18 DCL VAR(&RSNCODE) TYPE(*CHAR) LEN(10) DCL VAR(&DATE) TYPE(*CHAR) LEN(10) DCL VAR(&TIME) TYPE(*CHAR) LEN(10) DCL VAR(&SENDER) TYPE(*CHAR) LEN(200) DCL VAR(&NULL) TYPE(*CHAR) LEN(1) VALUE(X'00') DCL &TMP *CHAR 11 /* RECEIVE A MESSAGE FROM THE MESSAGE QUEUE */ REPEAT: RCVMSG MSGQ(&LIB/&MSGQ) MSGKEY(*NONE) WAIT(*MAX) + RMV(*NO) KEYVAR(&KEYVAR) MSGID(&MSGID) /* IGNORE MESSAGES THAT ARE NOT ONE OF THE 7 RJ MESSAGES */ IF ((&MSGID *NE 'CPF70D3') *AND (&MSGID *NE 'CPF70D4') + *AND (&MSGID *NE 'CPF70D5') *AND (&MSGID *NE 'CPF70D6') + *AND (&MSGID *NE 'CPF70D7') *AND (&MSGID *NE 'CPF70DB') + *AND (&MSGID *NE 'CPF70DC') *AND (&MSGID *NE 'END1000') + ) GOTO REPEAT /* RECEIVE THE DATA FOR CPF7020 AND REMOVE THE MESSAGE */ RCVMSG MSGQ(&LIB/&MSGQ) MSGKEY(&KEYVAR) + WAIT(0) RMV(*YES) + MSGDTA(&MSGDATA) SENDER(&SENDER) IF (&MSGID *EQ 'END1000') GOTO END CHGVAR VAR(&JRNNAME) VALUE(%SST(&MSGDATA 1 10)) CHGVAR VAR(&JRNLIB) VALUE(%SST(&MSGDATA 11 10)) /* CHGVAR VAR(&SRCJRN) VALUE(%SST(&MSGDATA 21 10)) */ /* CHGVAR VAR(&SRCLIB) VALUE(%SST(&MSGDATA 31 10)) */ CHGVAR VAR(&RDB) VALUE(%SST(&MSGDATA 41 18)) CHGVAR VAR(&RSNCODE) VALUE(%BIN(&MSGDATA 59 2)) CHGVAR VAR(&TMP) VALUE(&RSNCODE) CHGVAR VAR(&DATE) VALUE(%SST(&SENDER 43 7)) CHGVAR VAR(&TIME) VALUE(%SST(&SENDER 50 6)) CHGVAR VAR(&JRNNAME) VALUE(&JRNNAME *TCAT &NULL) CHGVAR VAR(&JRNLIB) VALUE(&JRNLIB *TCAT &NULL) CHGVAR VAR(&TMP) VALUE(&TMP *TCAT &NULL) CHGVAR VAR(&RDB) VALUE(&RDB *TCAT &NULL) CHGVAR VAR(&DATE) VALUE(&DATE *TCAT &NULL) CHGVAR VAR(&TIME) VALUE(&TIME *TCAT &NULL) CHGVAR VAR(&TGTJRN) VALUE(&TGTJRN *TCAT &NULL) CHGVAR VAR(&TGTLIB) VALUE(&TGTLIB *TCAT &NULL) CHGVAR VAR(&TBL) VALUE(&TBL *TCAT &NULL) CALL PGM(&PROFILE/HRTSTATUS) PARM(&JRNNAME + &JRNLIB &TGTJRN &TGTLIB &RDB &MSGID &TMP &TIME + &DATE &TBL) GOTO REPEAT END: ENDPGM