/*--+------------------------------------------------------------+--*/ /*--+ PROGRAM ID : $MONMSGQ +--*/ /*--+ PROGRAM NAME : CL OF MONITOR MESSAGE QUEUE +--*/ /*--+------------------------------------------------------------+--*/ /*--+ VERSION : 1.1 (2001/05/25) *PGM-->*CMD +--*/ /*--+ 1.0 (1999/10/12) +--*/ /*--+------------------------------------------------------------+--*/ PGM PARM(&MSGQANDLIB &MSGID &ACTION &RPY &CMD &CONTINUE &WAIT) /*--+------------------------------------------------------------+--*/ /* + DECLARE + */ /*--+------------------------------------------------------------+--*/ /* COMMAND PARAMETER(S) FOR THIS PROGRAM */ DCL VAR(&MSGQANDLIB) TYPE(*CHAR) LEN( 20 ) /* MSGQ AND LIBRARY */ DCL VAR(&MSGQ ) TYPE(*CHAR) LEN( 10 ) /* MESSAGE QUEUE */ DCL VAR(&MSGQLIB ) TYPE(*CHAR) LEN( 10 ) /* LIBRARY */ DCL VAR(&MSGID ) TYPE(*CHAR) LEN( 7 ) /* MESSAGE ID */ DCL VAR(&ACTION ) TYPE(*CHAR) LEN( 5 ) /* ACTION */ DCL VAR(&RPY ) TYPE(*CHAR) LEN( 132 ) /* REPLY */ DCL VAR(&CMD ) TYPE(*CHAR) LEN(3000 ) /* COMMAND TO RUN */ DCL VAR(&CONTINUE ) TYPE(*CHAR) LEN( 4 ) /* CONTINUE ? */ DCL VAR(&WAIT ) TYPE(*CHAR) LEN( 6 ) /* WAIT TIME */ /* SHARED PARAMETERS FOR THIS PROGRAM */ DCL VAR(&SH_MSG ) TYPE(*CHAR) LEN( 80 ) /* MESSAGE */ DCL VAR(&SH_MSGID ) TYPE(*CHAR) LEN( 7 ) /* MESSAGE ID */ DCL VAR(&SBMJOB ) TYPE(*CHAR) LEN(3500 ) /* SUBMIT JOB COMMAND */ DCL VAR(&CMDLEN ) TYPE(*DEC ) LEN( 15 5) /* LENGTH OF COMMAND */ /*--+--------------------+--*/ /* + PARAMETERS FOR API + */ /*--+--------------------+--*/ /* QMHRCVM */ DCL VAR(&RCM_MSG ) TYPE(*CHAR) LEN( 25 ) /* MESSAGE */ DCL VAR(&MSG_ID ) TYPE(*CHAR) LEN( 7 ) /* MESSAGE ID */ DCL VAR(&MSG_TYP ) TYPE(*CHAR) LEN( 2 ) /* MESSAGE TYPE */ DCL VAR(&MSG_KEY ) TYPE(*CHAR) LEN( 4 ) /* MESSAGE KEY */ DCL VAR(&MSG_KEYBIN) TYPE(*CHAR) LEN( 4 ) /* MESSAGE KEY */ DCL VAR(&RCM_MSGLEN) TYPE(*CHAR) LEN( 4 ) /* LENGTH OF MESSAGE */ DCL VAR(&RCM_FORMAT) TYPE(*CHAR) LEN( 8 ) /* FORMAT */ DCL VAR(&RCM_MSGQ ) TYPE(*CHAR) LEN( 20 ) /* MESSAGE QUEUE */ DCL VAR(&RCM_MSGTYP) TYPE(*CHAR) LEN( 10 ) /* MESSAGE TYPE */ DCL VAR(&RCM_MSGKEY) TYPE(*CHAR) LEN( 4 ) /* MESSAGE KEY */ DCL VAR(&RCM_WAIT ) TYPE(*CHAR) LEN( 4 ) /* WAIT TIME */ DCL VAR(&RCM_ACTION) TYPE(*CHAR) LEN( 10 ) /* ACTION */ DCL VAR(&RCM_ERRCD ) TYPE(*CHAR) LEN( 15 ) /* ERROR CODE */ /*--+------------------------------------------------------------+--*/ /* + START OF PROGRAM + */ /*--+------------------------------------------------------------+--*/ /*--+------------------------------------------------------------+--*/ /* + INITIALIZE + */ /*--+------------------------------------------------------------+--*/ /*- DIVISION OF COMMAND PARAMETER ----------------------------------*/ CHGVAR VAR(&MSGQ ) VALUE(%SST(&MSGQANDLIB 1 10)) CHGVAR VAR(&MSGQLIB ) VALUE(%SST(&MSGQANDLIB 11 10)) /*- CHECK OF COMMAND PARAMETER -------------------------------------*/ /* FOR MSGQ */ IF ((&MSGQLIB *NE '*LIBL' ) *AND (&MSGQLIB *NE '*CURLIB')) DO CHKOBJ OBJ(&MSGQLIB) OBJTYPE(*LIB) MONMSG MSGID(CPF9801) EXEC(DO) RCVMSG MSGQ(*PGMQ) RMV(*YES) /* MSG: LIBRARY NOT FOUND */ SNDPGMMSG MSGID(CPF9810) MSGF(QCPFMSG) + MSGDTA(&MSGQLIB) + MSGTYPE(*ESCAPE) ENDDO ENDDO CHKOBJ OBJ(&MSGQLIB/&MSGQ) OBJTYPE(*MSGQ) MONMSG MSGID(CPF9801) EXEC(DO) RCVMSG MSGQ(*PGMQ) RMV(*YES) /* MSG: MSG QUEUE IN LIBRARY NOT FOUND */ SNDPGMMSG MSGID(CPF2403) MSGF(QCPFMSG) + MSGDTA(&MSGQANDLIB) + MSGTYPE(*ESCAPE) ENDDO /* IF &ACTION IS *CMD OR *BOTH */ IF ((&ACTION *EQ '*CMD') *OR (&ACTION *EQ '*BOTH')) DO IF (&CMD *EQ ' ') DO CHGVAR VAR(&SH_MSG) VALUE('CMD PARAMETER' *BCAT + 'REQUIRED WITH' *BCAT + 'ACTION(' *CAT + &ACTION *TCAT + ')' ) SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) + MSGDTA(&SH_MSG) + MSGTYPE(*ESCAPE) ENDDO ENDDO /*- PARAMETER SETTING ----------------------------------------------*/ /* FOR QMHRCVM */ CHGVAR VAR(%BIN(&RCM_MSGLEN)) VALUE(25) CHGVAR VAR(&RCM_FORMAT) VALUE('RCVM0200') CHGVAR VAR(&RCM_MSGQ ) VALUE(&MSGQANDLIB) CHGVAR VAR(&RCM_MSGTYP) VALUE('*ANY') CHGVAR VAR(&RCM_MSGKEY) VALUE(' ') CHGVAR VAR(%BIN(&RCM_WAIT )) VALUE(&WAIT) CHGVAR VAR(&RCM_ACTION) VALUE('*OLD') CHGVAR VAR(%BIN(&RCM_ERRCD 1 4)) VALUE(15) /*--+------------------------------------------------------------+--*/ /* + M A I N + */ /*--+------------------------------------------------------------+--*/ #_MAIN_: CALL PGM(QMHRCVM ) PARM(&RCM_MSG + &RCM_MSGLEN + &RCM_FORMAT + &RCM_MSGQ + &RCM_MSGTYP + &RCM_MSGKEY + &RCM_WAIT + &RCM_ACTION + &RCM_ERRCD ) CHGVAR VAR(&MSG_ID ) VALUE(%SST(&RCM_MSG 13 7)) CHGVAR VAR(&MSG_TYP ) VALUE(%SST(&RCM_MSG 20 2)) CHGVAR VAR(&MSG_KEY ) VALUE(%SST(&RCM_MSG 22 4)) CHGVAR VAR(&MSG_KEYBIN) VALUE(%BIN(&MSG_KEY)) MONMSG MSGID(CPF0819) EXEC(DO) RCVMSG MSGQ(*PGMQ) RMV(*YES) ENDDO /* IF MESSAGE ID FOUND IN MESSAGE QUEUE */ IF (&MSG_ID *EQ &MSGID) DO /* FOR REPLY ACTION */ IF ((&ACTION *EQ '*RPY') *OR (&ACTION *EQ '*BOTH')) DO SNDRPY MSGKEY(&MSG_KEY) MSGQ(&MSGQLIB/&MSGQ) RPY(&RPY) RMV(*NO) MONMSG MSGID(CPF2401 CPF2403 CPF2408 CPF2410 + CPF2411 CPF2420 CPF2422 CPF2432 + CPF2433 CPF2477 CPD2406 ) EXEC(DO) RCVMSG MSGQ(*PGMQ) RMV(*NO ) MSGID(&SH_MSGID) CHGVAR VAR(&SH_MSG) VALUE('SEE THE PREVIOUSLY' *BCAT + 'LISTED MESSAGE ' *BCAT + 'IN THE JOBLOG ' *BCAT + '(MSGID:' *CAT + &SH_MSGID *CAT + ')' ) SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) + MSGDTA(&SH_MSG) + MSGTYPE(*ESCAPE) ENDDO ENDDO /* FOR SBMJOB ACTION */ IF ((&ACTION *EQ '*CMD') *OR (&ACTION *EQ '*BOTH')) DO CHGVAR VAR(&SBMJOB ) VALUE('SBMJOB CMD(' *CAT + &CMD *CAT + ')' ) CHGVAR VAR(&CMDLEN ) VALUE(3500) CALL PGM(QCMDEXC) PARM(&SBMJOB &CMDLEN) ENDDO ENDDO IF (&CONTINUE *EQ *YES) GOTO #_MAIN_ /*--+------------------------------------------------------------+--*/ /* + END OF PROGRAM + */ /*--+------------------------------------------------------------+--*/ #_EXIT_: ENDPGM