567 lines
15 KiB
HTML
567 lines
15 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<meta name="Copyright" content="Copyright (c) 2006 by IBM Corporation">
|
|
<title>Send Reply Message (QMHSNDRM) API</title>
|
|
<!-- Begin Header Records ========================================== -->
|
|
<!-- All rights reserved. Licensed Materials Property of IBM -->
|
|
<!-- US Government Users Restricted Rights -->
|
|
<!-- Use, duplication or disclosure restricted by -->
|
|
<!-- GSA ADP Schedule Contract with IBM Corp. -->
|
|
<!-- MH1TEMP SCRIPT A converted by B2H R4.1 (346) (CMS) by HOLTJM at -->
|
|
<!-- RCHVMW2 on 26 Jan 1999 at 10:37:34 -->
|
|
<!-- Change History: -->
|
|
<!-- YYMMDD USERID Change description -->
|
|
<!--File Edited Oct 2001 by v2cdijab -->
|
|
<!--End Header Records -->
|
|
<link rel="stylesheet" type="text/css" href="../rzahg/ic.css">
|
|
</head>
|
|
<body>
|
|
<a name="Top_Of_Page"></a>
|
|
<!-- Java sync-link -->
|
|
<script language="Javascript" src="../rzahg/synch.js" type="text/javascript">
|
|
</script>
|
|
|
|
<h2>Send Reply Message (QMHSNDRM) API</h2>
|
|
|
|
<div class="box" style="width: 75%;">
|
|
<br>
|
|
Required Parameter Group:<br>
|
|
<!-- iddvc RMBR -->
|
|
<br>
|
|
<table width="100%">
|
|
|
|
<tr>
|
|
<td align="center" valign="top" width="10%">1</td>
|
|
<td align="left" valign="top" width="50%">Message key</td>
|
|
<td align="left" valign="top" width="20%">Input</td>
|
|
<td align="left" valign="top" width="20%">Char(4)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">2</td>
|
|
<td align="left" valign="top">Qualified message queue name</td>
|
|
<td align="left" valign="top">Input</td>
|
|
<td align="left" valign="top">Char(20)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">3</td>
|
|
<td align="left" valign="top">Reply text</td>
|
|
<td align="left" valign="top">Input</td>
|
|
<td align="left" valign="top">Char(*)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">4</td>
|
|
<td align="left" valign="top">Length of reply text</td>
|
|
<td align="left" valign="top">Input</td>
|
|
<td align="left" valign="top">Binary(4)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">5</td>
|
|
<td align="left" valign="top">Remove message</td>
|
|
<td align="left" valign="top">Input</td>
|
|
<td align="left" valign="top">Char(10)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">6</td>
|
|
<td align="left" valign="top">Error code</td>
|
|
<td align="left" valign="top">I/O</td>
|
|
<td align="left" valign="top">Char(*)</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
Optional Parameter Group 1:<br>
|
|
<!-- iddvc RMBR -->
|
|
<br>
|
|
<table width="100%">
|
|
|
|
<tr>
|
|
<td align="center" valign="top" width="10%">7</td>
|
|
<td align="left" valign="top" width="50%">Coded character set identifier</td>
|
|
<td align="left" valign="top" width="20%">Input</td>
|
|
<td align="left" valign="top" width="20%">Binary(4)</td>
|
|
</tr>
|
|
</table>
|
|
|
|
|
|
<br>
|
|
Optional Parameter Group 2:<br>
|
|
<!-- iddvc RMBR -->
|
|
<br>
|
|
<table width="100%">
|
|
|
|
<tr>
|
|
<td align="center" valign="top" width="10%">8</td>
|
|
<td align="left" valign="top" width="50%">Allow default
|
|
reply rejection</td>
|
|
<td align="left" valign="top" width="20%">Input</td>
|
|
<td align="left" valign="top" width="20%">Char(10)</td>
|
|
</tr>
|
|
</table>
|
|
|
|
|
|
<br>
|
|
Default Public Authority: *USE<br>
|
|
<!-- iddvc RMBR -->
|
|
<br>
|
|
Threadsafe: Yes<br>
|
|
<!-- iddvc RMBR -->
|
|
<br>
|
|
</div>
|
|
|
|
<p>The Send Reply Message (QMHSNDRM) API sends a reply message to the sender of
|
|
an inquiry message.</p>
|
|
|
|
<p>If your application attempts to diagnose and recover from errors, it might
|
|
need to take additional action when using the QMHSNDRM API. When the QMHSNDRM
|
|
API encounters errors in the reply being sent, it sends a diagnostic message
|
|
describing each error to your program message queue. After the last diagnostic
|
|
message, the QMHSNDRM API sends a general escape message, CPF2422. Exit point
|
|
QIBM_QMH_REPLY_INQ has been added to the system registration facility to allow
|
|
an exit program to be called when a reply is sent to an inquiry message. A reply
|
|
handling exit program can accept, reject or replace the reply value. If the
|
|
reply is rejected, a diagnostic is sent followed by CPF2422 as indicated
|
|
above. If the reply value sent with this API is replaced by a reply handling
|
|
exit program, CPF2458 (Reply replaced by reply handling exit program) is sent
|
|
as a diagnostic message to the caller of the QMHSNDRM API to identify the new
|
|
reply value and then the CPF2458 is sent again as a status message that could
|
|
be monitored to allow an application to be notified of the reply replacement.</p>
|
|
|
|
<p>To diagnose and recover from these errors, your application should call the
|
|
QMHRCVPM API to receive the diagnostic messages sent.</p>
|
|
|
|
<br>
|
|
|
|
|
|
<h3>Authorities and Locks</h3>
|
|
|
|
<dl>
|
|
<dt><em>Message File Authority</em></dt>
|
|
|
|
<dd>*USE</dd>
|
|
|
|
<dt><em>Message File Library Authority</em></dt>
|
|
|
|
<dd>*EXECUTE</dd>
|
|
|
|
<dt><em>Message Queue Authority</em></dt>
|
|
|
|
<dd>*USE and *ADD. Also need *DLT to remove a message.</dd>
|
|
|
|
<dt><em>Message Queue Library Authority</em></dt>
|
|
|
|
<dd>*EXECUTE<br>
|
|
<br>
|
|
</dd>
|
|
</dl>
|
|
|
|
<br>
|
|
|
|
|
|
<h3>Required Parameter Group</h3>
|
|
|
|
<dl>
|
|
<dt><strong>Message key</strong></dt>
|
|
|
|
<dd>INPUT; CHAR(4)
|
|
|
|
<p>The key to the inquiry message that the reply answers. The key is assigned
|
|
by the command or API that sends the message. You can obtain the key in these
|
|
ways:</p>
|
|
|
|
<ul>
|
|
<li>By receiving an inquiry message with any of the following:
|
|
|
|
<ul>
|
|
<li>Receive Message (RCVMSG) command</li>
|
|
|
|
<li>Receive Program Message (QMHRCVPM) API</li>
|
|
|
|
<li>Receive Nonprogram Message (QMHRCVM) API</li>
|
|
|
|
<li>List Messages (QMHLSTM) API</li>
|
|
|
|
<li>List Job Log (QMHLJOBL) API</li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li>Through a break-handling program. See the <a href="../rbam6/clpro.htm">CL Programming</a> topic for more information.</li>
|
|
</ul>
|
|
|
|
<br>
|
|
</dd>
|
|
|
|
<dt><strong>Qualified message queue name</strong></dt>
|
|
|
|
<dd>INPUT; CHAR(20)
|
|
|
|
<p>The name of the message queue containing the inquiry message being answered,
|
|
and the library in which it resides. The message queue is the one in which the
|
|
inquiry--not the sender's copy--is located. The first 10 characters specify the
|
|
message queue, and the second 10 characters specify the library. You can use
|
|
these special values for the library name:</p>
|
|
|
|
<table cellpadding="5">
|
|
<!-- cols="15 85" -->
|
|
<tr>
|
|
<td align="left" valign="top"><em>*CURLIB</em></td>
|
|
<td align="left" valign="top">The job's current library</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top"><em>*LIBL</em></td>
|
|
<td align="left" valign="top">The library list</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
</dd>
|
|
|
|
<dt><strong>Reply text</strong></dt>
|
|
|
|
<dd>INPUT; CHAR(*)
|
|
|
|
<p>The complete text of the reply being sent. To send the default reply stored
|
|
in the message description, use blanks for this parameter.
|
|
A reply handling exit program
|
|
can be used to limit the use of default replies. See the allow default reply
|
|
rejection parameter below for more information.
|
|
</p>
|
|
</dd>
|
|
|
|
<dt><strong>Length of reply text</strong></dt>
|
|
|
|
<dd>INPUT; BINARY(4)
|
|
|
|
<p>The length of the reply text, in bytes. If you use blanks in the reply text
|
|
parameter to indicate that you are using the default reply, you can specify any
|
|
valid value for this parameter. Valid values are 1 through 132.</p>
|
|
</dd>
|
|
|
|
<dt><strong>Remove message</strong></dt>
|
|
|
|
<dd>INPUT; CHAR(10)
|
|
|
|
<p>Whether the inquiry message and the reply are removed from the message queue
|
|
after the reply is sent. Valid values follow:</p>
|
|
|
|
<table cellpadding="5">
|
|
<!-- cols="10 90" -->
|
|
<tr>
|
|
<td align="left" valign="top"><em>*NO</em></td>
|
|
<td align="left" valign="top">Keep the inquiry message and the reply.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top"><em>*YES</em></td>
|
|
<td align="left" valign="top">Remove the inquiry message and the reply.</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
</dd>
|
|
|
|
<dt><strong>Error code</strong></dt>
|
|
|
|
<dd>I/O; CHAR(*)
|
|
|
|
<p>The structure in which to return error information. For the format of the
|
|
structure, see <a href="../apiref/error.htm#hdrerrcod">Error Code Parameter</a>.</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<br>
|
|
|
|
|
|
<h3>Optional Parameter Group 1</h3>
|
|
|
|
<dl>
|
|
<dt><strong>Coded character set identifier</strong></dt>
|
|
|
|
<dd>INPUT; BINARY(4)
|
|
|
|
<p>The coded character set identifier (CCSID) that the supplied message reply
|
|
text is in. The following values are allowed:</p>
|
|
|
|
<table cellpadding="5">
|
|
<!-- cols="10 90" -->
|
|
<tr>
|
|
<td align="left" valign="top"><em>0</em></td>
|
|
<td align="left" valign="top">The message reply text is assumed to be in the
|
|
CCSID of the job running this API. This is the default value if this parameter
|
|
is not specified.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top"><em>65535</em></td>
|
|
<td align="left" valign="top">The message reply text will not be
|
|
converted.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top"><em>CCSID</em></td>
|
|
<td align="left" valign="top">Specify a valid CCSID that your message reply
|
|
text is in. Valid values are between 1 and 65535. This API will validate the
|
|
CCSID.</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p>For a list of valid CCSIDs, see <a href="../nls/rbagsccsidmsgsup2.htm">
|
|
CCSIDs: Message Support</a> in the Globalization topic.</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<br>
|
|
|
|
|
|
<h3>Optional Parameter Group 2</h3>
|
|
|
|
<dl>
|
|
<dt><strong>Allow default reply rejection</strong></dt>
|
|
|
|
<dd>INPUT; CHAR(10)
|
|
|
|
<p>Specifies whether a reply handling exit program will be
|
|
allowed to reject a default reply. A default reply is
|
|
requested by using blanks as the value for the
|
|
reply text parameter. A reply handling exit program can
|
|
be registered using the system registration facility for exit point
|
|
QIBM_QMH_REPLY_INQ. If this parameter is not specified, a value
|
|
of *NO is used. Valid values are: </p>
|
|
|
|
<table cellpadding="5">
|
|
<!-- cols="10 90" -->
|
|
<tr>
|
|
<td align="left" valign="top"><em>*NO</em></td>
|
|
<td align="left" valign="top">A reply handling exit program will
|
|
not be allowed to reject a default reply.
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left" valign="top"><em>*YES</em></td>
|
|
<td align="left" valign="top">A reply handling exit program will
|
|
be allowed to reject a default reply. If an exit program rejects
|
|
the reply, a CPD2476 (Reply rejected by a reply handling exit
|
|
program) will be sent as a diagnostic message to the program
|
|
using this function. The CPD2476 will be followed by a
|
|
CPF2422 (Reply not valid) escape message that the program using
|
|
this function should monitor for to handle and recover from
|
|
error situations.
|
|
<br>
|
|
</td>
|
|
</tr>
|
|
|
|
</table>
|
|
<p><strong>Note: </strong>If a default reply is not being sent,
|
|
this parameter is ignored and a reply handling exit program
|
|
can reject or replace the reply value.</p>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
|
|
<br>
|
|
<h3>Coded Character Set Identifier (CCSID) Considerations</h3>
|
|
|
|
<p>If the inquiry message that this reply is being sent to is an impromptu
|
|
message, the text supplied on the reply text parameter is assumed to be in the
|
|
CCSID of the job executing this API unless the coded character set identifier
|
|
is supplied in the CCSID parameter. If the inquiry message that this reply is
|
|
being sent to is a predefined message, then the text supplied on the reply text
|
|
parameter is considered 65535 and is not converted. For more information about
|
|
message handler and its use of CCSIDs, see <em>CCSIDs: Message Support</em> in
|
|
the Globalization topic.</p>
|
|
|
|
<br>
|
|
|
|
|
|
<h3>Error Messages</h3>
|
|
|
|
<table width="100%" cellpadding="5">
|
|
<!-- cols="15 85" -->
|
|
<tr>
|
|
<th align="left" valign="top">Message ID</th>
|
|
<th align="left" valign="top">Error Message Text</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF24A4 E</td>
|
|
<td align="left" valign="top">Value for remove message not
|
|
valid.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF24B4 E</td>
|
|
<td align="left" valign="top">Severe error while addressing parameter
|
|
list.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF24B6 E</td>
|
|
<td align="left" valign="top">Length of &1, not valid for message text or
|
|
data.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF2401 E</td>
|
|
<td align="left" valign="top">Not authorized to library &1.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF2403 E</td>
|
|
<td align="left" valign="top">Message queue &1 in &2 not found.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF2408 E</td>
|
|
<td align="left" valign="top">Not authorized to message queue &1.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF2410 E</td>
|
|
<td align="left" valign="top">Message key not found in message queue
|
|
&1.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF2420 E</td>
|
|
<td align="left" valign="top">Reply already sent for inquiry or notify
|
|
message.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF2422 E</td>
|
|
<td align="left" valign="top">Reply not valid.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF2432 E</td>
|
|
<td align="left" valign="top">Cannot send reply to message type other than *INQ
|
|
or *NOTIFY.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF2433 E</td>
|
|
<td align="left" valign="top">Function not allowed for system log message queue
|
|
&1.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF2439 E</td>
|
|
<td align="left" valign="top">Reply value entered is not valid.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF2440 E</td>
|
|
<td align="left" valign="top">Reply must be in range of &1 to &2.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF2442 E</td>
|
|
<td align="left" valign="top">Reply does not meet specified relations.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF2460 E</td>
|
|
<td align="left" valign="top">Message queue &1 could not be extended.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF2458 S</td>
|
|
<td align="left" valign="top">Reply replaced by reply handling exit program.
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF2466 E</td>
|
|
<td align="left" valign="top">Reply length greater than &1.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF247E E</td>
|
|
<td align="left" valign="top">CCSID &1 is not valid.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF2477 E</td>
|
|
<td align="left" valign="top">Message queue &1 currently in use.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF2547 E</td>
|
|
<td align="left" valign="top">Damage to message file QCPFMSG.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF2548 E</td>
|
|
<td align="left" valign="top">Damage to message file &1 in &2.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF3CF1 E</td>
|
|
<td align="left" valign="top">Error code parameter not valid.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF3C3A E</td>
|
|
<td align="left" valign="top">Value for parameter &2 for API &1 not valid.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF3C36 E</td>
|
|
<td align="left" valign="top">Number of parameters, &1, entered for this
|
|
API was not valid.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF3C90 E</td>
|
|
<td align="left" valign="top">Literal value cannot be changed.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8100 E</td>
|
|
<td align="left" valign="top">All CPF81xx messages could be returned. xx is
|
|
from 01 to FF.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF9830 E</td>
|
|
<td align="left" valign="top">Cannot assign library &1.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF9838 E</td>
|
|
<td align="left" valign="top">User profile storage limit exceeded.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF9872 E</td>
|
|
<td align="left" valign="top">Program or service program &1 in library
|
|
&2 ended. Reason code &3.</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
|
|
|
|
<hr>
|
|
API introduced: V2R1.1
|
|
|
|
<hr>
|
|
<table align="center" cellpadding="2" cellspacing="2">
|
|
<tr align="center">
|
|
<td valign="middle" align="center"><a href="#Top_Of_Page">Top</a> | <a href=
|
|
"mh1.htm">Message Handling APIs</a> | <a href="aplist.htm">APIs by
|
|
category</a></td>
|
|
</tr>
|
|
</table>
|
|
</body>
|
|
</html>
|
|
|