Signaling is available only with WebSphere MQ for z/OS.
This example demonstrates how to use the MQGET call with signaling. This extract is not taken from the sample applications supplied with WebSphere(R) MQ.
%INCLUDE SYSLIB(CMQP); %INCLUDE SYSLIB(CMQEPP); : /*********************************************************/ /* WORKING STORAGE DECLARATIONS */ /*********************************************************/ DCL COMPCODE BINARY FIXED (31); DCL REASON BINARY FIXED (31); DCL HCONN BINARY FIXED (31); DCL HOBJ BINARY FIXED (31); DCL DATALEN BINARY FIXED (31); DCL BUFFLEN BINARY FIXED (31); DCL BUFFER CHAR(80);
·
·
·
DCL ECB_FIXED FIXED BIN(31); DCL 1 ECB_OVERLAY BASED(ADDR(ECB_FIXED)), 3 ECB_WAIT BIT, 3 ECB_POSTED BIT, 3 ECB_FLAG3_8 BIT(6), 3 ECB_CODE PIC'999';
·
·
·
/*********************************************************/ /* LOCAL COPY OF MESSAGE DESCRIPTOR AND GET MESSAGE */ /* OPTIONS */ /*********************************************************/ DCL 1 LMQMD LIKE MQMD; DCL 1 LMQGMO LIKE MQGMO;
·
·
·
/*********************************************************/ /* CLEAR ECB FIELD. */ /*********************************************************/ ECB_FIXED = 0;
·
·
·
/*********************************************************/ /* SET UP MESSAGE DESCRIPTOR AS REQUIRED. */ /* MSGID AND CORRELLID IN MQMD SET TO NULLS SO FIRST */ /* AVAILABLE MESSAGE WILL BE RETRIEVED. */ /*********************************************************/ LMQMD.MSGID = MQMI_NONE; LMQMD.CORRELID = MQCI_NONE; /*********************************************************/ /* SET UP GET MESSAGE OPTIONS AS REQUIRED. */ /* WAIT INTERVAL SET TO ONE MINUTE. */ /*********************************************************/ LMQGMO.OPTIONS = MQGMO_SET_SIGNAL + MQGMO_NO_SYNCPOINT; LMQGMO.WAITINTERVAL=60000; LMQGMO.SIGNAL1 = ADDR(ECB_FIXED);
/*********************************************************/ /* SET UP LENGTH OF MESSAGE BUFFER. */ /* CALL MESSGE RETRIEVAL ROUTINE. */ /*********************************************************/ BUFFLEN = LENGTH(BUFFER); CALL GET_MSG; /*********************************************************/ /* TEST THE COMPLETION CODE OF THE GET CALL. */ /* TAKE APPROPRIATE ACTION BASED ON COMPLETION CODE AND */ /* REASON CODE. */ /*********************************************************/ SELECT; WHEN ((COMPCODE = MQCC_OK) & (REASON = MQCC_NONE)) DO
·
·
·
CALL MSG_ROUTINE;
·
·
·
END; WHEN ((COMPCODE = MQCC_WARNING) & (REASON = MQRC_SIGNAL_REQUEST_ACCEPTED)) DO;
·
·
·
CALL DO_WORK;
·
·
·
END; WHEN ((COMPCODE = MQCC_FAILED) & (REASON = MQRC_SIGNAL_OUTSTANDING)) DO;
·
·
·
CALL DO_WORK;
·
·
·
END; OTHERWISE DO; /* FAILURE CASE */ /*********************************************************/ /* ISSUE AN ERROR MESSAGE SHOWING THE COMPLETION CODE */ /* AND THE REASON CODE. */ /*********************************************************/
·
·
·
CALL ERROR_ROUTINE;
·
·
·
END; END;
·
·
·
DO_WORK: PROC;
·
·
·
IF ECB_POSTED THEN DO; SELECT(ECB_CODE); WHEN(MQEC_MSG_ARRIVED) DO;
·
·
·
CALL GET_MSG;
·
·
·
END; WHEN(MQEC_WAIT_INTERVAL_EXPIRED) DO;
·
·
·
CALL NO_MSG;
·
·
·
END; OTHERWISE DO; /* FAILURE CASE */ /*******************************************************/ /* ISSUE AN ERROR MESSAGE SHOWING THE COMPLETION CODE */ /* AND THE REASON CODE. */ /*******************************************************/
·
·
·
CALL ERROR_ROUTINE;
·
·
·
END; END; END;
·
·
·
END DO_WORK; GET_MSG: PROC;
/*********************************************************/ /* */ /* HCONN WAS SET BY PREVIOUS MQCONN REQUEST. */ /* HOBJ WAS SET BY PREVIOUS MQOPEN REQUEST. */ /* MD AND GMO SET UP AS REQUIRED. */ /* */ /*********************************************************/ CALL MQGET (HCONN, HOBJ, LMQMD, LMQGMO, BUFFLEN, BUFFER, DATALEN, COMPCODE, REASON); END GET_MSG; NO_MSG: PROC;
·
·
·
END NO_MSG;
Notices |
Downloads |
Library |
Support |
Feedback
![]() ![]() |
csq0360 |