Getting a message using the wait option
This example demonstrates how to use the wait option of the MQGET call.
This code accepts truncated messages. This extract is not taken from the sample applications supplied with IBM MQ .⋮ * CONNECT TO QUEUE MANAGER CONN DS 0H ⋮ * OPEN A QUEUE FOR GET OPEN DS 0H ⋮ * R4,R5,R6,R7 = WORK REGISTER. GET DS 0H LA R4,MQMD SET UP ADDRESSES AND LA R5,MQMD_LENGTH LENGTH FOR USE BY MVCL LA R6,WMD INSTRUCTION, AS MQMD IS LA R7,WMD_LENGTH OVER 256 BYES LONG. MVCL R6,R4 INITIALIZE WORKING VERSION * OF MESSAGE DESCRIPTOR
* MVC WGMO_AREA,MQGMO_AREA INITIALIZE WORKING MQGMO L R5,=AL4(MQGMO_WAIT) A R5,=AL4(MQGMO_ACCEPT_TRUNCATED_MSG) ST R5,WGMO_OPTIONS MVC WGMO_WAITINTERVAL,TWO_MINUTES WAIT UP TO TWO MINUTES BEFORE FAILING THE CALL * LA R5,BUFFER_LEN RETRIEVE THE BUFFER LENGTH ST R5,BUFFLEN AND SAVE IT FOR MQM USE * * ISSUE MQI GET REQUEST USING REENTRANT FORM OF CALL MACRO * * HCONN WAS SET BY PREVIOUS MQCONN REQUEST * HOBJ WAS SET BY PREVIOUS MQOPEN REQUEST * CALL MQGET, X (HCONN, X HOBJ, X WMD, X WGMO, X BUFFLEN, X BUFFER, X DATALEN, X COMPCODE, X REASON), X VL,MF=(E,CALLLST) * LA R5,MQCC_OK DID THE MQGET REQUEST C R5,COMPCODE WORK OK? BE GETOK YES, SO GO AND PROCESS. LA R5,MQCC_WARNING NO, SO CHECK FOR A WARNING. C R5,COMPCODE IS THIS A WARNING? BE CHECK_W YES, SO CHECK THE REASON. * LA R5,MQRC_NO_MSG_AVAILABLE IT MUST BE AN ERROR. IS IT DUE TO AN EMPTY C R5,REASON QUEUE? BE NOMSG YES, SO HANDLE THE ERROR B BADCALL NO, SO GO TO ERROR ROUTINE * CHECK_W DS 0H LA R5,MQRC_TRUNCATED_MSG_ACCEPTED IS THIS A TRUNCATED C R5,REASON MESSAGE? BE GETOK YES, SO GO AND PROCESS. B BADCALL NO, SOME OTHER WARNING * NOMSG DS 0H ⋮ GETOK DS 0H ⋮
BADCALL DS 0H ⋮ * * CONSTANTS * CMQMDA DSECT=NO,LIST=YES CMQGMOA DSECT=NO,LIST=YES CMQA * TWO_MINUTES DC F'120000' GET WAIT INTERVAL * * WORKING STORAGE DSECT
* WORKSTG DSECT * COMPCODE DS F REASON DS F BUFFLEN DS F DATALEN DS F OPTIONS DS F HCONN DS F HOBJ DS F * BUFFER DS CL80 BUFFER_LEN EQU *-BUFFER * WMD CMQMDA DSECT=NO,LIST=NO WGMO CMQGMOA DSECT=NO,LIST=NO * CALLLST CALL,(0,0,0,0,0,0,0,0,0,0,0),VL,MF=L * ⋮ ENDParent topic: System/390 assembler-language examples