ibm-information-center/dist/eclipse/plugins/i5OS.ic.apis_5.4.0.1/QMHRCVPM.htm

2612 lines
84 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>Receive Program Message (QMHRCVPM) 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 type="text/javascript" language="Javascript" src="../rzahg/synch.js">
</script>
<h2>Receive Program Message (QMHRCVPM) API</h2>
<div class="box" style="width: 70%;">
<br>
&nbsp;&nbsp;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 information</td>
<td align="left" valign="top" width="15%">Output</td>
<td align="left" valign="top" width="25%">Char(*)</td>
</tr>
<tr>
<td align="center" valign="top">2</td>
<td align="left" valign="top">Length of message information</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Binary(4)</td>
</tr>
<tr>
<td align="center" valign="top">3</td>
<td align="left" valign="top">Format name</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(8)</td>
</tr>
<tr>
<td align="center" valign="top">4</td>
<td align="left" valign="top">Call stack entry</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(*) or Pointer</td>
</tr>
<tr>
<td align="center" valign="top">5</td>
<td align="left" valign="top">Call stack counter</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Binary(4)</td>
</tr>
<tr>
<td align="center" valign="top">6</td>
<td align="left" valign="top">Message type</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(10)</td>
</tr>
<tr>
<td align="center" valign="top">7</td>
<td align="left" valign="top">Message key</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(4)</td>
</tr>
<tr>
<td align="center" valign="top">8</td>
<td align="left" valign="top">Wait time</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Binary(4)</td>
</tr>
<tr>
<td align="center" valign="top">9</td>
<td align="left" valign="top">Message action</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(10)</td>
</tr>
<tr>
<td align="center" valign="top">10</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>
&nbsp;&nbsp;Optional Parameter Group 1:<br>
<!-- iddvc RMBR -->
<br>
<table width="100%">
<tr>
<td align="center" valign="top" width="10%">11</td>
<td align="left" valign="top" width="50%">Length of call stack entry</td>
<td align="left" valign="top" width="15%">Input</td>
<td align="left" valign="top" width="25%">Binary(4)</td>
</tr>
<tr>
<td align="center" valign="top">12</td>
<td align="left" valign="top">Call stack entry qualification</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(20)</td>
</tr>
</table>
<br>
&nbsp;&nbsp;Optional Parameter Group 2:<br>
<!-- iddvc RMBR -->
<br>
<table width="100%">
<tr>
<td align="center" valign="top" width="10%">13</td>
<td align="left" valign="top" width="50%">Call stack entry data type</td>
<td align="left" valign="top" width="15%">Input</td>
<td align="left" valign="top" width="25%">Char(10)</td>
</tr>
<tr>
<td align="center" valign="top">14</td>
<td align="left" valign="top">Coded character set identifier</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Binary(4)</td>
</tr>
</table>
<br>
&nbsp;&nbsp;Optional Parameter Group 3:<br>
<!-- iddvc RMBR -->
<br>
<table width="100%">
<tr>
<td align="center" valign="top" width="10%">15</td>
<td align="left" valign="top" width="50%">Allow default
reply rejection</td>
<td align="left" valign="top" width="15%">Input</td>
<td align="left" valign="top" width="25%">Char(10)
</td>
</tr>
</table>
<br>
&nbsp;&nbsp;Default Public Authority: *USE<br>
<!-- iddvc RMBR -->
<br>
&nbsp;&nbsp;Threadsafe: Yes<br>
<!-- iddvc RMBR -->
<br>
</div>
<p>The Receive Program Message (QMHRCVPM) API receives a message from a call
message queue or external message queue and returns information describing the
message.</p>
<p>To receive a message from nonprogram message queues, see <a href=
"Qmhrcvm.htm">Receive Nonprogram Message</a> (QMHRCVM) API.</p>
<p>In a multithreaded job messages can be received from call message queues
within the thread that calls this API, and messages sent from within the same
thread can be received from the external message queue. Messages on call
message queues in other threads or sent to the external message queue from
other threads cannot be received.</p>
<br>
<h3>Authorities and Locks</h3>
<dl>
<dt><em>Message File Authority</em></dt>
<dd>*USE, if receiving a predefined message and the message file used when the message was sent was deleted and recreated.<br>
<br>
</dd>
<dt><em>Message File Library Authority</em></dt>
<dd>*EXECUTE, if receiving a predefined message and the message file used when the message was sent was deleted and recreated.
<br>
<br>
</dd>
</dl>
<br>
<h3>Required Parameter Group</h3>
<dl>
<dt><strong>Message information</strong></dt>
<dd>OUTPUT; CHAR(*)
<p>The variable that receives the information returned, in the format specified
in the format name parameter, of the length specified in the length of message
information parameter.</p>
</dd>
<dt><strong>Length of message information</strong></dt>
<dd>INPUT; BINARY(4)
<p>The size of the area to contain the message information, in bytes. The
minimum size is 8.</p>
<p>This parameter must specify the size of the variable you use for the message
information parameter. If this parameter specifies a longer size, other parts
of storage could be overwritten when the API returns the information.</p>
<p>The API returns as much information as it can fit in this length. If the
available message information is longer, it is truncated. If the available
message information is shorter, the unused output area is unchanged; whatever
is already stored in that space remains there.</p>
<p>To determine how much information the API actually returns in response to
this call, see the bytes returned field in the RCVM0100, RCVM0200, or RCVM0300
output. To determine how much information the API could return if space were
available, see the bytes available field.</p>
</dd>
<dt><strong>Format name</strong></dt>
<dd>INPUT; CHAR(8)
<p>The format to use for the message information. Specify one of these format
names:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>RCVM0100</em></td>
<td align="left" valign="top">Brief message information. For details, see <a
href="#HDRRCVM1A">RCVM0100 Format</a>.</td>
</tr>
<tr>
<td align="left" valign="top"><em>RCVM0200</em></td>
<td align="left" valign="top">All message information. For details, see <a
href="#HDRRCVM2A">RCVM0200 Format</a>.</td>
</tr>
<tr>
<td align="left" valign="top"><em>RCVM0300</em></td>
<td align="left" valign="top">All message information. Complete sender
information for the message being received. For details, see <a href=
"#HDRRCVM3">RCVM0300 Format</a>.</td>
</tr>
</table>
<br>
</dd>
<dt><strong>Call stack entry</strong></dt>
<dd>INPUT; CHAR(*) or Pointer
<p>The call stack entry from whose message queue messages are to be received,
or the call stack entry to start counting from when using a value other than 0
for the call stack counter parameter. The call stack entry you specify must be
in the call stack or you can specify the external message queue instead of a
call stack entry.</p>
<p>You can specify a call stack entry by providing the name of the OPM program
or ILE procedure running in the entry, by providing a pointer to the call stack
entry, or by using one of the following special values:</p>
<table cellpadding="5">
<!-- cols="10 90" -->
<tr>
<td align="left" valign="top"><em>*</em></td>
<td align="left" valign="top">The current call stack entry (that is, the one in
which the API is being used).</td>
</tr>
<tr>
<td align="left" valign="top"><em>*EXT</em></td>
<td align="left" valign="top">The external message queue. The call stack
counter parameter is ignored. You cannot receive escape messages from this
queue.</td>
</tr>
</table>
<p>If the call stack entry is to be identified by pointer, the pointer that is
specified must address a valid call stack entry within the same job as the one
the API is used in. Alternatively, the pointer can be set to Null. The pointer
must be 16 byte aligned. The Optional Parameter Group 1 must be used and the
Length of call stack entry parameter must be set to 16. In addition, the
Optional Parameter Group 2 must also be used and the Call stack entry format
parameter must be set to *PTR.</p>
<p>If the pointer provided is set to Null, this indicates that the call stack
entry is the one in which the API is being used.</p>
<p>If the pointer does not address a valid call stack entry or is not a Null
pointer, the error message CPF24C5 is sent to the user of the API.</p>
<p>The call stack entry can be a nested procedure name from 1 through 4096
characters in length. When specifying nested procedures, each procedure name
must be separated by a colon, and the outermost procedure is identified first
followed by the procedures it contains. The innermost procedure is the last
procedure identified in the string.</p>
<p>The call stack entry can be a partial name. To specify a partial name, place
three less-than signs (&lt;&lt;&lt;) at the beginning of the call stack entry
identifier, or place three greater-than signs (&gt;&gt;&gt;) at the end of the
call stack entry identifier, or place both the less-than signs and the
greater-than signs at their respective ends of the call stack entry identifier.
The value for the call stack entry excluding the less-than signs and the
greater-than signs is used to search backward through the stack for the
requested call stack entry name.</p>
<p>When searching for a partial call stack entry name:</p>
<ul>
<li>If the less-than signs (&lt;&lt;&lt;) are specified only at the beginning
of the call stack entry name, the less-than signs are truncated and the
remaining character string is right-justified. The remaining string is then
compared to the current call stack entry on the call stack. The comparison
starts at the end of the call stack entry name and backwardly compares the
number of characters in the specified string.<br>
<br>
</li>
<li>If the greater-than signs (&gt;&gt;&gt;) are specified only at the end of
the call stack entry name, the greater-than signs are truncated. The remaining
character string is compared to the current call stack entry on the call stack.
The comparison starts at position 1 of the call stack entry name and compares
the number of characters in the specified string.<br>
<br>
</li>
<li>If the less-than signs (&lt;&lt;&lt;) are specified at the beginning of the
call stack entry name and the greater-than signs (&gt;&gt;&gt;) are specified
at the end of the call stack entry name, both the less-than signs and the
greater-than signs are truncated. The remaining characters are used to scan and
to compare the entire length of the specified string and the current call stack
entry on the call stack.</li>
</ul>
<p><strong>Note:</strong> If the optional parameters Length of to call stack
entry and To call stack entry data type are not specified, this parameter is
assumed to be CHAR(10).</p>
</dd>
<dt><strong>Call stack counter</strong></dt>
<dd>INPUT; BINARY(4)
<p>A number identifying the location in the call stack of the call stack entry
from whose message queue the messages are to be received. The number is
relative to the call stack entry identified by the Call stack entry parameter.
It indicates how many calls up the call stack the target entry is from the one
identified by the Call stack entry parameter. Valid values follow:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">Receive the message from the message queue of the
call stack entry specified in the Call stack entry parameter.</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">Receive the message from the message queue of the
call stack entry that is one earlier than the entry identified by the Call
stack entry parameter.</td>
</tr>
<tr>
<td align="left" valign="top"><em>n (any positive number)</em></td>
<td align="left" valign="top">Receive the message from the message queue of the
nth call stack entry up the stack from the call stack entry specified in the
Call stack entry parameter.
<p>You can use any positive number that does not exceed the actual number of
call stack entries in the call stack, excluding the external message queue.</p>
</td>
</tr>
</table>
<br>
</dd>
<dt><strong>Message type</strong></dt>
<dd>INPUT; CHAR(10)
<p>The type of the message being received. The message type and message key
parameters work together. Depending on the message type, the key can be
required, optional, or disallowed. For a list of valid message types and
information about how they work with the message key parameter, see <a href=
"#HDRMSGKEY">Message Types and Message Keys</a>.</p>
</dd>
<dt><strong>Message key</strong></dt>
<dd>INPUT; CHAR(4)
<p>The key to the message being received. The key is assigned by the command or
API that sends the message.</p>
<p>What you can use for the message key parameter depends on what you use for
the message type. For details, see <a href="#HDRMSGKEY">Message Types and
Message Keys</a>.</p>
<p>If you are not receiving messages by key, use blanks for this parameter.</p>
<p>If you specify a key and the message queue does not contain a message with
that key, an error is returned.</p>
<p>If you specify a key and the message queue does contain a message with that
key, the API might or might not return a message. It never returns an error in
this case. Whether or not the API returns a message depends on the value of the
message type parameter. For example, if you specify the message type *PRV and
there is no message before the message with the key, the API does not return a
message. Because the key you specified is valid, the API does not return an
error either.</p>
<p>You can receive the reply to a message through the key to the sender's copy
of the message. If the reply is not available, no message is returned, and the
API does not return an error.</p>
<p>When the message type is *NEXT, you can use *TOP for the message key to
receive the next message after the last message received.</p>
<p>When the message type is *NEXT or *PRV, you can use hexadecimal zeros for
the message key for the first receive operation.</p>
<p>If you know the message key of a message you want to receive, you can
receive that message without regard to the call message queue containing the
message. You can do this by specifying the key in this parameter, the special
value '*' for the Call stack entry parameter and the value '0' for the call
stack counter parameter. This is useful if the message was sent to a call stack
entry that is no longer in the call stack.</p>
</dd>
<dt><strong>Wait time</strong></dt>
<dd>INPUT; BINARY(4)
<p>The length of time to wait for the message to arrive in the queue so it can
be received. Valid values follow:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">Do not wait for the message. If the message is
not in the queue and you specified a message key, an error is returned.</td>
</tr>
<tr>
<td align="left" valign="top"><em>-1</em></td>
<td align="left" valign="top">Wait until the message arrives in the queue and
is received, no matter how long it takes. The system has no limit for the wait
time.</td>
</tr>
<tr>
<td align="left" valign="top"><em>n (any positive number)</em></td>
<td align="left" valign="top">Wait <strong>n</strong> seconds for the message
to arrive in the queue.</td>
</tr>
</table>
<p>If you specify a value of zero or above and the message does not arrive in
the specified time, most fields in the RCVM0100, RCVM0200 or RCVM0300 output
are unchanged. The bytes returned output field has a value of 8, and the bytes
available output field has a value of 0. The remaining output fields are
unchanged; they contain whatever was already stored in the space.</p>
</dd>
<dt><strong>Message action</strong></dt>
<dd>INPUT; CHAR(10)
<p>The action to take after the message is received. Valid values follow:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>*OLD</em></td>
<td align="left" valign="top">Keep the message in the message queue and mark it
as an old message. You can receive the message again only by using the message
key or by specifying the message type *NEXT, *PRV (previous), *FIRST, or
*LAST.</td>
</tr>
<tr>
<td align="left" valign="top"><em>*REMOVE</em></td>
<td align="left" valign="top">Remove the message from the message queue. This
instance of the message is no longer available for you to work with. The
message key is no longer valid; therefore, you cannot receive the message
again.</td>
</tr>
<tr>
<td align="left" valign="top"><em>*SAME</em></td>
<td align="left" valign="top">Keep the message in the message queue without
changing its new or old designation. *SAME lets you receive the message again
later without using the message key.</td>
</tr>
</table>
<p>For Integrated Language Environment (ILE) programs, the message action also
indicates if an exception message should be handled. If the message action is
*OLD or *REMOVE, an exception is handled. If *SAME is specified, the exception
is not handled.</p>
</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>Length of call stack entry</strong></dt>
<dd>INPUT; BINARY(4)
<p>The length of the value for the call stack entry parameter. Valid values for
this parameter are as follows:</p>
<ul>
<li>1 through 4096 if partial name indicators are not used.</li>
<li>16 if the call stack entry parameter is a pointer.</li>
<li>1 through 4102 if partial name indicators are used.</li>
</ul>
<p><strong>Note:</strong> The actual length of the call stack entry name cannot
exceed 4096 characters. If this parameter is not used, the value for the call
stack entry parameter is assumed to be 10 characters in length. If this
parameter is not used, the value for the call stack entry parameter is assumed
to be 10 characters in length.</p>
</dd>
<dt><strong>Call stack entry qualification</strong></dt>
<dd>INPUT; CHAR(20)
<p>The name of the module and the ILE program or service program to further
qualify the procedure name specified by the Call stack entry parameter. The
first 10 characters specify the module name, and the second 10 characters
specify the ILE program or service program name. If this parameter is not used,
only the Call stack entry parameter is used to determine the call stack entry.
The following special value may be used:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>*NONE</em></td>
<td align="left" valign="top">This value is used for the module or ILE program
name or service program name, or both. When *NONE is specified for one of the
names, then that name is not used when searching for the call stack entry. If
*NONE is specified for both names, only the Call stack entry parameter is used
to identify the call stack entry.</td>
</tr>
</table>
<p>If the call stack entry is to be identified by pointer, this parameter must
still be passed to the API but both the module name and program name qualifiers
must be specified as *NONE. When a pointer is used, the module and program name
qualification is not applicable.</p>
<p>The module name and bound program name should be used only when identifying
the call stack entry for an ILE procedure. When identifying the entry for an
OPM program, the Optional Parameter Group 1 should either not be used or both
the module name and bound program name should be specified as *NONE.</p>
</dd>
</dl>
<br>
<h3>Optional Parameter Group 2</h3>
<dl>
<dt><strong>Call Stack entry data type</strong></dt>
<dd>INPUT; CHAR(10)
<p>Whether the value of the call stack entry parameter is a character string (a
name or special value) or a pointer. Use one of the following special
values:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>*CHAR</em></td>
<td align="left" valign="top">Value of the parameter is a character string
(name or special value).</td>
</tr>
<tr>
<td align="left" valign="top"><em>*PTR</em></td>
<td align="left" valign="top">Value of the parameter is a pointer.</td>
</tr>
</table>
<p>If the above optional parameter is not specified, it is assumed that the
value of the Call stack entry parameter is a character string.</p>
</dd>
<dt><strong>Coded character set identifier</strong></dt>
<dd>INPUT; BINARY(4)
<p>The coded character set identifier (CCSID) that you want your message text
and message data returned in. This applies to the text and the parts of the
message data defined as a convertible character field (*CCHAR). For more
information about *CCHAR fields, see the <a href="../cl/addmsgd.htm">Add
Message Description (ADDMSGD) Command</a>. The following values are
allowed:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">The received message is converted to the CCSID of
the job before being returned.
<p>If the job is 65535 and the text or data is something other than EBCDIC
single byte or EBCDIC mixed, the text and data are converted to the default job
CCSID.</p>
</td>
</tr>
<tr>
<td align="left" valign="top"><em>65535</em></td>
<td align="left" valign="top">The received message will not be converted before
being returned.</td>
</tr>
<tr>
<td align="left" valign="top"><em>CCSID</em></td>
<td align="left" valign="top">Specify a CCSID you want your text and data
converted to before being returned. Valid values are between 1 and 65535. This
API will validate the CCSID specified.
<p>Only CCSIDs that a job can be changed to are accepted. For a list of valid
job CCSIDs, display the prompt for the CCSID parameter on the CHGJOB
command.</p>
<p>If this parameter is not specified, 0 is used and messages are returned in
the CCSID of the job.</p>
</td>
</tr>
</table>
<p><strong>Note:</strong> If an invalid CCSID conversion is detected during the
receive function, the data is not converted before it is returned. The CCSID
conversion status field should be checked to determine if an error
occurred.</p>
<p>For more information about message handler and its use of CCSIDs, see <a
href="../nls/rbagsccsidmsgsup2.htm">CCSIDs: Message Support</a> in the
Globalization topic.</p>
</dd>
</dl>
<br>
<h3>Optional Parameter Group 3</h3>
<dl>
<dt><strong>Allow default reply rejection</strong></dt>
<dd>INPUT; CHAR(10)
<p>Removing an unanswered inquiry causes the default reply to be
sent to the inquiry message. This value indicates whether a
reply handling exit program will be allowed to reject a
default reply that is sent as a result of using this
function. A reply handling exit program can be registered via
the system registration facility for exit point
QIBM_QMH_REPLY_INQ. If this parameter is not specified, a value
of *NO is used. This parameter is only applicable
when *REMOVE is specified for the message action
parameter. 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>
</dd>
</dl>
<br>
<h3><a name="HDRMSGKEY">Message Types and Message Keys</a></h3>
<p>The message type and message key parameters work together. Depending on the
message type, the key can be required, optional, or disallowed. The following
table lists each message type you can specify, tells whether it requires a key,
and gives other information about using that type.</p>
<p>When used without a key, most message types receive only new messages. When
used with a key, most can receive old or new messages. Message types *FIRST,
*LAST, *PRV (previous), and *NEXT always receive both old and new messages.</p>
<p><strong>New messages</strong> are messages that have been sent to a queue
and have not yet been received. <strong>Old messages</strong> are messages that
have been received but have not yet been removed from the queue.</p>
<p>Messages of type *EXCP are received in last-in first-out (LIFO) order.
Messages of all other types are received in first-in first-out (FIFO)
order.</p>
<p>The following terms are used to describe the message key in the following
table:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>Disallowed</em></td>
<td align="left" valign="top">Do not specify a message key. Instead, use blanks
for the message key parameter. Specifying a message key results in an
error.</td>
</tr>
<tr>
<td align="left" valign="top"><em>Required</em></td>
<td align="left" valign="top">Specify a message key. Not specifying a message
key results in an error.</td>
</tr>
<tr>
<td align="left" valign="top"><em>Optional</em></td>
<td align="left" valign="top">You can either specify a message key or use
blanks for the message key parameter.
<p>When you do not specify a message key, the first new message of the
specified type is received. If a new message of that type is not in the message
queue, no error is returned. The unused space allowed for the output in the
message information parameter is unchanged.</p>
<p>When you specify a message key and the message in the message queue is of
the type specified, the message is received. If the message is not found, or if
the message found does not match the type specified, an error code or exception
is returned.</p>
</td>
</tr>
</table>
<p>There are two cases where the message is not found and no error is returned.
In both cases, the bytes returned field equals 8 and the bytes available field
equals 0. The two cases are:</p>
<ul>
<li>Receiving without a message key (the key is optional or disallowed). A
message of the specified type is not found in the queue.<br>
<br>
</li>
<li>Receiving with a message key (the key is required) and the message type is
*PRV or *NEXT. The message with the key specified was found in the queue, but
no *PRV or *NEXT message is found.</li>
</ul>
<p>The message types you can specify in the QMHRCVPM API are:</p>
<table border width="80%">
<tr>
<th align="left" valign="bottom">Message Type</th>
<th align="left" valign="bottom">Message Key</th>
<th align="left" valign="bottom">Description</th>
</tr>
<tr>
<td align="left" valign="top" width="15%">*ANY</td>
<td align="left" valign="top" width="15%">Optional</td>
<td align="left" valign="top" width="70%">If message key is blanks, then this
receives a message of any type except a sender's copy or request. If the
message key is not blank, this receives the requested message. If the message
is a sender's copy type message, the associated reply is received.</td>
</tr>
<tr>
<td align="left" valign="top">*COMP</td>
<td align="left" valign="top">Optional</td>
<td align="left" valign="top">Receives a completion message.</td>
</tr>
<tr>
<td align="left" valign="top">*COPY</td>
<td align="left" valign="top">Required</td>
<td align="left" valign="top">Receives a copy of a previously sent inquiry
message. The program message queue parameter must specify the reply message
queue specified when the inquiry was sent.</td>
</tr>
<tr>
<td align="left" valign="top">*DIAG</td>
<td align="left" valign="top">Optional</td>
<td align="left" valign="top">Receives a diagnostic message.</td>
</tr>
<tr>
<td align="left" valign="top">*ESCAPE</td>
<td align="left" valign="top">Optional</td>
<td align="left" valign="top">Receives an escape message.</td>
</tr>
<tr>
<td align="left" valign="top">*EXCP</td>
<td align="left" valign="top">Optional</td>
<td align="left" valign="top">Receives an escape or notify message. Both types
of messages are received in last-in first-out (LIFO) order.</td>
</tr>
<tr>
<td align="left" valign="top">*FIRST</td>
<td align="left" valign="top">Disallowed</td>
<td align="left" valign="top">Receives the first new or old message in the
queue, unless it is a request message. Request messages are skipped.</td>
</tr>
<tr>
<td align="left" valign="top">*INFO</td>
<td align="left" valign="top">Optional</td>
<td align="left" valign="top">Receives an informational message.</td>
</tr>
<tr>
<td align="left" valign="top">*LAST</td>
<td align="left" valign="top">Disallowed</td>
<td align="left" valign="top">Receives the last new or old message in the
queue.</td>
</tr>
<tr>
<td align="left" valign="top">*NEXT</td>
<td align="left" valign="top">Required</td>
<td align="left" valign="top">Receives the next new or old message after the
message with the specified key, unless it is a request message. Request
messages are skipped.
<p>You can use the special value *TOP for the message key. *TOP designates the
message at the top of the message queue.</p>
<p>You can use hexadecimal zeros (hex 00000000) for the message key for the
first receive operation.</p>
<p>If *TOP or hexadecimal zeros are specified, the search for the next message
begins after the last request message is received. If no request messages have
been received, the search starts at the top of the message queue.</p>
</td>
</tr>
<tr>
<td align="left" valign="top">*NOTIFY</td>
<td align="left" valign="top">Optional</td>
<td align="left" valign="top">Receives a notify message.</td>
</tr>
<tr>
<td align="left" valign="top">*PRV</td>
<td align="left" valign="top">Required</td>
<td align="left" valign="top">Receives the new or old message before the
message with the specified key.
<p>You can use hexadecimal zeros (hex 00000000) for the message key for the
first receive operation to receive the last message on the queue.</p>
</td>
</tr>
<tr>
<td align="left" valign="top">*RPY</td>
<td align="left" valign="top">Optional</td>
<td align="left" valign="top">Receives the reply to an inquiry or notify
message. For the message key, you can use the key to the sender's copy of the
inquiry or notify message.</td>
</tr>
<tr>
<td align="left" valign="top">*RQS</td>
<td align="left" valign="top">Optional</td>
<td align="left" valign="top">Receives the next request in the program message
queue for the program. Two actions are possible if no request exists:
<ol type="1">
<li>If the job is interactive and the program queue is the external message
queue, the Command Entry display is called to allow the work station user to
type requests.</li>
<li>In all other cases, an error code or exception is returned.</li>
</ol>
</td>
</tr>
</table>
<br>
<br>
<h3><a name="HDRRCVM1A">RCVM0100 Format</a></h3>
<p>The following table lists the fields returned in the RCVM0100 format. For
more information about each item of information, see <a href="#HDRRCVMFDA">
Field Descriptions</a>.</p>
<table border width="80%">
<tr>
<th align="center" valign="bottom" colspan="2">Offset</th>
<th align="left" valign="bottom" rowspan="2">Type</th>
<th align="left" valign="bottom" rowspan="2">Field</th>
</tr>
<tr>
<th align="center" valign="bottom">Dec</th>
<th align="center" valign="bottom">Hex</th>
</tr>
<tr>
<td align="center" valign="top" width="10%">0</td>
<td align="center" valign="top" width="10%">0</td>
<td align="left" valign="top" width="20%">BINARY(4)</td>
<td align="left" valign="top" width="60%">Bytes returned</td>
</tr>
<tr>
<td align="center" valign="top">4</td>
<td align="center" valign="top">4</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Bytes available</td>
</tr>
<tr>
<td align="center" valign="top">8</td>
<td align="center" valign="top">8</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Message severity</td>
</tr>
<tr>
<td align="center" valign="top">12</td>
<td align="center" valign="top">C</td>
<td align="left" valign="top">CHAR(7)</td>
<td align="left" valign="top">Message identifier</td>
</tr>
<tr>
<td align="center" valign="top">19</td>
<td align="center" valign="top">13</td>
<td align="left" valign="top">CHAR(2)</td>
<td align="left" valign="top">Message type</td>
</tr>
<tr>
<td align="center" valign="top">21</td>
<td align="center" valign="top">15</td>
<td align="left" valign="top">CHAR(4)</td>
<td align="left" valign="top">Message key</td>
</tr>
<tr>
<td align="center" valign="top">25</td>
<td align="center" valign="top">19</td>
<td align="left" valign="top">CHAR(7)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">32</td>
<td align="center" valign="top">20</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">CCSID conversion status indicator of message data
or text</td>
</tr>
<tr>
<td align="center" valign="top">36</td>
<td align="center" valign="top">24</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">CCSID of replacement data or impromptu message
text</td>
</tr>
<tr>
<td align="center" valign="top">40</td>
<td align="center" valign="top">28</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of replacement data or impromptu message
text returned</td>
</tr>
<tr>
<td align="center" valign="top">44</td>
<td align="center" valign="top">2C</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of replacement data or impromptu message
text available</td>
</tr>
<tr>
<td align="center" valign="top">48</td>
<td align="center" valign="top">30</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Replacement data or impromptu message text</td>
</tr>
</table>
<br>
<br>
<h3><a name="HDRRCVM2A">RCVM0200 Format</a></h3>
<p>The following table lists the fields returned in the RCVM0200 format. For
more information about each item of information, see <a href="#HDRRCVMFDA">
Field Descriptions</a>.</p>
<table border width="80%">
<tr>
<th align="center" valign="bottom" colspan="2">Offset</th>
<th align="left" valign="bottom" rowspan="2">Type</th>
<th align="left" valign="bottom" rowspan="2">Field</th>
</tr>
<tr>
<th align="center" valign="bottom">Dec</th>
<th align="center" valign="bottom">Hex</th>
</tr>
<tr>
<td align="center" valign="top" width="10%">0</td>
<td align="center" valign="top" width="10%">0</td>
<td align="left" valign="top" width="20%">BINARY(4)</td>
<td align="left" valign="top" width="60%">Bytes returned</td>
</tr>
<tr>
<td align="center" valign="top">4</td>
<td align="center" valign="top">4</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Bytes available</td>
</tr>
<tr>
<td align="center" valign="top">8</td>
<td align="center" valign="top">8</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Message severity</td>
</tr>
<tr>
<td align="center" valign="top">12</td>
<td align="center" valign="top">C</td>
<td align="left" valign="top">CHAR(7)</td>
<td align="left" valign="top">Message identifier</td>
</tr>
<tr>
<td align="center" valign="top">19</td>
<td align="center" valign="top">13</td>
<td align="left" valign="top">CHAR(2)</td>
<td align="left" valign="top">Message type</td>
</tr>
<tr>
<td align="center" valign="top">21</td>
<td align="center" valign="top">15</td>
<td align="left" valign="top">CHAR(4)</td>
<td align="left" valign="top">Message key</td>
</tr>
<tr>
<td align="center" valign="top">25</td>
<td align="center" valign="top">19</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Message file name</td>
</tr>
<tr>
<td align="center" valign="top">35</td>
<td align="center" valign="top">23</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Message file library specified</td>
</tr>
<tr>
<td align="center" valign="top">45</td>
<td align="center" valign="top">2D</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Message file library used</td>
</tr>
<tr>
<td align="center" valign="top">55</td>
<td align="center" valign="top">37</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Sending job</td>
</tr>
<tr>
<td align="center" valign="top">65</td>
<td align="center" valign="top">41</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Sending job's user profile</td>
</tr>
<tr>
<td align="center" valign="top">75</td>
<td align="center" valign="top">4B</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Sending job's number</td>
</tr>
<tr>
<td align="center" valign="top">81</td>
<td align="center" valign="top">51</td>
<td align="left" valign="top">CHAR(12)</td>
<td align="left" valign="top">Sending program name</td>
</tr>
<tr>
<td align="center" valign="top">93</td>
<td align="center" valign="top">5D</td>
<td align="left" valign="top">CHAR(4)</td>
<td align="left" valign="top">Sending program's instruction number</td>
</tr>
<tr>
<td align="center" valign="top">97</td>
<td align="center" valign="top">61</td>
<td align="left" valign="top">CHAR(7)</td>
<td align="left" valign="top">Date sent</td>
</tr>
<tr>
<td align="center" valign="top">104</td>
<td align="center" valign="top">68</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Time sent</td>
</tr>
<tr>
<td align="center" valign="top">110</td>
<td align="center" valign="top">6E</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Receiving program name</td>
</tr>
<tr>
<td align="center" valign="top">120</td>
<td align="center" valign="top">78</td>
<td align="left" valign="top">CHAR(4)</td>
<td align="left" valign="top">Receiving program's instruction number</td>
</tr>
<tr>
<td align="center" valign="top">124</td>
<td align="center" valign="top">7C</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Sending type</td>
</tr>
<tr>
<td align="center" valign="top">125</td>
<td align="center" valign="top">7D</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Receiving type</td>
</tr>
<tr>
<td align="center" valign="top">126</td>
<td align="center" valign="top">7E</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">127</td>
<td align="center" valign="top">7F</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">CCSID conversion status indicator for text</td>
</tr>
<tr>
<td align="center" valign="top">131</td>
<td align="center" valign="top">83</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">CCSID conversion status indicator for data</td>
</tr>
<tr>
<td align="center" valign="top">135</td>
<td align="center" valign="top">87</td>
<td align="left" valign="top">CHAR(9)</td>
<td align="left" valign="top">Alert option</td>
</tr>
<tr>
<td align="center" valign="top">144</td>
<td align="center" valign="top">90</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">CCSID of message and message help</td>
</tr>
<tr>
<td align="center" valign="top">148</td>
<td align="center" valign="top">94</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">CCSID of replacement data or impromptu message
text</td>
</tr>
<tr>
<td align="center" valign="top">152</td>
<td align="center" valign="top">98</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of replacement data or impromptu message
text returned</td>
</tr>
<tr>
<td align="center" valign="top">156</td>
<td align="center" valign="top">9C</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of replacement data or impromptu message
text available</td>
</tr>
<tr>
<td align="center" valign="top">160</td>
<td align="center" valign="top">A0</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of message returned</td>
</tr>
<tr>
<td align="center" valign="top">164</td>
<td align="center" valign="top">A4</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of message available</td>
</tr>
<tr>
<td align="center" valign="top">168</td>
<td align="center" valign="top">A8</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of message help returned</td>
</tr>
<tr>
<td align="center" valign="top">172</td>
<td align="center" valign="top">AC</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of message help available</td>
</tr>
<tr>
<td align="center" valign="top">176</td>
<td align="center" valign="top">B0</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Replacement data or impromptu message text</td>
</tr>
<tr>
<td align="left" valign="top" rowspan="2" colspan="2">The offsets to these
fields equal the offset to the last fixed-length field plus the length of the
previous variable length fields.</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Message</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Message help</td>
</tr>
</table>
<br>
<br>
<h3><a name="HDRRCVM3">RCVM0300 Format</a></h3>
<p>The following table lists the fields returned in the RCVM0300 format. For
more information about each item of information, see <a href="#HDRRCVMFDA">
Field Descriptions</a>.</p>
<table border width="80%">
<tr>
<th align="center" valign="bottom" colspan="2">Offset</th>
<th align="left" valign="bottom" rowspan="2">Type</th>
<th align="left" valign="bottom" rowspan="2">Field</th>
</tr>
<tr>
<th align="center" valign="bottom">Dec</th>
<th align="center" valign="bottom">Hex</th>
</tr>
<tr>
<td align="center" valign="top" width="10%">0</td>
<td align="center" valign="top" width="10%">0</td>
<td align="left" valign="top" width="20%">BINARY(4)</td>
<td align="left" valign="top" width="60%">Bytes returned</td>
</tr>
<tr>
<td align="center" valign="top">4</td>
<td align="center" valign="top">4</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Bytes available</td>
</tr>
<tr>
<td align="center" valign="top">8</td>
<td align="center" valign="top">8</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Message severity</td>
</tr>
<tr>
<td align="center" valign="top">12</td>
<td align="center" valign="top">C</td>
<td align="left" valign="top">CHAR(7)</td>
<td align="left" valign="top">Message identifier</td>
</tr>
<tr>
<td align="center" valign="top">19</td>
<td align="center" valign="top">13</td>
<td align="left" valign="top">CHAR(2)</td>
<td align="left" valign="top">Message type</td>
</tr>
<tr>
<td align="center" valign="top">21</td>
<td align="center" valign="top">15</td>
<td align="left" valign="top">CHAR(4)</td>
<td align="left" valign="top">Message key</td>
</tr>
<tr>
<td align="center" valign="top">25</td>
<td align="center" valign="top">19</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Message file name</td>
</tr>
<tr>
<td align="center" valign="top">35</td>
<td align="center" valign="top">23</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Message file library specified</td>
</tr>
<tr>
<td align="center" valign="top">45</td>
<td align="center" valign="top">2D</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Message file library used</td>
</tr>
<tr>
<td align="center" valign="top">55</td>
<td align="center" valign="top">37</td>
<td align="left" valign="top">CHAR(9)</td>
<td align="left" valign="top">Alert option</td>
</tr>
<tr>
<td align="center" valign="top">64</td>
<td align="center" valign="top">40</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">CCSID conversion status indicator of message and
message help</td>
</tr>
<tr>
<td align="center" valign="top">68</td>
<td align="center" valign="top">44</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">CCSID conversion status indicator of message data
or text</td>
</tr>
<tr>
<td align="center" valign="top">72</td>
<td align="center" valign="top">48</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">CCSID of replacement data or impromptu message
text</td>
</tr>
<tr>
<td align="center" valign="top">76</td>
<td align="center" valign="top">4C</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">CCSID of replacement data and message help</td>
</tr>
<tr>
<td align="center" valign="top">80</td>
<td align="center" valign="top">50</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of replacement data or impromptu message
text returned</td>
</tr>
<tr>
<td align="center" valign="top">84</td>
<td align="center" valign="top">54</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of replacement data or impromptu message
text available</td>
</tr>
<tr>
<td align="center" valign="top">88</td>
<td align="center" valign="top">58</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of message returned</td>
</tr>
<tr>
<td align="center" valign="top">92</td>
<td align="center" valign="top">5C</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of message available</td>
</tr>
<tr>
<td align="center" valign="top">96</td>
<td align="center" valign="top">60</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of message help returned</td>
</tr>
<tr>
<td align="center" valign="top">100</td>
<td align="center" valign="top">64</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of message help available</td>
</tr>
<tr>
<td align="center" valign="top">104</td>
<td align="center" valign="top">68</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of sender information returned</td>
</tr>
<tr>
<td align="center" valign="top">108</td>
<td align="center" valign="top">6C</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of sender information available</td>
</tr>
<tr>
<td align="center" valign="top">112</td>
<td align="center" valign="top">70</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Replacement data or impromptu message text</td>
</tr>
<tr>
<td align="left" valign="top" rowspan="3" colspan="2">The offsets to these
fields equal the offset to the last fixed-length field plus the length of the
previous variable length fields.</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Message</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Message help</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Sender information</td>
</tr>
</table>
<br>
<br>
<h3><a name="Header_99">Sender Information Format</a></h3>
<p>The following table lists the fields for the sender information format of
the RCVM0300 format. For more information about each item of information, see
<a href="#HDRRCVMFDA">Field Descriptions</a>.</p>
<table border width="80%">
<tr>
<th align="center" valign="bottom" colspan="2">Offset</th>
<th align="left" valign="bottom" rowspan="2">Type</th>
<th align="left" valign="bottom" rowspan="2">Field</th>
</tr>
<tr>
<th align="center" valign="bottom">Dec</th>
<th align="center" valign="bottom">Hex</th>
</tr>
<tr>
<td align="center" valign="top" width="10%">0</td>
<td align="center" valign="top" width="10%">0</td>
<td align="left" valign="top" width="20%">CHAR(10)</td>
<td align="left" valign="top" width="60%">Sending job</td>
</tr>
<tr>
<td align="center" valign="top">10</td>
<td align="center" valign="top">A</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Sending job's user profile</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="center" valign="top">14</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Sending job's number</td>
</tr>
<tr>
<td align="center" valign="top">26</td>
<td align="center" valign="top">1A</td>
<td align="left" valign="top">CHAR(7)</td>
<td align="left" valign="top">Date sent</td>
</tr>
<tr>
<td align="center" valign="top">33</td>
<td align="center" valign="top">21</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Time sent</td>
</tr>
<tr>
<td align="center" valign="top">39</td>
<td align="center" valign="top">27</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Sending type</td>
</tr>
<tr>
<td align="center" valign="top">40</td>
<td align="center" valign="top">28</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Receiving type</td>
</tr>
<tr>
<td align="center" valign="top">41</td>
<td align="center" valign="top">29</td>
<td align="left" valign="top">CHAR(12)</td>
<td align="left" valign="top">Sending program name</td>
</tr>
<tr>
<td align="center" valign="top">53</td>
<td align="center" valign="top">35</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Sending module name</td>
</tr>
<tr>
<td align="center" valign="top">63</td>
<td align="center" valign="top">3F</td>
<td align="left" valign="top">CHAR(256)</td>
<td align="left" valign="top">Sending procedure name</td>
</tr>
<tr>
<td align="center" valign="top">319</td>
<td align="center" valign="top">13F</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">320</td>
<td align="center" valign="top">140</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Number of statement numbers or instruction
numbers available for the sending program or procedure</td>
</tr>
<tr>
<td align="center" valign="top">324</td>
<td align="center" valign="top">144</td>
<td align="left" valign="top">CHAR(30)</td>
<td align="left" valign="top">Sending program's statement numbers or
instruction numbers</td>
</tr>
<tr>
<td align="center" valign="top">354</td>
<td align="center" valign="top">162</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Receiving program name</td>
</tr>
<tr>
<td align="center" valign="top">364</td>
<td align="center" valign="top">16C</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Receiving module name</td>
</tr>
<tr>
<td align="center" valign="top">374</td>
<td align="center" valign="top">176</td>
<td align="left" valign="top">CHAR(256)</td>
<td align="left" valign="top">Receiving procedure name</td>
</tr>
<tr>
<td align="center" valign="top">630</td>
<td align="center" valign="top">276</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">640</td>
<td align="center" valign="top">280</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Number of statement numbers or instruction
numbers available for the receiving program or procedure</td>
</tr>
<tr>
<td align="center" valign="top">644</td>
<td align="center" valign="top">284</td>
<td align="left" valign="top">CHAR(30)</td>
<td align="left" valign="top">Receiving program's statement number or
instruction number</td>
</tr>
<tr>
<td align="center" valign="top">674</td>
<td align="center" valign="top">2A2</td>
<td align="left" valign="top">CHAR(2)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">676</td>
<td align="center" valign="top">2A4</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Displacement to long sending program name</td>
</tr>
<tr>
<td align="center" valign="top">680</td>
<td align="center" valign="top">2A8</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of long sending program name</td>
</tr>
<tr>
<td align="center" valign="top">684</td>
<td align="center" valign="top">2AC</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Displacement to long sending procedure name</td>
</tr>
<tr>
<td align="center" valign="top">688</td>
<td align="center" valign="top">2B0</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of long sending procedure name</td>
</tr>
<tr>
<td align="center" valign="top">692</td>
<td align="center" valign="top">2B4</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Displacement to long receiving procedure
name</td>
</tr>
<tr>
<td align="center" valign="top">696</td>
<td align="center" valign="top">2B8</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of long receiving procedure name</td>
</tr>
<tr>
<td align="center" valign="top">700</td>
<td align="center" valign="top">2BC</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Microseconds</td>
</tr>
<tr>
<td align="center" valign="top">706</td>
<td align="center" valign="top">2C2</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Sending user profile</td>
</tr>
<tr>
<td align="center" valign="top">716</td>
<td align="center" valign="top">2CC</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="left" valign="top" rowspan="3" colspan="2">The offsets to these
fields are found in the displacement fields identified in this table.</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Long sending program name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Long sending procedure name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Long receiving procedure name</td>
</tr>
</table>
<br>
<br>
<h3><a name="HDRRCVMFDA">Field Descriptions</a></h3>
<p>The following field descriptions apply only when a message is received. If
no message is found, only the bytes available and bytes returned fields contain
new values. The remaining fields contain whatever information was already
stored in the space allowed for the output.</p>
<p><strong>Alert option.</strong> Whether and when an SNA alert is created and
sent for the message. If a message is received, the value is one of the
following:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>*DEFER</em></td>
<td align="left" valign="top">An alert is sent after local problem
analysis.</td>
</tr>
<tr>
<td align="left" valign="top"><em>*IMMED</em></td>
<td align="left" valign="top">An alert is sent immediately when the message is
sent to a message queue that has the allow alerts attribute set to *YES.</td>
</tr>
<tr>
<td align="left" valign="top"><em>*NO</em></td>
<td align="left" valign="top">No alert is sent.</td>
</tr>
<tr>
<td align="left" valign="top"><em>*UNATTEND</em></td>
<td align="left" valign="top">An alert is sent immediately when the system is
running in unattended mode (when the value of the alert status network
attribute, ALRSTS, is *UNATTEND).</td>
</tr>
</table>
<p>For more information, see the <a href="../books/sc415413.pdf" target=
"_blank">Alerts Support</a> <img src="wbpdf.gif" alt="Link to PDF"> book.</p>
<p><strong>Bytes available.</strong> The length of all available information
that could be returned for the format. Bytes available can be greater than the
length specified in the API's length of message information parameter. If it is
greater, the information returned in the message information parameter is
truncated to the length specified.</p>
<p><strong>Bytes returned.</strong> The length of all information returned in
the format. The value of the bytes returned field is always less than or equal
to the length of the message information parameter. Also, it is always less
than or equal to the bytes available. There is one exception to this. When you
attempt to receive a message and the message is not found, the following
occurs:</p>
<ul>
<li>The value of the bytes returned field is 8.</li>
<li>The value of the bytes available field is 0.</li>
<li>The remaining fields are unchanged (that is, they contain whatever was
already stored in that space).</li>
</ul>
<p>If the bytes returned value is less than the length specified in the length
of message information parameter, the extra space in the message information
parameter is unchanged.</p>
<p><strong>CCSID conversion status indicator for data.</strong> The following
values may be returned:</p>
<table cellpadding="5">
<!-- cols="5 95" -->
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">No conversion was needed because the CCSID of the
replacement data or impromptu message text matched the CCSID you wanted the
data converted to.</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">No conversion occurred because either the data
was 65535 or the CCSID you wanted the data converted to was 65535.</td>
</tr>
<tr>
<td align="left" valign="top"><em>2</em></td>
<td align="left" valign="top">No conversion occurred because you did not supply
enough space for the data.</td>
</tr>
<tr>
<td align="left" valign="top"><em>3</em></td>
<td align="left" valign="top">The data was converted to the CCSID specified
using the best fit conversion tables.</td>
</tr>
<tr>
<td align="left" valign="top"><em>4</em></td>
<td align="left" valign="top">A conversion error occurred using the best fit
conversion tables so a default conversion was attempted. This completed without
error.</td>
</tr>
<tr>
<td align="left" valign="top"><em>-1</em></td>
<td align="left" valign="top">An error occurred on both the best fit and
default conversions. The data was not converted.</td>
</tr>
</table>
<p><strong>CCSID conversion status indicator for text.</strong> The following
values may be returned:</p>
<table cellpadding="5">
<!-- cols="5 95" -->
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">No conversion was needed because the CCSID of the
message or message help text matched the CCSID you wanted the message or
message help text converted to.</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">No conversion occurred because either the message
or message help text was 65535 or the CCSID you wanted the message or message
help text converted to was 65535.</td>
</tr>
<tr>
<td align="left" valign="top"><em>2</em></td>
<td align="left" valign="top">No conversion occurred because you did not supply
enough space for the message or message help text.</td>
</tr>
<tr>
<td align="left" valign="top"><em>3</em></td>
<td align="left" valign="top">The message or message help text was converted to
the CCSID specified using the best fit conversion tables.</td>
</tr>
<tr>
<td align="left" valign="top"><em>4</em></td>
<td align="left" valign="top">A conversion error occurred using the best fit
conversion tables so a default conversion was attempted. This completed without
error.</td>
</tr>
<tr>
<td align="left" valign="top"><em>-1</em></td>
<td align="left" valign="top">An error occurred on both the best fit and
default conversions. The text was not converted.</td>
</tr>
</table>
<p><strong>CCSID of message and message help.</strong> The CCSID of the text in
the message and message help fields is returned. The inserted replacement data
may not be the same CCSID. Refer to the CCSID of the replacement data or
impromptu message text field description for a more details.</p>
<p>If a conversion error occurs or the CCSID you requested the text to be
converted to is 65535, the CCSID that the message description is stored in is
returned. Otherwise, the CCSID you wanted your text converted to is returned.
If you do not want the text converted before it is returned to you but you do
want to know the CCSID that the message description is stored in specify 65535
on the Coded character set identifier parameter. The CCSID that the message
description is stored in is returned in the CCSID of message and message help
output field.</p>
<p><strong>CCSID of replacement data or impromptu message text.</strong> The
CCSID of the impromptu message text or replacement data is returned. If an
impromptu message is received, this is the CCSID of the impromptu message text.
When replacement data is received, this is the CCSID of the message data fields
defined as convertible character (*CCHAR) in the message description. All other
replacement data will not be converted before it is returned. If a conversion
error occurs or if the CCSID you requested the data to be converted to is
65535, the CCSID of the data is returned. If message data is being returned and
there is no *CCHAR replacement data, 65535 is returned. Otherwise, the CCSID
you wanted the data converted to is returned.</p>
<p><strong>Date sent.</strong> The date on which the message was sent, in
CYYMMDD (century, year, month, day) format.</p>
<p><strong>Displacement to long receiving procedure name.</strong> When the
receiving type is 1 or 2, the offset to the long receiving procedure name, in
bytes, from the beginning of the data returned in the sender information
format. If there is not enough room to contain any of the long receiving
procedure, this field is zero.</p>
<p><strong>Displacement to long sending procedure name.</strong> When the
sending type is 1 or 2, the offset to the long sending procedure name, in
bytes, from the beginning of the data returned in the sender information
format. If there is not enough room to contain any of the long sending
procedure, this field is zero.</p>
<p><strong>Displacement to long sending program name.</strong> The offset to
the long sending program name, in bytes, from the beginning of the data
returned in the sender information format. If there is not enough room to
contain any of the long sending program, this field is zero.</p>
<p><strong>Length (general information about the following length
fields).</strong> These formats use two types of length fields, each related to
a single variable length text field. (The variable length text fields return
information to the caller.) The first type of length field is returned length;
the second is available length. <strong>Returned length</strong> is the actual
length of the text in the variable length text field. <strong>Available
length</strong> is the length of the text before it is placed in the variable
length text field. It is always greater than or equal to the returned length.
If the available length equals the returned length, all the message information
is returned. If the text is truncated when placed in the variable length field,
the available length is greater than the returned length by the number of
characters truncated.</p>
<p><strong>Length of long receiving procedure name.</strong> For type 1 and 2,
the length of the complete receiving procedure name, in bytes.</p>
<p><strong>Length of long sending procedure name.</strong> For type 1 and 2,
the length of the complete sending procedure name, in bytes.</p>
<p><strong>Length of long sending program name.</strong> The length of the
complete sending program name, in bytes.</p>
<p><strong>Length of message available.</strong> The length of the available
message text, in bytes. If an immediate message is received, the value of this
field is zero.</p>
<p><strong>Length of message help available.</strong> The length of the
available message help information, in bytes. If an impromptu message is
received, the value of this field is zero.</p>
<p><strong>Length of message help returned.</strong> The length of the message
help information, in bytes. If an impromptu message is received, the value of
this field is zero.</p>
<p><strong>Length of message returned.</strong> The length of the returned text
of a predefined message, in bytes. If an impromptu message is received, the
value of this field is zero.</p>
<p><strong>Length of replacement data or impromptu message available.</strong>
The length of the available impromptu message text or replacement data, in
bytes. If the message identifier is not blank, this field contains the length
of the available message data for a predefined message. If the message
identifier is blank, this field contains the length of the available text of an
impromptu message.</p>
<p><strong>Length of replacement data or impromptu message returned.</strong>
The length of the returned impromptu message text or replacement data, in
bytes. If the message identifier is not blank, this field contains the length
of the replacement data. If the message identifier is blank, this field
contains the length of the impromptu message text.</p>
<p><strong>Length of sender information available.</strong> The length, in
bytes, of information available in the sender information format.</p>
<p><strong>Length of sender information returned.</strong> The length, in
bytes, of information returned in the sender information format.</p>
<p><strong>Long receiving procedure name.</strong> For type 1 and 2, complete
procedure name that received the message. A nested procedure name has each
procedure name separated by a colon. The outermost procedure name is identified
first followed by the procedures it contains. The innermost procedure is
identified last in the string.</p>
<p><strong>Long sending procedure name.</strong> For type 1 and 2, complete
procedure name that sent the message. A nested procedure name has each
procedure name separated by a colon. The outermost procedure name is identified
first followed by the procedures it contains. The innermost procedure is
identified last in the string.</p>
<p><strong>Long sending program name.</strong> The program name that sent the
message.</p>
<p><strong>Message.</strong> The text of a predefined message. If an impromptu
message is received, this field is blank.</p>
<p>The API can truncate the message to fit the available space. If truncation
occurs in the middle of double-byte character set (DBCS) data, the API returns
only complete DBCS characters. It ends the data with a DBCS shift-in
character.</p>
<p><strong>Message file library specified.</strong> The name of the library
containing the message file, as specified in the call to this API. If you
specify *CURLIB or *LIBL for the library when you send the message, that value
is returned as the library here. For the actual library used when the message
is sent, see the message file library used field.</p>
<p><strong>Message file library used.</strong> The name of the library used to
send the message. Because the library can contain override instructions, this
is not necessarily the library in which the message actually resides.</p>
<p><strong>Message file name.</strong> The name of the message file containing
the message received.</p>
<p><strong>Message help.</strong> The message help for the message received. If
an immediate message is received, this field is blank.</p>
<p>The API can truncate the message help to fit the available space. If
truncation occurs in the middle of double-byte character set (DBCS) data, the
API returns only complete DBCS characters. It ends the data with a DBCS
shift-in character.</p>
<p><strong>Message identifier.</strong> The identifying code of the message
received. If an immediate message is received, this field is blank.</p>
<p><strong>Message key.</strong> The key to the message received. The key is
assigned by the command or API that sends the message. If the message action
parameter specifies *REMOVE, this field is blank.</p>
<p><strong>Message severity.</strong> The severity of the message received.
Possible values are 0 through 99.</p>
<p><strong>Message type.</strong> The message type of the message received. The
possible values and their meanings are:</p>
<table cellpadding="5">
<tr>
<th align="left" valign="top">Value</th>
<th align="left" valign="top">Message Type</th>
</tr>
<tr>
<td align="left" valign="top" width="15%"><em>01</em></td>
<td align="left" valign="top" width="85%">Completion</td>
</tr>
<tr>
<td align="left" valign="top"><em>02</em></td>
<td align="left" valign="top">Diagnostic</td>
</tr>
<tr>
<td align="left" valign="top"><em>04</em></td>
<td align="left" valign="top">Informational</td>
</tr>
<tr>
<td align="left" valign="top"><em>05</em></td>
<td align="left" valign="top">Inquiry</td>
</tr>
<tr>
<td align="left" valign="top"><em>06</em></td>
<td align="left" valign="top">Sender's copy</td>
</tr>
<tr>
<td align="left" valign="top"><em>08</em></td>
<td align="left" valign="top">Request</td>
</tr>
<tr>
<td align="left" valign="top"><em>10</em></td>
<td align="left" valign="top">Request with prompting</td>
</tr>
<tr>
<td align="left" valign="top"><em>14</em></td>
<td align="left" valign="top">Notify</td>
</tr>
<tr>
<td align="left" valign="top"><em>15</em></td>
<td align="left" valign="top">Escape</td>
</tr>
<tr>
<td align="left" valign="top"><em>16</em></td>
<td align="left" valign="top">Notify, exception not handled when API is
called</td>
</tr>
<tr>
<td align="left" valign="top"><em>17</em></td>
<td align="left" valign="top">Escape, exception not handled when API is
called</td>
</tr>
<tr>
<td align="left" valign="top"><em>21</em></td>
<td align="left" valign="top">Reply, not validity checked</td>
</tr>
<tr>
<td align="left" valign="top"><em>22</em></td>
<td align="left" valign="top">Reply, validity checked</td>
</tr>
<tr>
<td align="left" valign="top"><em>23</em></td>
<td align="left" valign="top">Reply, message default used</td>
</tr>
<tr>
<td align="left" valign="top"><em>24</em></td>
<td align="left" valign="top">Reply, system default used</td>
</tr>
<tr>
<td align="left" valign="top"><em>25</em></td>
<td align="left" valign="top">Reply, from system reply list</td>
</tr>
<tr>
<td align="left" valign="top">26</td>
<td align="left" valign="top">Reply, from exit program</td>
</tr>
</table>
<p><strong>Microseconds.</strong> The microseconds part of the time sent.</p>
<p><strong>Name of the procedure receiving the message.</strong> This field is
blank if the message was received by an original program model (OPM)
program.</p>
<p><strong>Number of statement numbers or instruction numbers available for the
receiving program or procedure.</strong> For OPM programs and nonoptimized
procedures, this count is 1. For optimized procedures, this count can be
greater than 1. In this case, each statement number represents a potential
point at which the message could have been received. If the mapping table
information is removed from the program, this field returns a count of zero and
no statement numbers are available.</p>
<p><strong>Number of statement numbers or instruction numbers available for the
sending program or procedure.</strong> For OPM programs and nonoptimized
procedures, this count is 1. For optimized procedures, this count can be
greater than 1. In this case, each statement number represents a potential
point at which the message could have been sent. If the mapping table
information is removed from the program, this field returns a count of zero and
no statement numbers are available.</p>
<p><strong>Receiving module name.</strong> For type 1 and 2, the name of the
module receiving the message.</p>
<p><strong>Receiving procedure name.</strong> For type 1 and 2, the name of the
procedure receiving the message. A nested procedure name has each procedure
name separated by a colon. The outermost procedure name is identified first
followed by the procedures it contains. The innermost procedure is identified
last in the string.</p>
<p><strong>Receiving program name.</strong> The name of the program receiving
the message, or the Integrated Language Environment (ILE) program name that
contains the procedure receiving the message.</p>
<p><strong>Receiving program's statement number or instruction number.</strong>
This field can contain up to three statement numbers or instruction numbers.
When the receiving type is 1 or 2, the field contains statement numbers. When
the receiving type is 0, this field contains an instruction number. Each
statement number can be up to 10 characters in length. The instruction number
is 4 characters in length. Each statement number or instruction number is
left-justified in a 10-character partition of the 30-character field. The first
statement number or instruction number is in the leftmost 10 characters and the
third in the rightmost 10 characters. The unused parts of this field are set to
blanks.</p>
<p><strong>Receiving type.</strong> The type of program that received the
message. Valid values follow:</p>
<table cellpadding="5">
<!-- cols="5 95" -->
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">The message was sent to an original program model
(OPM) program.</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">The message was sent to a procedure within an ILE
program, and the procedure name is up to and including 256 characters in
length.</td>
</tr>
<tr>
<td align="left" valign="top"><em>2</em></td>
<td align="left" valign="top">The message was sent to a procedure within an ILE
program, and the procedure name is from 257 characters up to and including 4096
characters in length. For this type, the receiving procedure name is blank, and
the name can be obtained from the long receiving procedure name.</td>
</tr>
</table>
<p><strong>Replacement data or impromptu message text.</strong> The values for
substitution variables in a predefined message, or the text of an impromptu
message. If the message identifier is not blank, this field contains message
data. If the message identifier is blank, this field contains impromptu message
text.</p>
<p>If this field contains message data that contains pointer data, each pointer
must start on a 16-byte boundary. If you are running at security level 50, the
pointer data is invalidated.</p>
<p>The API can truncate the data or text to fit the available space. If the
field contains the text of an impromptu message and is truncated in the middle
of double-byte character set (DBCS) data, the API returns only complete DBCS
characters. It ends the data with a DBCS shift-in character. However, if the
field contains data for a predefined message, the API does not check for DBCS
data. This is because message data can contain pointers, and pointers can
contain the same characters used to mark DBCS data.</p>
<p><strong>Reserved.</strong> An ignored field.</p>
<p><strong>Sending job.</strong> The name of the job in which the message being
received was sent. Because the sending job also must be the receiving job for
call message queues, this field is always blank.</p>
<p><strong>Sending job's number.</strong> The job number of the job in which
the message being received was sent. Because the sending job also must be the
receiving job for call message queues, this field is always blank.</p>
<p><strong>Sending job's user profile.</strong> The name of the user profile
in the qualified job name of the job that
sent the message being received. Because the sending job also must be the
receiving job for call message queues, this field is always blank.
</p>
<p><strong>Sending module name.</strong> For type 1 and 2, the name of the
module that contains the sending message.</p>
<p><strong>Sending procedure name.</strong> For type 1, the name of the
procedure sending the message. A nested procedure name has each procedure name
separated by a colon. The outermost procedure name is identified first followed
by the procedures it contains. The innermost procedure is identified last in
the string.</p>
<p><strong>Sending program name.</strong> The program name or ILE program name
that contains the procedure sending the message. This field is blank if the
sending type is 3.</p>
<p><strong>Sending program's instruction number.</strong> The number of the
program instruction that issued the command or called the API used to send the
message being received.</p>
<p><strong>Sending program's statement numbers or instruction numbers.</strong>
This field can contain up to three statement numbers or an instruction number.
When the sending type is 0 or 3, this field contains an instruction number. The
instruction number is 4 characters in length of original program model (OPM)
programs and 6 characters in length for System Licensed Internal Code (SLIC)
programs. For all other sending types, this field contains statement numbers.
Each statement number can be up to 10 characters in length. The instruction
number is 4 characters in length. Each statement number or instruction number
is left-justified in a 10-character partition of the 30-character field. The
first statement number or instruction number is in the leftmost 10 characters
and the third in the rightmost 10 characters. The unused parts of this field
are set to blanks.</p>
<p><strong>Sending type.</strong> The type of the sender (whether it is a
program or procedure). Possible values and their meanings are as follow:</p>
<table cellpadding="5">
<!-- cols="5 95" -->
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">Sender is an original program model (OPM) program
or a System Licensed Internal Code (SLIC) program with up to and including 12
characters in its name.</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">Sender is a procedure within an ILE program, and
the procedure name is up to and including 256 characters in length.</td>
</tr>
<tr>
<td align="left" valign="top"><em>2</em></td>
<td align="left" valign="top">Sender is a procedure within an ILE program, and
the procedure name is from 257 characters up to and including 4096 characters
in length. For this type, the sending procedure name is blank and the name can
be obtained from the long sending procedure name.</td>
</tr>
<tr>
<td align="left" valign="top"><em>3</em></td>
<td align="left" valign="top">Sender is a SLIC program with 13 or more
characters in its name. For this type, the sending program name is blank, and
the name can be obtained from the long sending program name.</td>
</tr>
</table>
<p><strong>Sending user profile.</strong> The name of the user profile
that the thread was running under when the message was sent.</p>
<p><strong>Time sent.</strong> The time at which the message being received was
sent, in HHMMSS (hour, minute, second) format.</p>
<br>
<h3>Error Messages</h3>
<table width="100%" cellpadding="5">
<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" width="15%">CPF24A3 E</td>
<td align="left" valign="top" width="85%">Value for call stack counter
parameter not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF24A7 E</td>
<td align="left" valign="top">Value for the length of message information not
valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF24A8 E</td>
<td align="left" valign="top">Value for wait time not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF24A9 E</td>
<td align="left" valign="top">Value for message action not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF24AF E</td>
<td align="left" valign="top">Message key not allowed with message type
specified.</td>
</tr>
<tr>
<td align="left" valign="top">CPF24B9 E</td>
<td align="left" valign="top">When call stack entry name is '*' or '*CTLBDY',
module name and program name must be '*NONE'.</td>
</tr>
<tr>
<td align="left" valign="top">CPF24BF E</td>
<td align="left" valign="top">Module or bound-program name is blank.</td>
</tr>
<tr>
<td align="left" valign="top">CPF24B1 E</td>
<td align="left" valign="top">Message key required for message type
specified.</td>
</tr>
<tr>
<td align="left" valign="top">CPF24B2 E</td>
<td align="left" valign="top">Message key of *TOP requires message type of
*NEXT.</td>
</tr>
<tr>
<td align="left" valign="top">CPF24B3 E</td>
<td align="left" valign="top">Message type &amp;1 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">CPF24B7 E</td>
<td align="left" valign="top">Value &amp;1 for call stack entry name length not
valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF24CE E</td>
<td align="left" valign="top">Qualifier &amp;1 incorrect for use with
pointer.</td>
</tr>
<tr>
<td align="left" valign="top">CPF24C5 E</td>
<td align="left" valign="top">Pointer to call stack entry not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF24C6 E</td>
<td align="left" valign="top">Value of To call stack entry data type parameter
not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF2401 E</td>
<td align="left" valign="top">Not authorized to library &amp;1.</td>
</tr>
<tr>
<td align="left" valign="top">CPF2407 E</td>
<td align="left" valign="top">Message file &amp;1 in &amp;2 not found.</td>
</tr>
<tr>
<td align="left" valign="top">CPF2410 E</td>
<td align="left" valign="top">Message key not found in message queue
&amp;1.</td>
</tr>
<tr>
<td align="left" valign="top">CPF2411 E</td>
<td align="left" valign="top">Not authorized to message file &amp;1 in
&amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPF2415 E</td>
<td align="left" valign="top">End of requests.</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">CPF2423 E</td>
<td align="left" valign="top">Variable specified in SENDER parameter less than
80 bytes.</td>
</tr>
<tr>
<td align="left" valign="top">CPF2449 E</td>
<td align="left" valign="top">Message that should be a reply, is not a
reply.</td>
</tr>
<tr>
<td align="left" valign="top">CPF247A E</td>
<td align="left" valign="top">Call stack entry not found.</td>
</tr>
<tr>
<td align="left" valign="top">CPF247E E</td>
<td align="left" valign="top">CCSID &amp;1 is not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF2479 E</td>
<td align="left" valign="top">Call stack entry not found.</td>
</tr>
<tr>
<td align="left" valign="top">CPF2531 E</td>
<td align="left" valign="top">Message file &amp;1 in &amp;2 damaged for
&amp;3.</td>
</tr>
<tr>
<td align="left" valign="top">CPF2548 E</td>
<td align="left" valign="top">Damage to message file &amp;1 in &amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPF2551 E</td>
<td align="left" valign="top">Message key and message type combination not
valid.</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">CPF3C21 E</td>
<td align="left" valign="top">Format name &amp;1 is not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3C3A E</td>
<td align="left" valign="top">Value for parameter &amp;2 for API &amp;1 not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3C36 E</td>
<td align="left" valign="top">Number of parameters, &amp;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 &amp;1.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9872 E</td>
<td align="left" valign="top">Program or service program &amp;1 in library
&amp;2 ended. Reason code &amp;3.</td>
</tr>
</table>
<br>
<hr>
API introduced: V2R1.1
<hr>
<center>
<table 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>
</center>
</body>
</html>