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

850 lines
25 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>Retrieve Data Queue Description (QMHQRDQD) 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. -->
<!-- QMHQRDQD SCRIPT A converted by B2H R4.1 (346) (CMS) by PMHALL at -->
<!-- RCHVMW2 on 2 Oct 1998 at 13:46:25 -->
<!-- Change History: -->
<!-- YYMMDD USERID Change description -->
<!-- Edited by Kersten Jan 02 -->
<!--End Header Records -->
<link rel="stylesheet" type="text/css" href="../rzahg/ic.css">
</head>
<body>
<a name="Top_Of_Page"></a>
<!-- Java sync-link -->
<script language="Javascript" src="../rzahg/synch.js" type="text/javascript">
</script>
<h2>Retrieve Data Queue Description (QMHQRDQD) API</h2>
<div class="box" style="width: 60%;">
<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%">Receiver variable</td>
<td align="left" valign="top" width="20%">Output</td>
<td align="left" valign="top" width="20%">Char(*)</td>
</tr>
<tr>
<td align="center" valign="top">2</td>
<td align="left" valign="top">Length of receiver variable</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">Qualified data queue name</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(20)</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 Retrieve Data Queue Description (QMHQRDQD) API retrieves the description
and attributes of a data queue. Examples include the number of entries
currently on the data queue, the text description of the data queue, whether
the queue includes sender ID information, and whether the data queue is
keyed.</p>
<p>The attributes of a distributed data management (DDM) data queue can be
retrieved with this API.</p>
<br>
<h3>Authorities and Locks</h3>
<dl>
<dt><em>Data Queue Authority</em></dt>
<dd>*OBJOPR and *READ</dd>
<dt><em>Data Queue Library Authority</em></dt>
<dd>*EXECUTE</dd>
<dt><em>Data Queue Lock</em></dt>
<dd>*EXCLRD</dd>
</dl>
<p>Internally, when a job uses API QSNDDTAQ (Send Data Queue), QRCVDTAQ
(Receive Data Queue), QMHQRDQD (Retrieve Data Queue Description), or QMHRDQM
(Retrieve Data Queue Message), a cache is created to allow faster access to the
data queue. An entry in the cache means a user is authorized to the data queue.
An entry is added to the cache when a user calling one of the APIs has the
required authority to the data queue. An entry is also added to the cache when
QSNDDTAQ is called to handle a journal entry for a data queue created with the
sender ID attribute set to *YES, and the user requesting the the send function
has the required authority to the current profile name in the sender ID
information of the journal entry. The data in the cache is used until the job
ends, so if you need to immediately change a user's authority to one of these
objects, you may need to end that user's jobs.</p>
<br>
<h3>Required Parameter Group</h3>
<dl>
<dt><strong>Receiver variable</strong></dt>
<dd>OUTPUT; CHAR(*)
<p>The receiver variable that receives the information requested. You can
specify the size of the area to be smaller than the format requested as long as
you specify the length parameter correctly. As a result, the API returns only
the data that the area can hold.</p>
</dd>
<dt><strong>Length of receiver variable</strong></dt>
<dd>INPUT; BINARY(4)
<p>The length of the receiver variable provided. The length of receiver
variable parameter may be specified up to the size of the receiver variable
specified in the user program. If the length of receiver variable parameter
specified is larger than the allocated size of the receiver variable specified
in the user program, the results are not predictable. The minimum length is 8
bytes.</p>
</dd>
<dt><strong>Format name</strong></dt>
<dd>INPUT; CHAR(8)
<p>The format of the data queue description to be returned.</p>
<p>The valid format names are:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em><a href="#HDRRDQD10">RDQD0100</a></em></td>
<td align="left" valign="top">Basic data queue description.</td>
</tr>
<tr>
<td align="left" valign="top"><em><a href="#HDRRDQD12">RDQD0200</a></em></td>
<td align="left" valign="top">DDM data queue description. This is valid for DDM
data queues only.</td>
</tr>
</table>
<br>
</dd>
<dt><strong>Qualified data queue name</strong></dt>
<dd>INPUT; CHAR(20)
<p>The data queue whose description is to be returned. The first 10 characters
contain the data queue name, and the second 10 characters contain the data
queue library name.</p>
<p>You can use these special values for the library name:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>*CURLIB</em></td>
<td align="left" valign="top">The job's current library</td>
</tr>
<tr>
<td align="left" valign="top"><em>*LIBL</em></td>
<td align="left" valign="top">The library list</td>
</tr>
</table>
<p><strong>Note:</strong> To improve data queue performance, the data queue
APIs remember addressing information for the last data queues used. This occurs
when a specific (not *LIBL or *CURLIB) value is provided for the library name,
and the data queue is located
in the system auxiliary storage pool (ASP number 1) or a basic user ASP (ASP
numbers 2-32). The addressing information for data queues located in
independent ASPs is not saved.</p>
<p>Because the addressing information is saved, users of this API should be
aware of the following scenario:</p>
<p>If, a job references a data queue the data queue is moved using the Move
Object (MOVOBJ) command or renamed using the Rename Object (RNMOBJ) command,
and a new data queue is created with the same name and library as the data
queue that was renamed or moved, then, the job continues to reference the
original data queue, not the newly created data queue.</p>
<p>The actual name of the data queue and the library in which it is found are
returned by this API.</p>
</dd>
</dl>
<br>
<h3><a name="HDRRDQD10">RDQD0100 Format</a></h3>
<p>The following table shows the information placed in the receiver variable
parameter for the RDQD0100 format. For a detailed description of each field,
see <a href="#HDRRDQD01F">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 length</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">Key length</td>
</tr>
<tr>
<td align="center" valign="top">16</td>
<td align="center" valign="top">10</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Sequence</td>
</tr>
<tr>
<td align="center" valign="top">17</td>
<td align="center" valign="top">11</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Include sender ID</td>
</tr>
<tr>
<td align="center" valign="top">18</td>
<td align="center" valign="top">12</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Force indicator</td>
</tr>
<tr>
<td align="center" valign="top">19</td>
<td align="center" valign="top">13</td>
<td align="left" valign="top">CHAR(50)</td>
<td align="left" valign="top">Text description</td>
</tr>
<tr>
<td align="center" valign="top">69</td>
<td align="center" valign="top">45</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Type of data queue</td>
</tr>
<tr>
<td align="center" valign="top">70</td>
<td align="center" valign="top">46</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Automatic Reclaim</td>
</tr>
<tr>
<td align="center" valign="top">71</td>
<td align="center" valign="top">47</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Reserved</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">Number of messages</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">Number of entries currently allocated</td>
</tr>
<tr>
<td align="center" valign="top">80</td>
<td align="center" valign="top">50</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Data queue name used</td>
</tr>
<tr>
<td align="center" valign="top">90</td>
<td align="center" valign="top">5A</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Data queue library used</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">Maximum number of entries allowed</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">Initial number of entries</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">Maximum number of entries specified
</td>
</tr>
</table>
<br>
<br>
<h3><a name="HDRRDQD12">RDQD0200 Format</a></h3>
<p>The following table shows the information placed in the receiver variable
parameter for the RDQD0200 format. For a detailed description of each field,
see <a href="#HDRRDQD01F">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">CHAR(10)</td>
<td align="left" valign="top">APPC device description</td>
</tr>
<tr>
<td align="center" valign="top">18</td>
<td align="center" valign="top">12</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Mode</td>
</tr>
<tr>
<td align="center" valign="top">26</td>
<td align="center" valign="top">1A</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Remote location name</td>
</tr>
<tr>
<td align="center" valign="top">34</td>
<td align="center" valign="top">22</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Local location name</td>
</tr>
<tr>
<td align="center" valign="top">42</td>
<td align="center" valign="top">2A</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Remote network identifier</td>
</tr>
<tr>
<td align="center" valign="top">50</td>
<td align="center" valign="top">32</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Remote data queue name</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">Remote data queue library name</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">Data queue name used</td>
</tr>
<tr>
<td align="center" valign="top">80</td>
<td align="center" valign="top">50</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Data queue library used</td>
</tr>
<tr>
<td align="center" valign="top">90</td>
<td align="center" valign="top">5A</td>
<td align="left" valign="top">CHAR(18)</td>
<td align="left" valign="top">Relational database name
</td>
</tr>
</table>
<br>
<br>
<h3><a name="HDRRDQD01F">Field Descriptions</a></h3>
<p><strong>APPC device description.</strong> The name of the APPC device
description on the source system that is used with this DDM data queue. The
special value *LOC can be returned. This is the name that was specified on the
DEV parameter of the CRTDTAQ command.
This will be blank for RDB type DDM data queues.
</p>
<p><strong>Automatic reclaim.</strong> Whether or not the data queue has the
amount of storage allocated for the queue reclaimed when the queue is
empty.</p>
<p>Possible values returned are:</p>
<table cellpadding="5">
<!-- cols="5 95" -->
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">Storage is not reclaimed.</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">Storage is reclaimed when the queue is empty. The
amount of storage allocated will be set to the initial number of entries.</td>
</tr>
</table>
<p>This will be blank for a DDM data queue.</p>
<p><strong>Bytes available.</strong> The number of bytes of data available to
be returned. All available data is returned if enough space is provided.</p>
<p><strong>Bytes returned.</strong> The number of bytes of data returned.</p>
<p><strong>Data queue library used.</strong> The library in which the data
queue is found. If *LIBL or *CURLIB is specified for the library name, this
field is the actual name of the library in which the data queue was found. If a
specific library (not *LIBL or *CURLIB) is specified, and the data queue is
moved from that library to a different library after this job first accessed
the data queue, this will be set to the name of the library in which the data
queue currently exists.</p>
<p><strong>Data queue name used.</strong> The name of the data queue. This will
be the same as the name specified unless the data queue was renamed after this
job first accessed the data queue.</p>
<p><strong>Force indicator.</strong> Whether or not the data queue is forced to
auxiliary storage when entries are sent or received for the specified data
queue.</p>
<p>Possible values returned are:</p>
<table cellpadding="5">
<!-- cols="5 95" -->
<tr>
<td align="left" valign="top"><em>Y</em></td>
<td align="left" valign="top">The data queue is forced to auxiliary storage
after entries are sent or received.</td>
</tr>
<tr>
<td align="left" valign="top"><em>N</em></td>
<td align="left" valign="top">The data queue is not forced to auxiliary storage
after entries are sent or received.</td>
</tr>
</table>
<p>This will be blank for a DDM data queue.</p>
<p><strong>Include sender ID.</strong> If the queue was created to include the
sender ID with sent messages.</p>
<p>Possible values returned are:</p>
<table cellpadding="5">
<!-- cols="5 95" -->
<tr>
<td align="left" valign="top"><em>Y</em></td>
<td align="left" valign="top">The sender ID is included when data is sent to
the data queue.</td>
</tr>
<tr>
<td align="left" valign="top"><em>N</em></td>
<td align="left" valign="top">The sender ID is not included when data is sent
to the data queue.</td>
</tr>
</table>
<p>This will be blank for a DDM data queue.</p>
<p><strong>Initial number of entries.</strong> The number of messages that will
fit into the storage allocated for the data queue when it is created or when it
is automatically reclaimed. This will be 0 for a DDM data queue.</p>
<p><strong>Key length.</strong> If the specified data queue was created as a
keyed type, this field contains the length, in bytes, of the message reference
key. Values range from 1 to 256. If the specified queue is not a keyed queue or
is a DDM data queue, the value is 0.</p>
<p><strong>Local location name.</strong> The name of the local location. The
special values *LOC and *NETATR can be returned. This is the name that was
specified on the LCLLOCNAME parameter of the CRTDTAQ command.
This will be blank for RDB type DDM data queues.</p>
<p><strong>Maximum number of entries allowed.</strong> The maximum number of
messages that will fit into the data queue when it is full. This will be 0 for
a DDM data queue.</p>
<p><strong>Maximum number of entries specified.</strong> The maximum number of
messages that was specified on the SIZE keyword of the CRTDTAQ command. This
will be 0 for a DDM data queue. This will be set to -1 for data queues created
prior to release V4R5M0, when support for the SIZE keyword was added to the
CRTDTAQ command.</p>
<p>The number of entries specified or one of the following special values
will be returned:</p>
<table cellpadding="5">
<!-- cols="5 95" -->
<tr>
<td align="left" valign="top"><em>-1</em></td>
<td align="left" valign="top">*MAX16MB was specified for the data queue size.</td>
</tr>
<tr>
<td align="left" valign="top"><em>-2</em></td>
<td align="left" valign="top">*MAX2GB was specified for the data queue size.</td>
</tr>
</table>
<p><strong>Message length.</strong> The maximum length allowed for messages.
The is the value that was specified with the MAXLEN keyword on the CRTDTAQ
command. This will be 0 for a DDM data queue.</p>
<p><strong>Mode.</strong> The mode name used with the remote location name to
communicate with the target system. The special value *NETATR can be returned.
This is the name that was specified on the MODE parameter of the CRTDTAQ
command. This will be blank for RDB type DDM data queues.
</p>
<p><strong>Number of entries currently allocated.</strong> The number of
entries that will fit into the data queue before it is extended. When the queue
is extended, additional storage is allocated for the queue. The data queue can
be extended until it reaches the value for the maximum number of entries
allowed. This will be 0 for a DDM data queue.</p>
<p><strong>Number of messages.</strong> The number of messages currently on the
data queue. This will be 0 for a DDM data queue.</p>
<p><strong>Relational database name.</strong>
The name of the relational database entry that identifies the target system
or target ASP group. This field will be set to blanks unless the data queue
is an RDB type DDM data queue. This is the name that was specifed on the
RDB parameter of the CRTDTAQ command. </p>
<p><strong>Remote data queue library name.</strong> The name of the library for
the remote data queue on the target system. The special values *LIBL and
*CURLIB can be returned. This is the data queue name that was specified on the
RMTDTAQ parameter of the CRTDTAQ command.</p>
<p><strong>Remote data queue name.</strong> The name of the remote data queue
on the target system. This is the data queue name that was specified on the
RMTDTAQ parameter of the CRTDTAQ command.</p>
<p><strong>Remote location name.</strong> The name of the remote location that
is used with this object. This is the name that was specified on the RMTLOCNAME
parameter of the CRTDTAQ command.
A special value of *RDB indicates that the remote location information
from the relational database entry returned in the relational database
entry name field is used to determine the remote system.</p>
<p><strong>Remote network identifier.</strong> The remote network identifier in
which the remote location used to communcate with the target system. The
special values *LOC, *NETATR, and *NONE can be returned. This is the name that
was specified on the RMTNETID parameter of the CRTDTAQ command.
This will be blank for RDB type DDM data queues.</p>
<p><strong>Reserved.</strong> An unused field.</p>
<p><strong>Sequence.</strong> The sequence in which messages can be removed
from the queue.</p>
<p>Possible values returned are:</p>
<table cellpadding="5">
<!-- cols="5 95" -->
<tr>
<td align="left" valign="top"><em>F</em></td>
<td align="left" valign="top">First-in first-out</td>
</tr>
<tr>
<td align="left" valign="top"><em>K</em></td>
<td align="left" valign="top">Keyed</td>
</tr>
<tr>
<td align="left" valign="top"><em>L</em></td>
<td align="left" valign="top">Last-in first-out</td>
</tr>
</table>
<p>This will be blank for a DDM data queue.</p>
<p><strong>Text description.</strong> The text description of the data queue.
The field contains blanks if no text description was specified when the data
queue was created.</p>
<p><strong>Type of data queue.</strong></p>
<p>This will be set to one of the following values:</p>
<table cellpadding="5">
<!-- cols="5 95" -->
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">The data queue is a standard data queue.</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">The data queue is a DDM data queue.</td>
</tr>
</table>
<br>
<h3>Error Messages</h3>
<table width="100%" cellpadding="5">
<!-- cols="15 85" -->
<tr>
<th align="left" valign="top">Message ID</th>
<th align="left" valign="top">Error Message Text</th>
</tr>
<tr>
<td width="15%" valign="top">CPF2150 E</td>
<td width="85%" valign="top">Object information function failed.</td>
</tr>
<tr>
<td align="left" valign="top">CPF2151 E</td>
<td align="left" valign="top">Operation failed for &amp;2 in &amp;1 type
*&amp;3.</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">CPF3C21 E</td>
<td align="left" valign="top">Format name &amp;1 is not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3C24 E</td>
<td align="left" valign="top">Length of the receiver variable is 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">CPF9503 E</td>
<td align="left" valign="top">Cannot lock data queue &amp;1 in &amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9509 E</td>
<td align="left" valign="top">Space access error.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9516 E</td>
<td align="left" valign="top">Format &amp;1 not allowed for data queue.</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">CPF9807 E</td>
<td align="left" valign="top">One or more libraries in library list
deleted.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9808 E</td>
<td align="left" valign="top">Cannot allocate one or more libraries on library
list.</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">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
<hr>
<table cellpadding="2" cellspacing="2" align="center">
<tr align="center">
<td valign="middle" align="center"><a href="#Top_Of_Page">Top</a> | <a href=
"obj1.htm">Object API categories</a> | <a href="aplist.htm">API by
category</a></td>
</tr>
</table>
</body>
</html>