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

776 lines
22 KiB
HTML
Raw Normal View History

2024-04-02 14:02:31 +00:00
<!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>List Clustered Hash Table Keys (QcstListCHTKeys) 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>List Clustered Hash Table Keys (QcstListCHTKeys) API</h2>
<div class="box" style="width: 75%;">
<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%">Qualified user space name</td>
<td align="LEFT" valign="TOP" width="20%">Input</td>
<td align="LEFT" valign="TOP" width="20%">Char(20)</td>
</tr>
<tr>
<td align="center" valign="TOP">2</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">3</td>
<td align="LEFT" valign="TOP">Connection handle</td>
<td align="LEFT" valign="TOP">Input</td>
<td align="LEFT" valign="TOP">Char(16)</td>
</tr>
<tr>
<td align="center" valign="TOP">4</td>
<td align="LEFT" valign="TOP">Key selection information</td>
<td align="LEFT" valign="TOP">Input</td>
<td align="LEFT" valign="TOP">Void(*)</td>
</tr>
<tr>
<td align="center" valign="TOP">5</td>
<td align="LEFT" valign="TOP">Key selection information size</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">Key selection information format</td>
<td align="LEFT" valign="TOP">Input</td>
<td align="LEFT" valign="TOP">Char(8)</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">Void(*)</td>
</tr>
</table>
<br>
&nbsp;&nbsp;Service Program: QCSTCHT<br>
<!-- iddvc RMBR -->
<br>
&nbsp;&nbsp;Default Public Authority: *USE<br>
<!-- iddvc RMBR -->
<br>
&nbsp;&nbsp;Threadsafe: Yes<br>
<!-- iddvc RMBR -->
<br>
</div>
<p>The List Clustered Hash Table Keys (QcstListCHTKeys) API generates a list of
keys and descriptive information about the entries stored in the clustered hash
table specified by the connection handle parameter. The generated list is
placed in the specified user space and replaces any existing list. There is no
special authority needed to retrieve a list of the keys. The list can include
some of the following:</p>
<ul>
<li>All entries</li>
<li>Entries which are in conflict between clustered hash table domain
nodes</li>
<li>Entries which are owned by a specific user</li>
<li>Entries which were last stored by a specific user</li>
</ul>
<br>
<h3>Restrictions:</h3>
<ul>
<li>A connection must have been established with the clustered hash table
server.</li>
<li>When this API is called, the clustered hash table server must be active on
the requesting node.</li>
<li>This API must be run under the same job that issued the
<a href="clchtconnect.htm">Connect Clustered Hash Table (QcstConnectCHT)</a> API.</li>
</ul>
<br>
<h3>Authorities and Locks</h3>
<dl>
<dt><em>User Space Authority</em></dt>
<dd>*CHANGE</dd>
<dt><em>User Space Library Authority</em></dt>
<dd>*EXECUTE</dd>
<dt><em>User Space Lock</em></dt>
<dd>*EXCLRD</dd>
</dl>
<br>
<h3>Required Parameter Group</h3>
<dl>
<dt><strong>Qualified user space name</strong></dt>
<dd>INPUT; CHAR(20)
<p>The name of the *USRSPC object that is to receive the generated list. The
first 10 characters contain the user space object name, and the second 10
characters contain the name of the library where the user space is located. No
special values are supported for library name, for example, QTEMP, *CURLIB, or
*LIBL. The user space cannot be in an independent auxiliary storage pool.</p>
</dd>
<dt><strong>Format name</strong></dt>
<dd>INPUT; CHAR(8)
<p>The format of the information returned for each key in the clustered hash
table. Possible values are:</p>
<table cellpadding="5">
<!-- cols="25 75" -->
<tr>
<td align="left" valign="top"><em>CHTL0100</em></td>
<td align="left" valign="top">Clustered Hash Table Keys</td>
</tr>
</table>
<p>For more information, see <a href="#HDRCSTL1">CHTL0100 Format</a>.</p>
</dd>
<dt><strong>Connection handle</strong></dt>
<dd>INPUT; CHAR(10)
<p>This is an active connection handle for the clustered hash table server. It
is obtained by calling the <a href="clchtconnect.htm">Connect Clustered Hash
Table (QcstConnectCHT)</a> API.</p>
</dd>
<dt><strong>Key selection information</strong></dt>
<dd>INPUT; CHAR(*)
<p>The information that determines the keys to be listed. The format of this
information is described in <a href="#CHTI0100">CHTI0100 Format</a>.</p>
</dd>
<dt><strong>Key selection information size</strong></dt>
<dd>INPUT; BINARY(4)
<p>The size in bytes of the key selection information parameter. If the size is
greater than the length of the key selection information format, it must be
padded with zeroes.</p>
</dd>
<dt><strong>Key selection information format</strong></dt>
<dd>INPUT; CHAR(8)
<p>The format of the key selection information parameter. Possible values
are:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>CHTI0100</em></td>
<td align="left" valign="top">The specific information identifying the keys to
be listed.</td>
</tr>
</table>
<p>For more information, see <a href="#CHTI0100">CHTI0100 Format</a>.</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><a name="HDRCSTLIST">Format of the Generated Lists</a></h3>
<p>The clustered hash table key list consists of:</p>
<ul>
<li>A user space</li>
<li>A generic header</li>
<li>An input parameter section</li>
<li>A header section</li>
<li>A list data section:
<ul>
<li>CHTL0100 format</li>
</ul>
</li>
</ul>
<p>For details about the user area and generic header, see <a href="../apiref/usf.htm">User
space format for list APIs</a>. For detailed descriptions of the fields in
the list returned, see <a href="#HDRCSTDDE">Field Descriptions</a>.</p>
<p>The completion code in the generic header should be checked to determine if
the API completed successfully. When you retrieve list entry information from a
user space, you must use the length of entry information returned associated
with each entry returned. If you do not use the length of entry information the
result may not be valid.</p>
<br>
<h3><a name="HDRCSTLIP1">Input Parameter Section</a></h3>
<p>An exact copy of the parameters coded in the call to the API.</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%">User space name</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">User space library name</td>
</tr>
<tr>
<td align="CENTER" valign="TOP">20</td>
<td align="CENTER" valign="TOP">14</td>
<td align="LEFT" valign="TOP">CHAR(8)</td>
<td align="LEFT" valign="TOP">Format name</td>
</tr>
<tr>
<td align="CENTER" valign="TOP">28</td>
<td align="CENTER" valign="TOP">1C</td>
<td align="LEFT" valign="TOP">CHAR(16)</td>
<td align="LEFT" valign="TOP">Connection handle</td>
</tr>
<tr>
<td align="CENTER" valign="TOP">44</td>
<td align="CENTER" valign="TOP">2C</td>
<td align="LEFT" valign="TOP">CHAR(8)</td>
<td align="LEFT" valign="TOP">Key selection information format</td>
</tr>
<tr>
<td align="CENTER" valign="TOP">52</td>
<td align="CENTER" valign="TOP">34</td>
<td align="LEFT" valign="TOP">BINARY(4)</td>
<td align="LEFT" valign="TOP">Key selection information size</td>
</tr>
<tr>
<td align="CENTER" valign="TOP">56</td>
<td align="CENTER" valign="TOP">38</td>
<td align="LEFT" valign="TOP">BINARY(4)</td>
<td align="LEFT" valign="TOP">Entry status requested</td>
</tr>
<tr>
<td align="CENTER" valign="TOP">60</td>
<td align="CENTER" valign="TOP">3C</td>
<td align="LEFT" valign="TOP">CHAR(10)</td>
<td align="LEFT" valign="TOP">Storing user profile requested</td>
</tr>
<tr>
<td align="CENTER" valign="TOP">70</td>
<td align="CENTER" valign="TOP">46</td>
<td align="LEFT" valign="TOP">CHAR(10)</td>
<td align="LEFT" valign="TOP">Owning user profile requested</td>
</tr>
</table>
<br>
<br>
<h3>Header Section</h3>
<p>Global information about the clustered hash table keys.</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%">Authorization list name</td>
</tr>
<tr>
<td align="CENTER" valign="TOP">10</td>
<td align="CENTER" valign="TOP">A</td>
<td align="LEFT" valign="TOP">CHAR(2)</td>
<td align="LEFT" valign="TOP">Reserved</td>
</tr>
</table>
<br>
<br>
<h3><a name="HDRCSTL1">CHTL0100 Format</a></h3>
<p>General information about the clustered hash table keys. Detailed
information about a key can be obtained by using the
<a href="clchtretrieveentry.htm">Retrieve Clustered Hash Table Entry
(QcstRetrieveCHTEntry)</a> API.</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%">Length of entry information
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">Offset to 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">Length of key</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">Entry status</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">Authority access level</td>
</tr>
<tr>
<td align="CENTER" valign="TOP">20</td>
<td align="CENTER" valign="TOP">14</td>
<td align="LEFT" valign="TOP">CHAR(10)</td>
<td align="LEFT" valign="TOP">Storing user profile</td>
</tr>
<tr>
<td align="CENTER" valign="TOP">30</td>
<td align="CENTER" valign="TOP">1E</td>
<td align="LEFT" valign="TOP">CHAR(10)</td>
<td align="LEFT" valign="TOP">Owning user profile</td>
</tr>
<tr>
<td align="CENTER" valign="TOP">40</td>
<td align="CENTER" valign="TOP">28</td>
<td align="LEFT" valign="TOP">CHAR(*)</td>
<td align="LEFT" valign="TOP">Key</td>
</tr>
</table>
<br>
<br>
<h3><a name="CHTI0100">CHTI0100 Format</a></h3>
<p>The following table shows the format of the key selection information
parameter for the CHTI0100 format. For detailed descriptions of the fields in
the table, see <a href="#HDRCSTDDE">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%">Entry status requested</td>
</tr>
<tr>
<td align="CENTER" valign="TOP">4</td>
<td align="CENTER" valign="TOP">4</td>
<td align="LEFT" valign="TOP">CHAR(10)</td>
<td align="LEFT" valign="TOP">Storing user profile requested</td>
</tr>
<tr>
<td align="CENTER" valign="TOP">14</td>
<td align="CENTER" valign="TOP">E</td>
<td align="LEFT" valign="TOP">CHAR(10)</td>
<td align="LEFT" valign="TOP">Owning user profile requested</td>
</tr>
</table>
<br>
<br>
<h3><a name="HDRCSTDDE">Field Descriptions</a></h3>
<p><strong>Authority access level.</strong> This field describes who is allowed
to retrieve and update the entry associated with this key. Valid special values
are:</p>
<table cellpadding="5">
<!-- cols="5 95" -->
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">The user profile that owns the entry and a user
with *ALLOBJ authority is allowed to retrieve and update the entry associated
with this key.</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">Any user can retrieve and update the entry
associated with this key.</td>
</tr>
</table>
<p><strong>Authorization list name.</strong> This is the name of the
authorization list specified when the cluster hash table server was started.
Valid special values are:</p>
<table cellpadding="5">
<!-- cols="10 90" -->
<tr>
<td align="left" valign="top"><em>*NONE</em></td>
<td align="left" valign="top">No authorization list was specified.</td>
</tr>
</table>
<p><strong>Connection handle.</strong> This is an active connection handle for
the clustered hash table server. It is obtained by calling the <a href=
"clchtconnect.htm">Connect Clustered Hash Table (QcstConnectCHT)</a> API.</p>
<p><strong>Entry status.</strong> Indicates whether the entry is in conflict or
not. An entry is in conflict if it is not the same on all nodes in the
clustered hash table domain. A potential cause of an entry marked in conflict
is the clustered hash table domain nodes were not communicating and the
information associated with the key was updated from more than one cluster
partition. For additional details on cluster node partitions, see
<a href="../rzaig/rzaigtroubleshootpartitionerrors.htm">Partition errors</a>. To
resolve an entry in conflict, use the <a href="clchtstoreentry.htm">Store
Clustered Hash Table Entry (QcstStoreCHTEntry)</a> API to update the entry to
the correct value. The 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">Entry is not in conflict in the clustered hash
table.</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">Entry is in conflict in the clustered hash
table.</td>
</tr>
</table>
<p><strong>Entry status requested.</strong> Specifies the entry status to use
when returning the list of keys. The 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">Entries which are not in conflict will be
returned.</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">Entries which are in conflict will be
returned.</td>
</tr>
<tr>
<td align="left" valign="top"><em>-1</em></td>
<td align="left" valign="top">All entries will be returned regardless of
status. This is the default value.</td>
</tr>
</table>
<p><strong>Format name.</strong> The content and format of the information
returned for each clustered hash table key. The value must be set to
CHTL0100.</p>
<p><strong>Key.</strong> A key stored in the clustered hash table.</p>
<p><strong>Length of key.</strong> The length of the key stored in the
clustered hash table.</p>
<p><strong>Length of entry information returned.</strong> The total length of
the entry information returned for the key. This value is used to increment to
the next key in the list.</p>
<p><strong>Offset to key.</strong> The bytes from the beginning of the entry to
the Key field.</p>
<p><strong>Owning user profile.</strong> The user profile that owns the entry
associated with this key.</p>
<p><strong>Owning user profile requested.</strong> Specifies the owning user
profile to use when returning the list of keys. The owning user profile is the
user profile that originally stored the entry. Valid special values for this
field are:</p>
<table cellpadding="5">
<!-- cols="10 90" -->
<tr>
<td align="left" valign="top"><em>*ALL</em></td>
<td align="left" valign="top">Returns the keys in the clustered hash table for
all owners. This special value must be left justified. This is the default
value.</td>
</tr>
</table>
<p><strong>Reserved.</strong> This field will contain hexadecimal zeroes.</p>
<p><strong>Storing user profile.</strong> The user profile that last stored the
entry associated with this key.</p>
<p><strong>Storing user profile requested.</strong>Specifies the storing user
profile to use when returning the list of keys. The storing user profile is the
user profile that last stored the entry. Valid special values for this field
are:</p>
<table cellpadding="5">
<!-- cols="10 90" -->
<tr>
<td align="left" valign="top"><em>*ALL</em></td>
<td align="left" valign="top">Returns the keys in the clustered hash table for
all user profiles. This special value must be left justified. This is the
default value.</td>
</tr>
</table>
<p><strong>User space library name.</strong> The name of the library that
contains the user space.</p>
<p><strong>User space name.</strong> The name of the user space that receives
the list.</p>
<br>
<h3>Error Messages</h3>
<table cellpadding="5">
<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">CPF24B4 E</td>
<td width="85%" valign="top">Severe error while addressing parameter list.</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">CPF3CF1 E</td>
<td align="left" valign="top">Error code parameter not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3C3C E</td>
<td align="left" valign="top">Value for parameter &amp;1 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">CPF9810 E</td>
<td align="left" valign="top">Library &amp;1 not found.</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">CPFBB4D E</td>
<td align="left" valign="top">Cluster Resource Services cannot process the request.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBD09 E</td>
<td align="left" valign="top">Clustered hash table server &amp;1 not active or not
responding.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBD0A E</td>
<td align="left" valign="top">Clustered hash table server &amp;1 internal error.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBD0B E</td>
<td align="left" valign="top">Connection handle not active.</td>
</tr>
</table>
<br>
<hr>
API introduced: V5R2
<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>