| Author | Message | 
		
		  | mqonnet | 
			  
				|  Posted: Tue Apr 09, 2002 12:29 pm    Post subject: |   |  | 
		
		  |  Grand Master
 
 
 Joined: 18 Feb 2002Posts: 1114
 Location: Boston, Ma, Usa.
 
 | 
			  
				| As told you earlier, this one got me for sure. 
 Just to clarify one more thing.  Could you please post the output of the following command
 
 dis qmgr
 
 Also could you please verify if you have any Aliases defined for this queue manager or the local queue do.day.queue.
 
 Cheers.
 Kumar
 
 _________________
 IBM Certified WebSphere MQ V5.3 Developer
 IBM Certified WebSphere MQ V5.3 Solution Designer
 IBM Certified WebSphere MQ V5.3 System Administrator
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | vinayak | 
			  
				|  Posted: Tue Apr 09, 2002 12:37 pm    Post subject: |   |  | 
		
		  | Novice
 
 
 Joined: 07 Apr 2002Posts: 17
 
 
 | 
			  
				| Kumar, I don't have any aliases defined .
 Also these are the qmgr details
 
 1.brain.queue.manager(source qmgr
 1 : dis qmgr
 AMQ8408: Display Queue Manager details.
 DESCR(SWIFT services queue manager)     DEADQ(SYSTEM.DEAD.LETTER.QUEUE)
 DEFXMITQ( )                             CHADEXIT( )
 COMMANDQ(SYSTEM.ADMIN.COMMAND.QUEUE)    QMNAME(brain.queue.manager)
 TRIGINT(999999999)                      MAXHANDS(256)
 MAXUMSGS(10000)                         AUTHOREV(DISABLED)
 INHIBTEV(DISABLED)                      LOCALEV(DISABLED)
 REMOTEEV(DISABLED)                      PERFMEV(DISABLED)
 STRSTPEV(ENABLED)                       CHAD(DISABLED)
 CHADEV(DISABLED)                        MAXMSGL(4194304)
 MAXPRTY(9)                              CCSID(819)
 CMDLEVEL(500)                           PLATFORM(UNIX)
 SYNCPT                                  DISTL(YES)
 
 2)dtc_srvc.queue.manager
 1 : dis qmgr
 AMQ8408: Display Queue Manager details.
 DESCR(DTC services queue manager)       DEADQ(SYSTEM.DEAD.LETTER.QUEUE)
 DEFXMITQ( )                             CHADEXIT( )
 COMMANDQ(SYSTEM.ADMIN.COMMAND.QUEUE)    QMNAME(dtc_srvc.queue.manager)
 TRIGINT(999999999)                      MAXHANDS(256)
 MAXUMSGS(10000)                         AUTHOREV(DISABLED)
 INHIBTEV(DISABLED)                      LOCALEV(DISABLED)
 REMOTEEV(DISABLED)                      PERFMEV(DISABLED)
 STRSTPEV(ENABLED)                       CHAD(DISABLED)
 CHADEV(DISABLED)                        MAXMSGL(4194304)
 MAXPRTY(9)                              CCSID(819)
 CMDLEVEL(500)                           PLATFORM(UNIX)
 SYNCPT                                  DISTL(YES)
 
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | mqonnet | 
			  
				|  Posted: Tue Apr 09, 2002 12:53 pm    Post subject: |   |  | 
		
		  |  Grand Master
 
 
 Joined: 18 Feb 2002Posts: 1114
 Location: Boston, Ma, Usa.
 
 | 
			  
				| And.... This is what is the problem. 
 Your QM names are in lower cases.  That explains why "amqcrsta" worked fine.  You need to change your remote queue definition at the sender end to include the QM name in lower case.  You have to always use the same name as you define for the queue manager.  If the QM is defined in lower case, then while including the name of QM in any definition, such as remote queue, you have to include the name within single quotes.  So your remote queue definition MUST look something like
 
 DEFINE QREMOTE(DO.DAY.QUEUE) RQMNAME('dtc_srvc.queue.manager') +
 RNAME(DO.DAY.QUEUE) +
 DESCR('Remote queue on DTC services QM') +
 XMITQ(DTC_SRVC.QUEUE.MANAGER) REPLACE
 
 Huh... Relieved that MQ still is intact...
 
   
 Cheers.
 Kumar
 
 _________________
 IBM Certified WebSphere MQ V5.3 Developer
 IBM Certified WebSphere MQ V5.3 Solution Designer
 IBM Certified WebSphere MQ V5.3 System Administrator
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | vinayak | 
			  
				|  Posted: Tue Apr 09, 2002 1:05 pm    Post subject: |   |  | 
		
		  | Novice
 
 
 Joined: 07 Apr 2002Posts: 17
 
 
 | 
			  
				| Hey Kumar, 
 Thaaaaaaaank you very Much man. I had almost gone crazy with this MQ
 
 Thanks to stefan tooo.
 
 Cheers,
 Vinayak
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | StefanSievert | 
			  
				|  Posted: Tue Apr 09, 2002 1:29 pm    Post subject: |   |  | 
		
		  |  Partisan
 
 
 Joined: 28 Oct 2001Posts: 333
 Location: San Francisco
 
 | 
			  
				| Vinayak, glad that it works now and even happier that my first idea was not totally off topic. I have myself fallen into this pitfall far too often and have decided a long time ago to ONLY USE UPPERCASE names for MQ objects. This has proven to be extremely helpful because, depending on what part of MQ you touch, it behaves different. RUNMQSC folds everything to uppercase, the command line commands and sample programs take it as it is, like the GUI in NT. It's a bit of a mess. Anyway, just to answer Kumars comment:
 
 
   
	| Quote: |  
	| On 2002-04-09 13:00, mqonnet wrote:
 Vinayak,
 
 As i mentioned earlier, AMQSBCG would not get any useful information.  Reason being, all the info including the Reason code, is within the "Message" bit of the Amqsbcg output.  Hence, what you need to do is, either get a program to display the Dead letter queue "Message" in appropriate format, or modify the Amqsbcg program by yourself and display each value from the buffer after MQGET using MQDLH structure.  This would give the clear picutre.
 
 By the way, how did you figure out that the error was 2087.  Not quite sure if it would be logged to the mqerror log.  And sure it will not and does not appear on the amqsbcg output.
 
 Cheers.
 Kumar
 
 |  
 The output of amqsbcgc tells you everything you need to know (if you know the layout of the MQDLH structure, that is)
  : 
 00000000: 444C 4820 0000 0001
 First four bytes: 'DLH ', then the structure version (1)
 
 0000 0827 444F 2E44 'DLH .......'DO.D'
 00000010: 4159 2E51 5545 5545 2020 2020 2020 2020 'AY.QUEUE '
 00000020: 2020 2020 2020 2020 2020 2020 2020 2020 ' '
 
 Here we have the reason code: 827 hex = 2087 dec, followed by the destination queue name: DO.DAY.QUEUE
 
 00000030: 2020 2020 2020 2020 2020 2020 4454 435F ' DTC_'
 00000040: 5352 5643 2E51 5545 5545 2E4D 414E 4147 'SRVC.QUEUE.MANAG'
 00000050: 4552 2020 2020 2020 2020 2020 2020 2020 'ER '
 And here is the uppercase destination queue manager name of the original message, that could not be found!
 
 00000060: 2020 2020 2020 2020 2020 2020 0000 0111 ' ....'
 00000070: 0000 0333 4D51 5354 5220 2020 0000 0006 '...3MQSTR ....'
 The Encoding was 273 (111hex), the CCSID was 819 (333hex), the message format was MQSTR...
 
 00000080: 616D 7163 7273 7461 5F64 2020 2020 2020 'amqcrsta_d '
 It was the TCP/IP receiver channel agent who had the problem (ie. it was an inbound message from a client/different queue manager
 
 00000090: 2020 2020 2020 2020 2020 2020 3230 3032 ' 2002'
 000000A0: 3034 3039 3139 3331 3336 3031 7465 7374 '040919313601test'
 And Vinayak (the receiving agent) originally tried it on April 9th 2002 at 19:31:36.01 GMT. The message text was 'test'
 
 Hope that makes any sense. I always found this to be the quickest way to determine what went wrong, when I haven't had a utility at hand to print the formatted MQDLH header (which is easy to write).
 Cheers,
 Stefan
 _________________
 Stefan Sievert
 IBM Certified * MQSeries
 
 In the end everything is right. If not, it's not the end.
 
 
 [ This Message was edited by: StefanSievert on 2002-04-09 14:34 ]
 
 [ This Message was edited by: StefanSievert on 2002-04-09 14:35 ]
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | mqonnet | 
			  
				|  Posted: Tue Apr 09, 2002 1:39 pm    Post subject: |   |  | 
		
		  |  Grand Master
 
 
 Joined: 18 Feb 2002Posts: 1114
 Location: Boston, Ma, Usa.
 
 | 
			  
				| You are right Stefan.  One can very well see what is there in any message.  And hence.. Quote
 "As far as i understand you CANNOT see a message on DLQ in the appropriate format"..
 
 was my earlier suggestion.  And it is easy/handy as you also agreed to have an appropriate program to print the required messages on different queues.  Such as DLQ, TQ and others.
 
 Cheers.
 Kumar
 
 _________________
 IBM Certified WebSphere MQ V5.3 Developer
 IBM Certified WebSphere MQ V5.3 Solution Designer
 IBM Certified WebSphere MQ V5.3 System Administrator
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | cvshiva | 
			  
				|  Posted: Wed Jun 19, 2002 8:25 pm    Post subject: |   |  | 
		
		  |  Apprentice
 
 
 Joined: 04 Mar 2002Posts: 35
 Location: Chennai
 
 | 
			  
				| Hi Vinayak, 
 May be a bit late...!!!
 
 Being a bit inquisitive.. Did you get it fixed or not ?
 
 If not I am happy to open the topic and get it fixed. If fixed can you let me know what was the problem. What my guess would be is the ObjectQMgrName / ObjectName and also the entry in the inetd.conf.
 
 Regards
 _________________
 Ramnath Shiva
 IBM Certified SOA Specialist
 IBM Certified MQSeries Specialist
 Standard Scope International Pvt Ltd , Chennai
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | PeterPotkay | 
			  
				|  Posted: Mon Jul 22, 2002 10:01 am    Post subject: |   |  | 
		
		  |  Poobah
 
 
 Joined: 15 May 2001Posts: 7723
 
 
 | 
			  
				| Stefan, How do you make the leap from 00 00 08 27 to 2087? I am looking at a message in my OS/390 dead letter queue and see 00 00 01 0B for the reason code and don't know what to make of it. I see my INIT queue in the DLH, as well as MQTRIG and CSQQTRMN, so I assume my trigger monitor is having problems....
 _________________
 Peter Potkay
 Keep Calm and MQ On
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | mqonnet | 
			  
				|  Posted: Tue Jul 23, 2002 5:02 am    Post subject: |   |  | 
		
		  |  Grand Master
 
 
 Joined: 18 Feb 2002Posts: 1114
 Location: Boston, Ma, Usa.
 
 | 
			  
				| Peter, as stefan explained, you need to walk through each bit of info and correlate with the MQDLH structure.  That is how 00 00 08 27 to 2087 is resolved. If this does not work out, then post your DLQ message and shall try to take it from there.
 
 Cheers.
 Kumar
 _________________
 IBM Certified WebSphere MQ V5.3 Developer
 IBM Certified WebSphere MQ V5.3 Solution Designer
 IBM Certified WebSphere MQ V5.3 System Administrator
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | PeterPotkay | 
			  
				|  Posted: Tue Jul 23, 2002 5:10 am    Post subject: |   |  | 
		
		  |  Poobah
 
 
 Joined: 15 May 2001Posts: 7723
 
 
 | 
			  
				| I can find the reason code on the DLH no prob, I'm just curious on the formula used to get 00 00 08 27 to 2087. In this case it looks like take the last byte (27), split it, and insert the 2nd to last byte (0  . 2 08 7 That isn't the formula to use in all cases, is it?
 _________________
 Peter Potkay
 Keep Calm and MQ On
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | mqonnet | 
			  
				|  Posted: Tue Jul 23, 2002 5:58 am    Post subject: |   |  | 
		
		  |  Grand Master
 
 
 Joined: 18 Feb 2002Posts: 1114
 Location: Boston, Ma, Usa.
 
 | 
			  
				| Peter, there is no formula.  As you can see, the message in DLQ has either Char or Numbers.  Char is always MQCHAR, but numbers are always in HEX format. Hence
 0000 0827
 The second byte has 0827 in hex and its equivalent in Dec is 2087.
 
 Cheers.
 Kumar
 _________________
 IBM Certified WebSphere MQ V5.3 Developer
 IBM Certified WebSphere MQ V5.3 Solution Designer
 IBM Certified WebSphere MQ V5.3 System Administrator
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | PeterPotkay | 
			  
				|  Posted: Tue Jul 23, 2002 6:03 am    Post subject: |   |  | 
		
		  |  Poobah
 
 
 Joined: 15 May 2001Posts: 7723
 
 
 | 
			  
				| duh. 
 Thanks Kumar.
 
 In what case do you have to do byte reversal to compensate for Big Endian/Little Endian?
 _________________
 Peter Potkay
 Keep Calm and MQ On
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | mqonnet | 
			  
				|  Posted: Tue Jul 23, 2002 6:18 am    Post subject: |   |  | 
		
		  |  Grand Master
 
 
 Joined: 18 Feb 2002Posts: 1114
 Location: Boston, Ma, Usa.
 
 | 
			  
				| Peter, i am not really sure of the answer to your question. 
 But in theory, you need to have a Hex representation of all the fields in the MQDLH structure, before you could decode it to a readable/understandable format.  And if you dont have a hex representation in the Dead letter queue, for the DLH message, then you need to first decode the message into hex format using the respective structures for the different data sets.
 
 But my assumption is that the bit/little endian is restricted to the system and does not involve MQ messages in it, and even if it does, MQ would not have any other format other than hex in DLQ.  Which leads me to the conclusion that you would have a Valid Hex format in the Dead letter queue.
 
 Hope this helps.
 
 Cheers.
 Kumar
 _________________
 IBM Certified WebSphere MQ V5.3 Developer
 IBM Certified WebSphere MQ V5.3 Solution Designer
 IBM Certified WebSphere MQ V5.3 System Administrator
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | arunmakhija | 
			  
				|  Posted: Wed Feb 12, 2003 9:42 am    Post subject: |   |  | 
		
		  |  Novice
 
 
 Joined: 17 Jun 2002Posts: 20
 Location: Sydney
 
 | 
			  
				| Hi Kumar 
 Can you send me the program which prints the Dead letter Queue Header
 I am having same kind of problems and need to to the reason code why my mesgs is in dead letter queue
 
 regards
 Joey
 That one was for Vinayak , sorry kumar.... but my input why we are discussing so much about figuring out a hex dump when  you have std structures to read your messages off the DLQ... MQDLH
 and infact as I recollect Vinayak did mention having a program which does print the MQDLH Quoting his message
 
 
 
   
	| Code: |  
	| Kumar, I got the reason code from another program which just reads
 the header of the Dead letter Q and it is showing the same now too "
 the famous "2087"
 and i got the hex dump from amqbcg0.
 
 This o/p from where i got the reason code might help u.
 
 START OF MESSAGE NUMBER 1
 MsgType = 8
 Destination Queue Name = DO.DAY.QUEUE
 Destination QMgr Name = DTC_SRVC.QUEUE.MANAGER
 Sending Applicat Name = amqcrsta_d
 Time Sent = 193136 (hhmmss)
 Date Sent = 20020409 (yyyymmdd)
 Delivery Failure Reason = 2087
 DeadReplyQName =
 DeadReplyQMgrName = brain.queue.manager
 DeadFormat = MQDEAD
 DeadPriority = 0
 DeadPersistence = 0
 DeadMsgType = 8
 DeadMsgFlags = 0
 DeadExpiry = -1
 DeadMsgSeqNumber = 1
 END OF MESSAGE 1
 
 Thanks,
 Vinayak
 |  
 It looks pretty good and easier than deriving formulas for reading the hex dump
 
 I need something like that too and am sure all of us here would appreciate if Vinayak can send us the program
 
 regards
 Joey
 _________________
 In Celebration of Being Alive !!!
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | mqonnet | 
			  
				|  Posted: Wed Feb 12, 2003 10:38 am    Post subject: |   |  | 
		
		  |  Grand Master
 
 
 Joined: 18 Feb 2002Posts: 1114
 Location: Boston, Ma, Usa.
 
 | 
			  
				| You can easily compile a program by yourself to read a dlh structure.  When i get a chance, i shall put up one on this site. 
 But in the meanwhile you could as well follow Stefan's detailed explaination to find out the reason code etc from the msgs on DLQ.
 
 Cheers.
 Kumar
 _________________
 IBM Certified WebSphere MQ V5.3 Developer
 IBM Certified WebSphere MQ V5.3 Solution Designer
 IBM Certified WebSphere MQ V5.3 System Administrator
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  |  |