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

875 lines
28 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>Add Node To Recovery Domain (QcstAddNodeToRcvyDomain) 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 -->
<!-- CLUST3A SCRIPT A converted by B2H R4.1 (346) (CMS) by NLJONES at -->
<!-- RCHVMX on 24 Feb 1999 at 17:23:22 -->
<!-- Edited by Kersten Oct 2001 -->
<!-- End Header Records -->
<!-- -->
<!-- -->
<!-- -->
<!-- Begin Developer Note ========================================== -->
<!-- NOTE: If you are adding, changing, or removing ANY requirements -->
<!-- for this API chance are good that the GUI code need to change -->
<!-- also. The Cluster GUI code is built on top of this API and it -->
<!-- does a certain amount of explicit and implicit validation -->
<!-- checking of user data prior to the API call being made. Please -->
<!-- have the Cluster GUI developer check the -->
<!--/as400/v5r4m0.guix/cur/cmvc/java.pgm/ugcl.guix/com/ibm/as400/opnav/ugcl/ClGuiActionsManager.java/ClGuiActionsManager.java -->
<!-- part to determine if any Cluster GUI code changes are needed. -->
<!-- End Developer Note -->
<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>Add Node To Recovery Domain (QcstAddNodeToRcvyDomain) API</h2>
<div class="box" style="width: 80%;">
<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">Node id</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(8)</td>
</tr>
<tr>
<td align="center" valign="top">5</td>
<td align="left" valign="top">Node role</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">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: QCSTCRG1<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 Add Node To Recovery Domain API is used to add a new node to the
recovery domain of an existing cluster resource group. This API causes the
preferred and current roles of all nodes in the recovery domain to be updated.
</p>
<p>This API will do the following:</p>
<ol>
<li>Set the cluster resource group status to Add Node Pending(500).</li>
<li>For application cluster resource groups:
<ol>
<li>If Cluster Resource Services configured the takeover IP address, add the
interface. If the takeover IP address cannot be added, this request fails.</li>
<li>If the cluster resource group is active and the node is being added as a
backup, verify the takeover IP address exists and is not active on the node
being added.</li>
</ol>
</li>
<li>For device cluster resource groups:
<ol>
<li>If the node being added to a cluster resource group is to become the new
primary node, ownership of the devices specified in the cluster resource group
are switched from the current primary to the new primary if none of the
<img src="delta.gif" alt="Start of change">
current primary
<img src="deltaend.gif" alt="End of change">
devices
are varied on
and the cluster resource group is not active.
If any devices are varied on, an error
message is returned. Devices are not varied on after the ownership is
switched.</li>
</ol>
<li>Call the cluster resource group exit program with the action code of Add
Node (11) on all active nodes in the recovery domain, if an exit program is
specified for the cluster resource group.</li>
<li>Verify the queue used by the <a href="cldistinfo.htm">Distribute Information (QcstDistributeInformation) API</a> if the cluster
resource group has been created to indicate the Distribute Information API will
be used.</li>
<li>Verify the failover message
queue if one was specified when the cluster resource group was created.
</li>
<li>Reset the cluster resource group status to the value at the time the API
was called if the exit program is successful.</li>
<li>Set the cluster resource group status to Indoubt(30) if the exit program
fails and the original state of the cluster resource group cannot be
recovered.</li>
<li>Assign the added node the specified role. <img src="delta.gif" alt="Start of change">For primary-backup model cluster resource groups, if the cluster resource group is active, it has more than one backup node, and some backup nodes are not active, the recovery domain may be reordered so that all active backup nodes are ordered before inactive backup nodes.<img src="deltaend.gif" alt="End of change"></li>
</ol>
<p>To change the role of the added node, use the <a
href="clrgchgcrg.htm">Change Cluster Resource Group
(QcstChangeClusterResourceGroup) API</a>.</p>
<p>To remove a node from the recovery domain use the <a href="clrgrmvnrd.htm">Remove Node
From Recovery Domain (QcstRemoveNodeFromRcvyDomain) API</a>.</p>
<p>This API operates in an asynchronous mode. See <a href=
"clust1a3.htm#HDRASYMOD">Behavior of Cluster Resource Services APIs</a> for more
information.</p>
<p><strong>Restrictions:</strong></p>
<ol>
<li>This API cannot be called from a cluster resource group exit program.</li>
<li>Cluster Resource Services must be active on the node processing the
request.</li>
<li>At least one active node in the recovery domain.</li>
<li>The node being added must be active in the cluster.</li>
<li>The cluster resource group
exit program must exist on each node in the recovery domain, including the node
being added. The exit program cannot be in an independent auxiliary storage
pool. </li>
<li>The node being added must not already be a member of the cluster resource
group recovery domain.</li>
<li><img src="delta.gif" alt="Start of change">For primary-backup model
cluster resource groups,<img src="deltaend.gif" alt="End of change">
a node can only be added
as a primary node if the cluster resource group has a status of Inactive (20).
The old primary becomes the last backup. If the cluster resource group has a
status of Active(10), a node can be added as either a backup or a replicate.
</li>
<li><img src="delta.gif" alt="Start of change">For peer model cluster
resource groups, the node can be added as a peer or replicate. If the cluster
resource group has a status of Active (10) and a peer node is added,
the node will be added as an active access point.
<img src="deltaend.gif" alt="End of change">
<li>The queue used by the
Distribute Information API must exist on each node in the recovery domain,
including the node being added if it was specified on the <a href="clrgcrtcrg.htm">Create Cluster Resource Group (QcstCreateClusterResourceGroup) API</a>.
This is verified after the exit program returns. The distributed
information user queue does not allow pointers
within the message content. The distributed information user queue cannot be
in an independent auxiliary storage pool.</li>
<li>
<img src="delta.gif" alt="Start of change">.
If the failover message queue
was defined on the cluster resource group, <img src="deltaend.gif" alt="End of change">
the failover message queue must exist on each node in the recovery domain,
including the node being
added.
This is verified after the exit program returns. The queue cannot be in an independent auxiliary storage pool.
</li>
<li>For device cluster resource groups:
<ol>
<li>A node can be added to a cluster resource group even if it has no device
entries. Device entries must be added using the Add Cluster Resource Group
Device Entry API before the cluster resource group can be started.</li>
<li>If a node is being added to a cluster resource group, the node must be in
the same device domain as the other nodes in the recovery domain.</li>
<li>The configuration objects for the device resources in the cluster resource
group must exist on the node being added and the resource names in the
configuration objects must be the same as the resource names used by the
configuration objects on the existing nodes in the recovery domain. The node
being added must be able to access the hardware resources represented by the
configuration objects in the cluster resource group.</li>
<li>If a data base name is
specified in the configuration objects in the cluster resource group, it must
be the same on the node being added.</li>
<li>If adding a new primary node and an auxiliary storage pool group already exists
for the cluster resource group, all members of the auxiliary storage pool group must
be configured in the cluster resource group before ownership can be changed. </li>
<li>If a server takeover IP address is specified in the cluster resource group and the cluster resource group is active, the
server takeover IP address must exist.</li>
</ol>
</ol>
<br>
<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>Cluster Resource Group Authority</em></dt>
<dd>*CHANGE</dd>
<dt><em>Cluster Resource Group Library Authority</em></dt>
<dd>*EXECUTE</dd>
<dt><em>Cluster Resource Group Lock</em></dt>
<dd>*EXCL</dd>
<dt><em>Exit Program Authority <img src="delta.gif" alt="Start of change"> (applies
to user profile calling the API and user
profile to run the exit program)<img src="deltaend.gif" alt="End of change"></em></dt>
<dd>*EXECUTE</dd>
<dt><em>Exit Program Library Authority <img src="delta.gif" alt="Start of change">
(applies to user profile calling the API and user
profile to run the exit program)<img src="deltaend.gif" alt="End of change"></em></dt>
<dd>*EXECUTE</dd>
<dt><em>User Profile Authority <img src="delta.gif" alt="Start of change">
(applies to user
profile to run the exit program)<img src="deltaend.gif" alt="End of change"></em></dt>
<dd>*USE</dd>
<dt><em>Failover Message Queue
Authority</em></dt>
<dd>*OBJOPR, *ADD</dd>
<dt><em>Failover Message Queue Library Authority</em></dt>
<dd>*EXECUTE </dd>
<dt><em>Request Information User Queue Authority</em></dt>
<dd>*OBJOPR, *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>Configuration Object Authority</em></dt>
<dd>*USE and *OBJMGT</dd>
<dt><em>Distribute Information User Queue Authority</em></dt>
<dd>*OBJOPR, *ADD</dd>
<dt><em>Distribute Information User Queue Library Authority</em></dt>
<dd>*EXECUTE</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>
</dd>
<dt><strong>Cluster name</strong></dt>
<dd>INPUT; CHAR(10)
<p>The name of the cluster in which the cluster resource group exists.</p>
</dd>
<dt><strong>Cluster resource group name</strong></dt>
<dd>INPUT; CHAR(10)
<p>The name of the cluster resource group that will have the new node added to
its recovery domain.</p>
</dd>
<dt><strong>Node id</strong></dt>
<dd>INPUT; CHAR(8)
<p>A unique string of characters that identifies the node being added to the
recovery domain of the cluster resource group specified. The node specified
must be in the cluster and must be unique in the recovery domain of the cluster
resource group specified.</p>
</dd>
<dt><strong>Node role</strong></dt>
<dd>INPUT; BINARY(4)
<p>The role the node will have in the recovery domain. <img src="delta.gif" alt="Start of change">For primary-backup model cluster resource groups
<img src="deltaend.gif" alt="End of change">a node can have one
of three roles: primary, backup, or replicate. Only one node can be designated
as the primary. Backup nodes are assigned a backup order. One indicates the
first backup, two the second backup, and so on. Replicates are not ordered and
cannot become a primary or backup node unless the <a href=
"clrgchgcrg.htm">Change Cluster Resource Group (QcstChangeClusterResourceGroup)
API</a> is used to change its role from replicate to either a backup or
primary. </p>
<p><img src="delta.gif" alt="Start of change">For peer model cluster
resource groups a node can have one
of two roles: peer or replicate. Any number of nodes can be designated
as a peer or replicate. Peer nodes are not ordered and can be an active access point
for the cluster resources. Replicates are not ordered and
cannot become an active access point for the cluster resource unless the <a href=
"clrgchgcrg.htm">Change Cluster Resource Group (QcstChangeClusterResourceGroup)
API</a> is used to change its role from replicate to peer.
<img src="deltaend.gif" alt="End of change"></p>
<p>The following summarizes the valid values for this field:</p>
<table cellpadding="5">
<!-- cols="5 95" -->
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">Primary node. The new node is to be the primary node.
The cluster resource group must have a status of Inactive (20).</td>
</tr>
<tr>
<td align="left" valign="top"><em>&gt;=1</em></td>
<td align="left" valign="top">Backup node. The number indicates the backup order. If
there is already a node with the same backup order, the new node is inserted in
the position requested. At the completion of the request the nodes with backup
roles will be sequentially renumbered from the first backup to the last. The
first backup will always be 1.</td>
</tr>
<tr>
<td align="left" valign="top"><em>-1</em></td>
<td align="left" valign="top">Replicate node. All replicates have this
value. Replicate nodes are not ordered.</td>
</tr>
<tr>
<td align="left" valign="top"><em>-2</em></td>
<td align="left" valign="top">Last Backup. The new node id will be added as the
last backup.</td>
</tr>
<tr>
<td align="left" valign="top"><em><img src="delta.gif" alt="Start of change"><br>-4</em></td>
<td align="left" valign="top">Peer node. All peers have this value. Peer nodes are not
ordered.<img src="deltaend.gif" alt="End of change"></td>
</tr>
</table>
</dd>
<dt><strong>Results information</strong></dt>
<dd>INPUT; CHAR(30)
<p>This parameter identifies a qualified user queue field and is followed by a
reserved field.</p>
<p>Qualified user queue: Completion information is returned to this user queue,
which exists on the node from which the API was called, 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, *CURLIB are
not valid library names. The attributes of this user queue must be keyed.
</p>
<p>Reserved: The last 10 characters of the 30-character results information are
reserved. Each character in this field 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>
<h3><a name="usage_notes">Usage Notes</a></h3>
<h3>Results Information User Queue</h3>
<p>Asynchronous results are returned to a user queue specified by the Results
Information parameter of the API. See <a href="clust1a4.htm">Cluster APIs Use
of User Queues</a> and <a href="clust1a5.htm">Using Results Information</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).</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">CPCBB01 C</td>
<td width="85%" valign="top">Cluster Resource Services API &amp;1
completed.</td>
</tr>
<tr>
<td align="left" valign="top">CPF18BA D</td>
<td align="left" valign="top">Error occurred with subsystem.</td>
</tr>
<tr>
<td align="left" valign="top">CPF2113 E</td>
<td align="left" valign="top">Cannot allocate library &amp;1.</td>
</tr>
<tr>
<td align="left" valign="top">CPF2204 D</td>
<td align="left" valign="top">User profile &amp;2 not found.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3CF2 D</td>
<td align="left" valign="top">Error(s) occurred during running of &amp;1 API.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9801 D</td>
<td align="left" valign="top">Object &amp;2 in library &amp;3 not found.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9802 D</td>
<td align="left" valign="top">Not authorized to object &amp;2 in &amp;3.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9803 D</td>
<td align="left" valign="top">Cannot allocate object &amp;2 in library &amp;3.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9804 D</td>
<td align="left" valign="top">Object &amp;2 in library &amp;3 damaged.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9810 D</td>
<td align="left" valign="top">Library &amp;1 not found.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB09 D</td>
<td align="left" valign="top">Node Id &amp;1 does not exist in cluster &amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB0A D</td>
<td align="left" valign="top">Cluster node &amp;1 in cluster&amp;2 not active.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB0B D</td>
<td align="left" valign="top">Request using takeover IP address &amp;1 failed.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB0F D</td>
<td align="left" valign="top">Cluster resource group &amp;1 does not exist in cluster
&amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB17 D</td>
<td align="left" valign="top">&amp;1 API cannot be processed in cluster &amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB18 D</td>
<td align="left" valign="top">Request &amp;1 not allowed for cluster resource group
&amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB2C D</td>
<td align="left" valign="top">Attributes of exit program &amp;1 in library &amp;2 are not
valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB2D D</td>
<td align="left" valign="top">Timeout detected while waiting for a response.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB2E D</td>
<td align="left" valign="top">Job submission failed for cluster resource group &amp;1 in
cluster &amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB32 D</td>
<td align="left" valign="top">Attributes of user queue &amp;1 in library &amp;2 are not
valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB35 D</td>
<td align="left" valign="top">The user profile name &amp;1 is not valid for this
request.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB38 D</td>
<td align="left" valign="top">Library name &amp;1 not allowed on this request.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB39 D</td>
<td align="left" valign="top">Current user does not have IOSYSCFG special authority.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB46 D</td>
<td align="left" valign="top">Cluster Resource Service internal error.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB52 D</td>
<td align="left" valign="top">Cluster node &amp;1 could not be added to cluster resource
group &amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB5B D</td>
<td align="left" valign="top">Resource name &amp;1 incorrect for configuration object &amp;2
on node &amp;3.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB65 D</td>
<td align="left" valign="top">Cluster node &amp;1 in different device domain.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB66 D</td>
<td align="left" valign="top">Request failed for device cluster resource group &amp;3.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB67 D</td>
<td align="left" valign="top">Node &amp;1 cannot take ownership of configuration object
&amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB6C D</td>
<td align="left" valign="top">Hardware configuration is not complete for configuration
objects in cluster resource group &amp;1.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB70 D</td>
<td align="left" valign="top">API request &amp;1 not compatible with current cluster
version.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB7B D</td>
<td align="left" valign="top">Device type not correct for configuration object &amp;1 on
node &amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB80 D</td>
<td align="left" valign="top">Request failed for device cluster resource group &amp;3.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB81 D</td>
<td align="left" valign="top">New primary node &amp;1 not active.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB90 D</td>
<td align="left" valign="top">Request failed for device cluster resource group &amp;3.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB92 D</td>
<td align="left" valign="top">Hardware resource &amp;1 not owned by node &amp;3 or node
&amp;4.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB98 D</td>
<td align="left" valign="top">Hardware resource &amp;1 not switchable.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB99 D</td>
<td align="left" valign="top">Request failed for device cluster resource group &amp;3.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB9B D</td>
<td align="left" valign="top">Auxiliary storage pool group member &amp;1 not specified.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB9E D</td>
<td align="left" valign="top">Data base name &amp;1 not correct for configuration object
&amp;2 on node &amp;3. </td>
</tr>
<tr>
<td align="left" valign="top">CPIBB10 D</td>
<td align="left" valign="top">Cluster resource group exit program &amp;1 in library &amp;2
on node &amp;3 failed.</td>
</tr>
</table>
<br>
<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">CPF2113 E</td>
<td width="85%" valign="top">Cannot allocate library &amp;1.</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">CPF3C1E E</td>
<td align="left" valign="top">Required parameter &amp;1 omitted.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3C39 E</td>
<td align="left" valign="top">Value for reserved field 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">CPF3CF2 E</td>
<td align="left" valign="top">Error(s) occurred during running of &amp;1 API.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9801 E</td>
<td align="left" valign="top">Object &amp;2 in library &amp;3 not found.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9802 E</td>
<td align="left" valign="top">Not authorized to object &amp;2 in &amp;3.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9803 E</td>
<td align="left" valign="top">Cannot allocate object &amp;2 in library &amp;3.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9804 E</td>
<td align="left" valign="top">Object &amp;2 in library &amp;3 damaged.</td>
</tr>
<tr>
<td align="left" valign="top">CPF980C E</td>
<td align="left" valign="top">Object &amp;1 in library &amp;2 cannot be in an independent
auxiliary storage pool. </td>
</tr>
<tr>
<td align="left" valign="top">CPF9810 E</td>
<td align="left" valign="top">Library &amp;1 not found.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9820 E</td>
<td align="left" valign="top">Not authorized to use 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>
<tr>
<td align="left" valign="top">CPFBB02 E</td>
<td align="left" valign="top">Cluster &amp;1 does not exist.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB09 E</td>
<td align="left" valign="top">Node &amp;1 does not exist in cluster &amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB0A E</td>
<td align="left" valign="top">Cluster node &amp;1 in cluster&amp;2 not active.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB0F E</td>
<td align="left" valign="top">Cluster resource group &amp;1 does not exist in cluster
&amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB26 E</td>
<td align="left" valign="top">Cluster Resource Services not active or not responding.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB29 E</td>
<td align="left" valign="top">Node role value &amp;1 not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB2C E</td>
<td align="left" valign="top">Attributes of exit program &amp;1 in library &amp;2 are not
valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB32 E</td>
<td align="left" valign="top">Attributes of user queue &amp;1 in library &amp;2 are not
valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB39 E</td>
<td align="left" valign="top">Current user does not have IOSYSCFG special authority.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB44 E</td>
<td align="left" valign="top">&amp;1 API cannot be called from a cluster resource group exit
program.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB52 E</td>
<td align="left" valign="top">Cluster node &amp;1 not added to cluster resource group
&amp;2.</td>
</tr>
</table>
<br>
<hr>
API introduced: V4R4
<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>