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

756 lines
21 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>Distribute Information (QcstDistributeInformation) 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. -->
<!-- Change History: -->
<!-- YYMMDD USERID Change description -->
<!-- CLUST2A SCRIPT A converted by B2H R4.1 (346) (CMS) by NLJONES at -->
<!-- RCHVMX on 24 Feb 1999 at 17:15:51 -->
<!-- Edited by Kersten Oct 2001 -->
<!-- End Header Records -->
<link rel="stylesheet" type="text/css" href="../rzahg/ic.css">
</head>
<body>
<!--Java sync-link-->
<script type="text/javascript" language="Javascript" src="../rzahg/synch.js">
</script>
<a name="top_Of_Page"></a>
<h2>Distribute Information (QcstDistributeInformation) 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%">Request handle</td>
<td align="left" valign="top" width="20%">Output</td>
<td align="left" valign="top" width="20%">Char(16)</td>
</tr>
<tr>
<td align="center" valign="top">2</td>
<td align="left" valign="top">Cluster name</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(10)</td>
</tr>
<tr>
<td align="center" valign="top">3</td>
<td align="left" valign="top">Cluster resource group name</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(10)</td>
</tr>
<tr>
<td align="center" valign="top">4</td>
<td align="left" valign="top">Distribute information</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(*)</td>
</tr>
<tr>
<td align="center" valign="top">5</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">6</td>
<td align="left" valign="top">Results information</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(30)</td>
</tr>
<tr>
<td align="center" valign="top">7</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;Service Program: QCSTCRG2<br>
<!-- iddvc RMBR -->
<br>
&nbsp;&nbsp;Default Public Authority: *EXCLUDE<br>
<!-- iddvc RMBR -->
<br>
&nbsp;&nbsp;Threadsafe: Yes<br>
<!-- iddvc RMBR -->
<br>
</div>
<p>The Distribute Information (QcstDistributeInformation) API is used to
deliver information from a node in the recovery domain to other nodes in the
recovery domain. The information will be delivered to the active nodes in the
recovery domain for that cluster resource group. The number of nodes field in
format RGDD0100 is used to send the information to only one node or all
nodes.</p>
<p>The amount of information that can be sent between nodes with this API is
between 1 and 62,000 bytes in length. The API does not encrypt the message data
before sending it.</p>
<p>When the information is delivered to a node, it will be placed on the
specified user queue. If the user queue is keyed, the key length must be
greater than zero and the key must be at the beginning of the data. If the key
length is 0, the queue will be assumed to be non-keyed. The user queue cannot
be in an independent auxiliary storage pool. The results information queue will
indicate the success or failure of the distribution for each active node in the
recovery domain. For each failed delivery, a diagnostic message will be placed
on the results information queue. When the API completes, a completion message
is placed on the results information queue.
<img src="delta.gif" alt="Start of change">If the message type is
"First-In,First-Out" then
no completion message will be placed on the results information queue.
<img src="deltaend.gif" alt="End of change">
</p>
<p>This API can only be run on a node that is an active member in the recovery
domain of a cluster resource group. For example, if nodes A, B, and C are
active and nodes A and B make up the recovery domain for CRGA, the Distribute
Information API for CRGA can only be run on nodes A or B.</p>
<p>Message delivery is determined by the value specified for message delivery
type field. If you want all nodes in the recovery domain to receive the message
in the same sequence, specify a 0. If you want to just send the message without
guarantee of delivery, specify a 1. Messages are ordered within the same
delivery type from the same sender.</p>
<p>This API requires the qualified distribute information user queue name field
to be specified when the cluster resource group is created, otherwise this API
will not be allowed to execute.</p>
<p>This API will:</p>
<ol>
<li>Distribute the data to each node in the recovery domain with a status of
Active (10) or to a single node if the number of nodes field in RGDD0100 is set
to 1.</li>
<li>Enqueue the data on the user queue specified.</li>
<li>Work when the cluster is in a partition state. When the cluster is
partitioned, the message is sent only to those nodes that are in the same
partition as the node where the API was called.</li>
</ol>
<p>This API requires:</p>
<ol>
<li>Cluster Resource Services active on the node processing the request.</li>
<li>Existence of the specified user queue on all nodes in the array of node ids
specified on this API.</li>
<li>The key at the beginning of the data, if using a keyed user queue.</li>
<li>The node processing the request must be in the recovery domain of the
cluster resource group, otherwise the API is not valid.</li>
</ol>
<p>This API operates in asynchronous mode. See <a href=
"clust1a3.htm#HDRASYMOD">Behavior of Cluster Resource Services APIs</a> for
more information. This API may be called from a cluster resource group exit
program. The cluster resource group exit program will not be called when this
API is run.</p>
<p><strong>Restriction:</strong> This API should not be called from a cluster
resource group exit program when a node is joining this cluster resource group,
a node is being added to the recovery domain of this cluster resource group, or
this cluster resource group is being created. The reason for this is that the
node that is joining or being added will not get the information that the
Distribute Information API sent.<br>
</p>
<h3>Authorities and Locks</h3>
<p>The program that calls this API must be running under a user profile with
*IOSYSCFG special authority.</p>
<dl>
<dt><em>User Queue Authority</em></dt>
<dd>*OBJOPR and *ADD</dd>
<dt><em>User Queue Library Authority</em></dt>
<dd>*EXECUTE</dd>
<dt><em>User Queue Lock</em></dt>
<dd>*EXCLRD</dd>
<dt><em>Request Information User Queue Authority</em></dt>
<dd>*OBJOPER, *ADD</dd>
<dt><em>Request Information User Queue Library Authority</em></dt>
<dd>*EXECUTE</dd>
<dt><em>Request Information User Queue Lock</em></dt>
<dd>*EXCLRD</dd>
<dt><em>User Profile Authority</em></dt>
<dd>*USE</dd>
</dl>
<br>
<h3>Required Parameter Group</h3>
<dl>
<dt><strong>Request handle</strong></dt>
<dd>OUTPUT; CHAR(16)
<p>A unique string or handle that identifies this API call. It is used to
associate this call to any responses placed on the user queue specified in the
results information parameter.</p>
<p>If the message type is <img src="delta.gif" alt="Start of change">"First-In,First-Out"<img src="deltaend.gif" alt="End of change"> then the request handle field will be blank.</p>
</dd>
<dt><strong>Cluster name</strong></dt>
<dd>INPUT; CHAR(10)
<p>The name of the cluster to which the cluster resource group belongs.</p>
</dd>
<dt><strong>Cluster resource group name</strong></dt>
<dd>INPUT; CHAR(10)
<p>This name of the cluster resource group.</p>
</dd>
<dt><strong>Distribute information</strong></dt>
<dd>INPUT; CHAR(*))
<p>The detailed information about the message that is be distributed. For more
information, see <a href="#HDRRGDD01">Distribute Information (RGDD0100
Format)</a>.</p>
</dd>
<dt><strong>Format name</strong></dt>
<dd>INPUT;CHAR(8)
<p>The content and format of the distribute information parameter. The possible
format names are:</p>
<table cellpadding="5">
<!-- cols="25 75" -->
<tr>
<td align="left" valign="top"><em><a href="#HDRRGDD01">RGDD0100</a></em></td>
<td align="left" valign="top">Distribute information</td>
</tr>
</table>
<br>
</dd>
<dt><strong>Results information</strong></dt>
<dd>INPUT; CHAR(30)
<p>A library qualified user queue name followed by a reserved field.</p>
<p>Library qualified user queue: A user queue, which exists on the node from
which the API was called, that receives results information after the function
has completed. See the <a href="#usage_notes">Usage Notes</a> section of this
API for a description of the data that is placed on this queue. This is a 20
character field. The first 10 characters contain the user queue name and the
second 10 characters contain the user queue library name. No special values are
supported. QTEMP, *LIBL, and *CURLIB are not valid for the library name. The
attributes of this user queue must be keyed.</p>
<p>Reserved: The last 10 characters of results information are reserved and
must be set to hexadecimal zero.</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>
<h4><a name="HDRRGDD01">Distribute Information (RGDD0100 Format)</a></h4>
<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%">Message delivery type</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">Length of message key</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">Offset to message</td>
</tr>
<tr>
<td align="center" valign="top">12</td>
<td align="center" valign="top">C</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of message</td>
</tr>
<tr>
<td align="center" valign="top">16</td>
<td align="center" valign="top">10</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Offset to array of node ids</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="center" valign="top">14</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Number of node ids</td>
</tr>
<tr>
<td align="center" valign="top">24</td>
<td align="center" valign="top">18</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Message</td>
</tr>
<tr>
<td align="center" valign="top">*</td>
<td align="center" valign="top">*</td>
<td align="left" valign="top">Array of CHAR(8)</td>
<td align="left" valign="top">Node id</td>
</tr>
</table>
<br>
<h3><a name="HDRLSCDDR">Field Descriptions</a></h3>
<p><strong>Length of message.</strong> The length of the data that is to be
distributed. This includes the key length. This value must be between 1 and
62,000.</p>
<p><strong>Length of message key.</strong> The length of the key used to
enqueue the message on a keyed user queue. The key must be at the start of the
distributed message. Possible values are:</p>
<table cellpadding="5">
<!-- cols="5 95" -->
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">Non-keyed user queue.</td>
</tr>
<tr>
<td align="left" valign="top"><em>&gt;=1</em></td>
<td align="left" valign="top">Size of the key.</td>
</tr>
</table>
<p><strong>Message.</strong> The message to be distributed to the nodes in the
recovery domain of the cluster resource group or node id array. Since pointers
will not resolve correctly on other nodes, pointers should not be included in
the message.</p>
<p><strong>Message delivery type.</strong> The method used to deliver the
message. Possible values are:</p>
<table cellpadding="5">
<!-- cols="5 95" -->
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">Total ordering. Guaranteed delivery of totally
ordered message and that receipt of message on all active nodes in the recovery
domain.</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">First-In, First Out (FIFO). Non guaranteed
delivery. Message delivered FIFO and no receipt/acknowledgment required.</td>
</tr>
</table>
<p><strong>Node id.</strong> Name of the node to receive the message. If number
of node ids is not 1, this field is ignored. If the number of node ids is 1,
this value must contain the name of an active node in the recovery domain.</p>
<p><strong>Number of node ids.</strong> The number of nodes in the array of
node ids. If message delivery type is 0, the number of node ids must be 0. If
message delivery type is 1, this field must contain 1 or -1. Possible values
are:</p>
<table cellpadding="5">
<!-- cols="5 95" -->
<tr>
<td align="left" valign="top" nowrap><em>-1</em></td>
<td align="left" valign="top">The message will be sent point to point to all
active nodes in the recovery domain.</td>
</tr>
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">Total ordering, no node ids can be specified.
Message processed on all nodes in the recovery domain at the same time.</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">Message deliver is First-In, First Out(FIFO).
Only one node id can be specified.</td>
</tr>
</table>
<p><strong>Offset to array of node ids.</strong> The byte offset from the
beginning of this table to the first node id. If number of node ids is -1 or 0,
this field must be zero.</p>
<p><strong>Offset to message.</strong> The byte offset from the beginning of
this table to the message.</p>
<h3><a name="usage_notes">Usage Notes</a></h3>
<h4>Results Information User Queue</h4>
<p>Asynchronous results are returned to a user queue specified by the Results
Information parameter of the API. See <a href="clust1a4.htm">Using Results
Information</a> and <a href="clust1a5.htm">Cluster APIs Use of User Queues</a>
for details on how to create the results information user queue, the format of
the entries, and how to use the data placed on the queue. The data is sent to
the user queue in the form of a message identifier and the substitution data
for the message (if any exists). The following identifies the data sent to the
user queue (excluding the message text).<br>
<br>
</p>
<table width="100%" cellpadding="5">
<!-- cols="15 85" -->
<tr>
<th align="left" valign="top">Message ID</th>
<th align="left" valign="top">Message Text</th>
</tr>
<tr>
<td width="15%" valign="top">CPCBB01 C</td>
<td width="85%" valign="top">Cluster Resource Services API &amp;1
completed.</td>
</tr>
<tr>
<td valign="top">CPF2113 D</td>
<td valign="top">Cannot allocate library &amp;1.</td>
</tr>
<tr>
<td valign="top">CPF2204 D</td>
<td valign="top">User profile &amp;1 not found.</td>
</tr>
<tr>
<td valign="top">CPF3CF2 D</td>
<td valign="top">Error(s) occurred during running of &amp;1 API.</td>
</tr>
<tr>
<td valign="top">CPF9801 D</td>
<td valign="top">Object &amp;2 in library &amp;3 not found.</td>
</tr>
<tr>
<td valign="top">CPF9802 D</td>
<td valign="top">Not authorized to object &amp;2 in &amp;3.</td>
</tr>
<tr>
<td valign="top">CPF9803 D</td>
<td valign="top">Cannot allocate object &amp;2 in library &amp;3.</td>
</tr>
<tr>
<td valign="top">CPF9804 D</td>
<td valign="top">Object &amp;2 in library &amp;3 damaged.</td>
</tr>
<tr>
<td valign="top">CPF9810 D</td>
<td valign="top">Library &amp;1 not found.</td>
</tr>
<tr>
<td valign="top">CPFBB0A D</td>
<td valign="top">Cluster node &amp;1 in cluster &amp;2 not active.</td>
</tr>
<tr>
<td valign="top">CPFBB0F D</td>
<td valign="top">Cluster resource group &amp;1 does not exist in cluster
&amp;2.</td>
</tr>
<tr>
<td valign="top">CPFBB18 D</td>
<td valign="top">Request &amp;1 is not allowed for cluster resource group
&amp;2.</td>
</tr>
<tr>
<td valign="top">CPFBB2D D</td>
<td valign="top">Timeout detected while waiting for a response.</td>
</tr>
<tr>
<td valign="top">CPFBB32 D</td>
<td valign="top">Attributes of user queue &amp;1 in library &amp;2 are not
valid.</td>
</tr>
<tr>
<td valign="top">CPFBB38 D</td>
<td valign="top">Library name &amp;1 is not allowed for this request.</td>
</tr>
<tr>
<td valign="top">CPFBB46 D</td>
<td valign="top">Cluster Resource Services internal error.</td>
</tr>
<tr>
<td valign="top">CPFBB47 D</td>
<td valign="top">Cluster Resource Services ended abnormally.</td>
</tr>
<tr>
<td valign="top">CPFBB5F D</td>
<td valign="top">Field value within structure is not valid.</td>
</tr>
<tr>
<td valign="top">CPFBB8F D</td>
<td valign="top">Enqueue on distribute information queue &amp;1 in library
&amp;2 failed.</td>
</tr>
<tr>
<td valign="top">CPIBB0B I</td>
<td valign="top">Distribute information message delivered to &amp;1.</td>
</tr>
<tr>
<td valign="top">CPIBB0C I</td>
<td valign="top">Distribute information message could not be delivered to
&amp;1.</td>
</tr>
<tr>
<td valign="top">CPIBB0D I</td>
<td valign="top">No attempt made to deliver distribute information message to
node &amp;1.</td>
</tr>
</table>
<h3>Error Messages</h3>
<p>Messages that are delivered through the error code parameter are listed
here. The data (messages) sent to the results information user queue are listed
in the <a href="#usage_notes">Usage Notes</a> above.</p>
<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 width="15%" valign="top">CPF2204 E</td>
<td width="85%" valign="top">User profile &amp;1 not found.</td>
</tr>
<tr>
<td valign="top">CPF24B4 E</td>
<td valign="top">Severe error while addressing parameter list.</td>
</tr>
<tr>
<td valign="top">CPF3C1E E</td>
<td valign="top">Required parameter &amp;1 omitted.</td>
</tr>
<tr>
<td valign="top">CPF3C29 E</td>
<td valign="top">Object name &amp;1 is not valid.</td>
</tr>
<tr>
<td valign="top">CPF3C39 E</td>
<td valign="top">Value for reserved field not valid.</td>
</tr>
<tr>
<td valign="top">CPF3CF1 E</td>
<td valign="top">Error code parameter not valid.</td>
</tr>
<tr>
<td valign="top">CPF3CF2 E</td>
<td valign="top">Error(s) occurred during running of &amp;1 API.</td>
</tr>
<tr>
<td valign="top">CPF9801 E</td>
<td valign="top">Object &amp;2 in library &amp;3 not found.</td>
</tr>
<tr>
<td valign="top">CPF9802 E</td>
<td valign="top">Not authorized to object &amp;2 in &amp;3.</td>
</tr>
<tr>
<td valign="top">CPF9804 E</td>
<td valign="top">Object &amp;2 in library &amp;3 damaged.</td>
</tr>
<tr>
<td valign="top">CPF980C E</td>
<td valign="top">Object &amp;1 in library &amp;2 cannot be in an independent
auxiliary storage pool.</td>
</tr>
<tr>
<td valign="top">CPF9810 E</td>
<td valign="top">Library &amp;1 not found.</td>
</tr>
<tr>
<td valign="top">CPF9820 E</td>
<td valign="top">Not authorized to use library &amp;1.</td>
</tr>
<tr>
<td valign="top">CPF9872 E</td>
<td valign="top">Program or service program &amp;1 in library &amp;2 ended.
Reason code &amp;3.</td>
</tr>
<tr>
<td valign="top">CPFBB02 E</td>
<td valign="top">Cluster &amp;1 does not exist.</td>
</tr>
<tr>
<td valign="top">CPFBB0F E</td>
<td valign="top">Cluster resource group &amp;1 does not exist in cluster
&amp;2.</td>
</tr>
<tr>
<td valign="top">CPFBB26 E</td>
<td valign="top">Cluster Resource Services not active or not responding.</td>
</tr>
<tr>
<td valign="top">CPFBB32 E</td>
<td valign="top">Attributes of user queue &amp;1 in library &amp;2 not
valid.</td>
</tr>
<tr>
<td valign="top">CPFBB38 E</td>
<td valign="top">Library name &amp;1 is not allowed for this request.</td>
</tr>
<tr>
<td valign="top">CPFBB46 E</td>
<td valign="top">Cluster Resource Services internal error.</td>
</tr>
<tr>
<td valign="top">CPFBB5F E</td>
<td valign="top">Field value within structure is not valid.</td>
</tr>
<tr>
<td valign="top">CPFBB70 E</td>
<td valign="top">API request &amp;1 not compatible with current cluster
version.</td>
</tr>
<tr>
<td valign="top">CPFBB88 E</td>
<td valign="top">Node &amp;1 not in recovery domain for Cluster Resource Group
&amp;2.</td>
</tr>
<tr>
<td valign="top">CPFBB8C E</td>
<td valign="top">&amp;2 API will not work against cluster resource group
&amp;1.</td>
</tr>
</table>
<br>
<hr>
API introduced: V5R1
<hr>
<center>
<table cellpadding="2" cellspacing="2">
<tr align="center">
<td valign="middle" align="center"><a href="#top_Of_Page">Top</a> | <a href=
"clust1a1.htm">Cluster APIs</a> | <a href="aplist.htm">APIs by
category</a></td>
</tr>
</table>
</center>
</body>
</html>