So the monitoring software is using a Break program that allocates 
the *MSGQ exclusively, and so the application that wants to perform 
RCVMSG MSGQ(*SYSOPR) fails due to the conflicting lock held by the 3rd 
party monitoring app.?  Some thoughts...
  Perhaps it is possible for the monitoring software to [effectively] 
call the procedure to perform the SNDRPY activity for the messages that 
are currently to be handled in the application that [is failing because 
it] does the RCVMSG?
  Since every message sent to QSYSOPR also appears in QHST and thus the 
QHST log, I looked at the Open List of History Log Messages (QMHOLHST) 
API but there was no message key referenced.  I suppose an unanswered 
inquiry could be inquired of the job that is\was waiting for the reply?; 
see latter part of the next paragraph:
  Per "specific messages", those could be made /alertable/ capable to 
be notified using Alerts; e.g. notified to a data queue.  However I do 
not recall if\what is available using such a feature to enable sending a 
reply; i.e. while knowing the message was sent can be learned, I am not 
sure enough details are available that would not still require the 
RCVMSG.  However probably the qualified job name information is 
available, I can not recall, but if so, then the Retrieve Job 
Information (QUSRJOBI) API could obtain the "Message key, when active 
job waiting for a message" for the information supplied to the Send 
Reply (SNDRPY) command or the Send Reply Message (QMHSNDRM) API.
  The LSTM0100 Format of either of the Open List of Messages (QGYOLMSG) 
API or List Nonprogram Messages (QMHLSTM) API offers the Message key as 
return data.  While these APIs may, while they are running, inhibit 
writing to the queue for which the messages are being listed [thus care 
for how much data is requested; e.g. against any "highly used message 
queues" which would typically include QSYSOPR], there is no mention of 
either attempting to obtain a lock on the message queue.
  Of course the docs for the Receive Nonprogram Message (QMHRCVM) API 
do not explicitly mention a lock required for the message queue object 
[and it is the effectively equivalent to RCVMSG], I expect the 
requirements would match those of RCVMSG.  The API talks about locks 
only when a wait-time is specified.  So a quick review of the help text 
for RCVMSG shows [although I am not clear what it means; I suppose it 
refers to each requester of multiple concurrent RCVMSG WAIT(non-zero), 
whereby the first of those to get a message will get the lock?]:
"If a wait time is specified (not zero), the message queue is implicitly 
allocated to the first user whose message is received, and it is not 
released until the request has been handled by the program."  If a 
non-zero WAIT() is coded on the RCVMSG, perhaps removing that is 
allowable for the failing application, and perhaps that would resolve 
the conflict.?  Difficult to infer from the docs\help if even just 
WAIT(0) could prevent the lock conflict, and I do not have time to test; 
but of course it may be moot for the failing application.
  If the jobs expecting replies to be provided by the code doing the 
RCVMSG, instead can be forced to have a[n automatic] reply rather than 
Inquiry Message Handling (INQMSGRPY) that requires a reply (*RQD), then 
there is a possibility that the Reply Handling Exit Program [Exit Point 
Name: QIBM_QMH_REPLY_INQ] could be used to supply the desired reply value.
  And of course, whatever are these messages going to QSYSOPR, there is 
also the possibility that the messages possibly could be prevented from 
occurring so as to avoid the need to look-for\receive them, or perhaps 
that they can be directed to another message queue other than QSYSOPR.?
Regards, Chuck
On 17 Apr 2013 11:39, Paul Fenstermacher wrote:
It's looking for specific messages and then using SNDRPY with a C
or an I.  V7R1.
On Wed, Apr 17, 2013 at 12:57 PM, Paul Fenstermacher wrote:
I'm using a third party application to monitor the QSYSOPR message
queue and have found a job that does a RCVMSG on QSYSOPR.
Unfortunately it fails because it can't lock the queue, is there
any alternative to RCVMSG or a way to run it without a lock?
Ultimately we're probably going to have to change the application
but I thought I would see if any of the experts have a quicker
answer.
As an Amazon Associate we earn from qualifying purchases.