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

5173 lines
172 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>Retrieve Synchronization Object Information (Qp0msRtvSyncObjInfo) 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. -->
<!-- Created for V5R3 by Darcy Rucker -->
<!-- Change history -->
<!-- 0300918 JETAYLOR html cleanup -->
<!-- 040903 darcyr Changes for PTF SI15644 -->
<!-- 040713 darcyr New Function For V5R4 -->
<!-- 050801 darcyr Fixed a few typos -->
<!--End Header Records ================================================ -->
<link rel="stylesheet" type="text/css" href="../rzahg/ic.css">
</head>
<body>
<a name="Top_Of_Page"></a>
<!-- Java sync-link =================================================== -->
<script type="text/javascript" language="Javascript" src="../rzahg/synch.js">
</script>
<h2>Retrieve Synchronization
Object Information (Qp0msRtvSyncObjInfo()) 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%">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 of receiver information</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">Target identification</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 of target identification</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">Options variable</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(*)</td>
</tr>
<tr>
<td align="center" valign="top">7</td>
<td align="left" valign="top">Format of options variable</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(8)</td>
</tr>
<tr>
<td align="center" valign="top">8</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 Name: QP0MSRTVSO<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 Retrieve Synchronization Object Information API (Qp0msRtvSyncObjInfo())
retrieves status information for a synchronization object.</p>
<br>
<h3>Authorities and Locks</h3>
<dl>
<dt><em>Job Authority</em></dt>
<dd>The API must be called from within the job for which the information is
being retrieved, or the caller of the API must be running under a user profile
that is the same as the job user identity of the job for which the information
is being retrieved. Otherwise, the caller of the API must be running under a
user profile that has job control (*JOBCTL) special authority.<br>
<br>
<p>The <strong>job user identity</strong> is the name of the user profile by
which a job is known to other jobs. It is described in more detail in the
<a href="../rzaks/rzaks1.htm">Work Management</a> topic.</p>
</dd>
</dl>
<br>
<h3>Required Parameter Group</h3>
<dl>
<dt><strong>Receiver variable</strong></dt>
<dd>OUTPUT; CHAR(*)
<p>The variable that is to receive the information requested. The number of
synchronization object descriptions that are available may exceed the receiver
variable capacity. As a result, the receiver variable structure contains only
the data that the structure can hold. For example, this may mean that the
number of synchronization object entries returned field in the receiver variable does
not match the value in the number of synchronization object entries available field.</p>
</dd>
<dt><strong>Length of receiver variable</strong></dt>
<dd>INPUT; BINARY(4)
<p>The size of the receiver variable structure. If the size provided in the
length of receiver variable parameter is larger than the size of the receiver
variable allocated in the user program, the results are not predictable. The
minimum size is 8 bytes.</p>
</dd>
<dt><strong>Format of receiver variable</strong></dt>
<dd>INPUT; CHAR(8)
<p>The format of the information returned in the receiver variable. The
possible format names are:</p>
<table cellpadding="5" border width="80%">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>PMTX0100</em></td>
<td align="left" valign="top">Pointer-based mutex format. See <a href=
"#PMTX0100_Header">PMTX0100 Format</a> for details on the list of threads associated with a pointer-based mutex that can be obtained for a specified job or thread.</td>
</tr>
<tr>
<td align="left" valign="top"><em>PMTX0200</em></td>
<td align="left" valign="top">Pointer-based mutex format. See <a href=
"#PMTX0200_Header">PMTX0200 Format</a> for details on the list of waiting
threads that can be obtained for a specified pointer-based mutex.</td>
</tr>
<tr>
<td align="left" valign="top"><em>
PMTX0300
</em></td>
<td align="left" valign="top">Pointer-based mutex format. See <a href=
"#PMTX0300_Header">PMTX0300 Format</a> for details on the list of waiting
threads that can be obtained for a specified pointer-based mutex.</td>
</tr>
<tr>
<td align="left" valign="top"><em>HMTX0100</em></td>
<td align="left" valign="top">Handle-based mutex format. See <a href=
"#HMTX0100_Header">HMTX0100 Format</a> for details on the list of threads associated with a handle-based
mutex that can be obtained for a specified job or thread.</td>
</tr>
<tr>
<td align="left" valign="top"><em>HMTX0200</em></td>
<td align="left" valign="top">Handle-based mutex format. See <a href=
"#HMTX0200_Header">HMTX0200 Format</a> for details on the list of waiting
threads that can be obtained for a specified handle-based mutex.</td>
</tr>
<tr>
<td align="left" valign="top"><em>HMTX0300</em></td>
<td align="left" valign="top">Handle-based mutex format. See <a href=
"#HMTX0300_Header">HMTX0300 Format</a> for details on the list of waiting
threads that can be obtained for a specified handle-based mutex.</td>
</tr>
<tr>
<td align="left" valign="top"><em>HCND0100</em></td>
<td align="left" valign="top">Handle-based condition format. See <a href=
"#HCND0100_Header">HCND0100 Format</a> for details on the list of threads associated with a handle-based
condition that can be obtained for a specified job or thread.</td>
</tr>
<tr>
<td align="left" valign="top"><em>HCND0200</em></td>
<td align="left" valign="top">Handle-based condition format. See <a href=
"#HCND0200_Header">HCND0200 Format</a> for details on the list of waiting
threads that can be obtained for a specified handle-based condition.</td>
</tr>
<tr>
<td align="left" valign="top"><em>
HCND0300
</em></td>
<td align="left" valign="top">Handle-based condition format. See <a href=
"#HCND0300_Header">HCND0300 Format</a> for details on the list of waiting
threads that can be obtained for a specified handle-based condition.</td>
</tr>
<tr>
<td align="left" valign="top"><em>STOK0100</em></td>
<td align="left" valign="top">Synchronization token format. See <a href=
"#STOK0100_Header">STOK0100 Format</a> for details on the list of threads associated with a
synchronization token that can be obtained for a specified job or thread.</td>
</tr>
<tr>
<td align="left" valign="top"><em>STOK0200</em></td>
<td align="left" valign="top">Synchronization token format. See <a href=
"#STOK0200_Header">STOK0200 Format</a> for details on the list of waiting
threads that can be obtained for a specified synchronization token.</td>
</tr>
<tr>
<td align="left" valign="top"><em>STOK0300</em></td>
<td align="left" valign="top">Synchronization token format. See <a href=
"#STOK0300_Header">STOK0300 Format</a> for details on the list of waiting
threads that can be obtained for a specified synchronization token.</td>
</tr>
<tr>
<td align="left" valign="top"><em>SEMA0100</em></td>
<td align="left" valign="top">Semaphore format. See <a href="#SEMA0100_Header">
SEMA0100 Format</a> for details on the list of threads associated with a semaphore that can be obtained for a specified job, a specified thread or system wide.</td>
</tr>
<tr>
<td align="left" valign="top"><em>SEMA0200</em></td>
<td align="left" valign="top">Semaphore format. See <a href="#SEMA0200_Header">
SEMA0200 Format</a> for details on the list of waiting threads that can be obtained for
a specified semaphore.</td>
</tr>
<tr>
<td align="left" valign="top"><em>SEMA0300</em></td>
<td align="left" valign="top">Semaphore format. See <a href="#SEMA0300_Header">
SEMA0300 Format</a> for details on the list of waiting threads that can be obtained for
a specified semaphore.</td>
</tr>
</table><br>
</dd>
<dt><strong>Target identification information</strong></dt>
<dd>INPUT; CHAR(*)
<p>The structure that identifies target information for the specified receiver
format. See <a href="#Format_of_target_identification_info">Format of target identification information</a> for details.</p>
</dd>
<dt><strong><a name="Format_of_target_identification_info">Format of target identification information</a></strong></dt>
<dd>INPUT; CHAR(8)
<p>The formats listed below provide job or thread identification information or
synchronization object identification information to the appropriate receiver
formats. The target ID format must be used with a receiver format listed under
Required Receiver Formats in the table below, or the API will fail with the
CPE3021 message. The possible format names are:</p>
<table cellpadding="5" border width="80%">
<!-- cols="15 70 15" -->
<tr>
<td align="left" valign="top"><em>Target ID Format</em></td>
<td align="left" valign="top"><em>Definition</em></td>
<td align="left" valign="top"><em>Required Receiver Formats</em></td>
</tr>
<tr>
<td align="left" valign="top"><em>TIDF0000</em></td>
<td align="left" valign="top">This format is used with the SEMA0100 format when
information is retrieved system wide. When this format is specified, a null
pointer is passed as the Target identification parameter.</td>
<td align="left" valign="top"><em>SEMA0100*</em></td>
</tr>
<tr>
<td align="left" valign="top"><em>TIDF0100</em></td>
<td align="left" valign="top">This format is used when a list of threads associated with a synchronization object for a job or thread is retrieved. This format specifies
information for the formats listed under Required Receiver Formats in this
table. This format is also used when the SEMA0100 format does not return
system wide information. See <a href="#TIDF0100_Header">TIDF0100 Format</a> for details on the fields of the
structure used with this format.</td>
<td align="left" valign="top">
<table>
<tr><td align="left" valign="top"><em>PMTX0100</em></td></tr>
<tr><td align="left" valign="top"><em>HMTX0100</em></td></tr>
<tr><td align="left" valign="top"><em>HCND0100</em></td></tr>
<tr><td align="left" valign="top"><em>STOK0100</em></td></tr>
<tr><td align="left" valign="top"><em>SEMA0100*</em></td></tr>
</table>
</td>
</tr>
<tr>
<td align="left" valign="top"><em>TIDF0200</em></td>
<td align="left" valign="top">This format is used when waiting thread
descriptions for a synchronization object are retrieved. This format
specifies information for the formats listed under Required Receiver
Formats in this table. See <a href="#TIDF0200_Header">TIDF0200 Format</a> for details on the fields
of the structure used with this format.</td>
<td align="left" valign="top">
<p><em>PMTX0200</em><br>
<em>HMTX0200</em><br>
<em>HCND0200</em><br>
<em>STOK0200</em><br>
<em>SEMA0200</em><br>
<em>PMTX0300</em><br>
<em>HMTX0300</em><br>
<em>HCND0300</em><br>
<em>STOK0300</em><br>
<em>SEMA0300</em></p>
</td>
</tr>
</table>
<p>* The SEMA0100 receiver format is associated with more than one target ID
format.</p>
<br>
</dd>
<dt><strong>Options variable</strong></dt>
<dd>INPUT; CHAR(*)
<p>The options available for receiver formats.
The Options variable data structure is described in <a href="#Options_Format_Header">Format of options variable
information</a>.</p>
</dd>
<dt><a name="Options_Format_Header"><strong>Format of options variable</strong></a></dt>
<dd>INPUT; CHAR(8)
<p>The format of the information in the options variable. The options format must be used with
a receiver format listed under Required Receiver Formats in the table below, or
the API will fail with the CPE3021 message. The possible formats are:</p>
<table cellpadding="5" border width="80%">
<!-- cols="15 70 15" -->
<tr>
<td align="left" valign="top"><em>Option format</em></td>
<td align="left" valign="top"><em>Definition</em></td>
<td align="left" valign="top"><em>Required Receiver Formats</em></td>
</tr>
<tr>
<td align="left" valign="top"><em>OPTN0000</em></td>
<td align="left" valign="top">The OPTN0000 format is used with the formats listed
under Required Receiver Formats in this table. When the OPTN0000 is specified, a
null pointer is passed as the Options parameter.</td>
<td align="left" valign="top">
<table>
<tr><td align="left" valign="top"><em>PMTX0200</em></td></tr>
<tr><td align="left" valign="top"><em>HMTX0200</em></td></tr>
<tr><td align="left" valign="top"><em>HCND0200</em></td></tr>
<tr><td align="left" valign="top"><em>STOK0200</em></td></tr>
<tr><td align="left" valign="top"><em>SEMA0200</em></td></tr>
<tr><td align="left" valign="top"><em>PMTX0300</em></td></tr>
<tr><td align="left" valign="top"><em>HMTX0300</em></td></tr>
<tr><td align="left" valign="top"><em>HCND0300</em></td></tr>
<tr><td align="left" valign="top"><em>STOK0300</em></td></tr>
<tr><td align="left" valign="top"><em>SEMA0300</em></td></tr>
</table>
</td>
</tr>
<tr>
<td align="left" valign="top"><em>OPTN0100</em></td>
<td align="left" valign="top">The OPTN0100 format is used to specify the type
of the Options variable for the formats listed under Required Receiver Formats
in this table. See <a href="#OPTN0100_Header">OPTN0100 Format</a> for details on Options variable fields.</td>
<td align="left" valign="top">
<table>
<tr><td align="left" valign="top"><em>PMTX0100</em></td></tr>
<tr><td align="left" valign="top"><em>HMTX0100</em></td></tr>
<tr><td align="left" valign="top"><em>HCND0100</em></td></tr>
<tr><td align="left" valign="top"><em>STOK0100</em></td></tr>
<tr><td align="left" valign="top"><em>SEMA0100</em></td></tr>
</table>
</td>
</tr>
</table><br>
</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="PMTX0100_Header">PMTX0100 Format - Retrieve pointer-based mutexes
associated with a job or thread</a></h3>
<p>This format is used to retrieve information for pointer-based mutexes
associated with one or all threads of a job. The following table shows the
receiver variable fields returned with the PMTX0100 format. For a detailed
description of each field, see <a href="#Header_8">Receiver Format 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">Number of threads in job</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">Number of mutex descriptions available</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">Number of mutex descriptions returned</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="center" valign="top">14</td>
<td align="left" valign="top">BINARY(4) UNSIGNED</td>
<td align="left" valign="top">Offset to mutex descriptions</td>
</tr>
<tr>
<td align="center" valign="top">24</td>
<td align="center" valign="top">18</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of mutex descriptions</td>
</tr>
<tr>
<td align="center" valign="top">28</td>
<td align="center" valign="top">1C</td>
<td align="left" valign="top">CHAR(4)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">32</td>
<td align="center" valign="top">20</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Pointer-based mutex description</td>
</tr>
<tr>
<td align="left" valign="top" rowspan="13" colspan="2" width="20%">These fields
repeat for each thread associated with a pointer-based mutex.</td>
<td align="left" valign="top" width="20%">CHAR(8)</td>
<td align="left" valign="top" width="60%">Thread identifier associated with
mutex</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Number of thread descriptions for identified thread</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Description sequence value for the thread
associated with the mutex</td>
</tr>
<tr>
<td align="left" valign="top">PTR(OPN)</td>
<td align="left" valign="top">Mutex reference</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(16)</td>
<td align="left" valign="top">Mutex name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Mutex owner thread identifier</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Mutex owner thread unique value</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Mutex owner job name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Mutex owner user name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Mutex owner job number</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Mutex state</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Number of threads waiting on mutex</td>
</tr>
</table>
<br>
<br>
<h3><a name="PMTX0200_Header">PMTX0200 Format - Retrieve threads associated
with a pointer-based mutex</a></h3>
<p>This format is used to retrieve information for waiting threads associated with a
specified pointer-based mutex. The following table shows the receiver variable
fields returned with the PMTX0200 format. For a detailed description of each
field, see <a href="#Header_8">Receiver Format 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">Number of threads waiting on mutex</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">Number of waiting thread descriptions
available</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">Number of waiting thread descriptions
returned</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="center" valign="top">14</td>
<td align="left" valign="top">BINARY(4) UNSIGNED</td>
<td align="left" valign="top">Offset to waiting thread descriptions</td>
</tr>
<tr>
<td align="center" valign="top">24</td>
<td align="center" valign="top">18</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of waiting thread descriptions</td>
</tr>
<tr>
<td align="center" valign="top">28</td>
<td align="center" valign="top">1C</td>
<td align="left" valign="top">CHAR(4)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">32</td>
<td align="center" valign="top">20</td>
<td align="left" valign="top">CHAR(16)</td>
<td align="left" valign="top">Mutex name</td>
</tr>
<tr>
<td align="center" valign="top">48</td>
<td align="center" valign="top">30</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Mutex owner thread identifier</td>
</tr>
<tr>
<td align="center" valign="top">56</td>
<td align="center" valign="top">38</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Mutex owner thread unique value</td>
</tr>
<tr>
<td align="center" valign="top">64</td>
<td align="center" valign="top">40</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Mutex owner job name</td>
</tr>
<tr>
<td align="center" valign="top">74</td>
<td align="center" valign="top">4A</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Mutex owner user name</td>
</tr>
<tr>
<td align="center" valign="top">84</td>
<td align="center" valign="top">54</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Mutex owner job number</td>
</tr>
<tr>
<td align="center" valign="top">90</td>
<td align="center" valign="top">5A</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">96</td>
<td align="center" valign="top">60</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Description of thread waiting for mutex</td>
</tr>
<tr>
<td align="left" valign="top" rowspan="6" colspan="2" width="20%">These fields
repeat for each thread waiting on the specified pointer-based mutex.</td>
<td align="left" valign="top" width="20%">CHAR(8)</td>
<td align="left" valign="top" width="60%">Waiter thread identifier</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Waiter thread unique value</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Waiter thread job name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Waiter thread user name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Waiter thread job number</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Reserved</td>
</tr>
</table>
<br>
<br>
<h3>
<img src="delta.gif" alt="Start of change">
<a name="PMTX0300_Header">
PMTX0300 Format - Retrieve threads associated with a pointer-based mutex
</a>
<img src="deltaend.gif" alt="End of change">
</h3>
<p>This format is used to retrieve information for waiting threads associated with a
specified pointer-based mutex. The following table shows the receiver variable
fields returned with the PMTX0300 format. For a detailed description of each
field, see <a href="#Header_8">Receiver Format 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">Number of threads waiting on mutex</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">Number of waiting thread descriptions
available</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">Number of waiting thread descriptions
returned</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="center" valign="top">14</td>
<td align="left" valign="top">BINARY(4) UNSIGNED</td>
<td align="left" valign="top">Offset to waiting thread descriptions</td>
</tr>
<tr>
<td align="center" valign="top">24</td>
<td align="center" valign="top">18</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of waiting thread descriptions</td>
</tr>
<tr>
<td align="center" valign="top">28</td>
<td align="center" valign="top">1C</td>
<td align="left" valign="top">CHAR(4)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">32</td>
<td align="center" valign="top">20</td>
<td align="left" valign="top">CHAR(16)</td>
<td align="left" valign="top">Mutex name</td>
</tr>
<tr>
<td align="center" valign="top">48</td>
<td align="center" valign="top">30</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Mutex owner thread identifier</td>
</tr>
<tr>
<td align="center" valign="top">56</td>
<td align="center" valign="top">38</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Mutex owner thread unique value</td>
</tr>
<tr>
<td align="center" valign="top">64</td>
<td align="center" valign="top">40</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Mutex owner job name</td>
</tr>
<tr>
<td align="center" valign="top">74</td>
<td align="center" valign="top">4A</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Mutex owner user name</td>
</tr>
<tr>
<td align="center" valign="top">84</td>
<td align="center" valign="top">54</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Mutex owner job number</td>
</tr>
<tr>
<td align="center" valign="top">90</td>
<td align="center" valign="top">5A</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">96</td>
<td align="center" valign="top">60</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Last mutex locker thread identifier</td>
</tr>
<tr>
<td align="center" valign="top">104</td>
<td align="center" valign="top">68</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Last mutex locker thread unique value</td>
</tr>
<tr>
<td align="center" valign="top">112</td>
<td align="center" valign="top">70</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Last mutex locker job name</td>
</tr>
<tr>
<td align="center" valign="top">122</td>
<td align="center" valign="top">7A</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Last mutex locker user name</td>
</tr>
<tr>
<td align="center" valign="top">132</td>
<td align="center" valign="top">84</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Last mutex locker job number</td>
</tr>
<tr>
<td align="center" valign="top">138</td>
<td align="center" valign="top">8A</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">144</td>
<td align="center" valign="top">90</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Last mutex unlocker thread identifier</td>
</tr>
<tr>
<td align="center" valign="top">152</td>
<td align="center" valign="top">98</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Last mutex unlocker thread unique value</td>
</tr>
<tr>
<td align="center" valign="top">160</td>
<td align="center" valign="top">A0</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Last mutex unlocker job name</td>
</tr>
<tr>
<td align="center" valign="top">170</td>
<td align="center" valign="top">AA</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Last mutex unlocker user name</td>
</tr>
<tr>
<td align="center" valign="top">180</td>
<td align="center" valign="top">B4</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Last mutex unlocker job number</td>
</tr>
<tr>
<td align="center" valign="top">186</td>
<td align="center" valign="top">BA</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">192</td>
<td align="center" valign="top">C0</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Recursive flag</td>
</tr>
<tr>
<td align="center" valign="top">193</td>
<td align="center" valign="top">C1</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Keep valid flag</td>
</tr>
<tr>
<td align="center" valign="top">194</td>
<td align="center" valign="top">C2</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Pending state flag</td>
</tr>
<tr>
<td align="center" valign="top">195</td>
<td align="center" valign="top">C3</td>
<td align="left" valign="top">CHAR(13)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">208</td>
<td align="center" valign="top">D0</td>
<td align="left" valign="top">BINARY(8) UNSIGNED</td>
<td align="left" valign="top">Lock count</td>
</tr>
<tr>
<td align="center" valign="top">216</td>
<td align="center" valign="top">D8</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Mutex creator program</td>
</tr>
<tr>
<td align="center" valign="top">224</td>
<td align="center" valign="top">E0</td>
<td align="left" valign="top">PTR(SPC)</td>
<td align="left" valign="top">Original mutex</td>
</tr>
<tr>
<td align="center" valign="top">240</td>
<td align="center" valign="top">F0</td>
<td align="left" valign="top">CHAR(16)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">256</td>
<td align="center" valign="top">100</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Description of thread waiting for mutex</td>
</tr>
<tr>
<td align="left" valign="top" rowspan="6" colspan="2" width="20%">These fields
repeat for each thread waiting on the specified pointer-based mutex.</td>
<td align="left" valign="top" width="20%">CHAR(8)</td>
<td align="left" valign="top" width="60%">Waiter thread identifier</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Waiter thread unique value</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Waiter thread job name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Waiter thread user name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Waiter thread job number</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Reserved</td>
</tr>
</table>
<br>
<br>
<h3><a name="HMTX0100_Header">HMTX0100 Format - Retrieve handle-based mutexes
associated with a job or thread</a></h3>
<p>This format is used to retrieve information for handle-based mutexes
associated with one or all threads of a job. The following table shows the
receiver variable fields returned with the HMTX0100 format. For a detailed
description of each field, see <a href="#Header_8">Receiver Format 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">Number of threads in job</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">Number of mutex descriptions available</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">Number of mutex descriptions returned</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="center" valign="top">14</td>
<td align="left" valign="top">BINARY(4) UNSIGNED</td>
<td align="left" valign="top">Offset to mutex descriptions</td>
</tr>
<tr>
<td align="center" valign="top">24</td>
<td align="center" valign="top">18</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of mutex descriptions</td>
</tr>
<tr>
<td align="center" valign="top">28</td>
<td align="center" valign="top">1C</td>
<td align="left" valign="top">CHAR(4)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">32</td>
<td align="center" valign="top">20</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Handle-based mutex description</td>
</tr>
<tr>
<td align="left" valign="top" rowspan="14" colspan="2" width="20%">These fields
repeat for each thread associated with a handle-based mutex.</td>
<td align="left" valign="top" width="20%">CHAR(8)</td>
<td align="left" valign="top" width="60%">Thread identifier associated with
mutex</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Number of thread descriptions for identified thread</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Description sequence value for the thread
associated with the mutex</td>
</tr>
<tr>
<td align="left" valign="top">PTR(OPN)</td>
<td align="left" valign="top">Mutex reference</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Mutex owner thread identifier</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Mutex owner thread unique value</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Mutex owner job name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Mutex owner user name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Mutex owner job number</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Mutex state</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(5)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(8)</td>
<td align="left" valign="top">Mutex key</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Number of threads waiting on mutex</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(4)</td>
<td align="left" valign="top">Reserved</td>
</tr>
</table>
<br>
<br>
<h3><a name="HMTX0200_Header">HMTX0200 Format - Retrieve threads associated
with a handle-based mutex</a></h3>
<p>This format is used to retrieve information for waiting threads associated with a
specified handle-based mutex. The following table shows the receiver variable
fields returned with the HMTX0200 format. For a detailed description of each
field, see <a href="#Header_8">Receiver Format 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">Number of threads waiting on mutex</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">Number of waiting thread descriptions
available</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">Number of waiting thread descriptions
returned</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="center" valign="top">14</td>
<td align="left" valign="top">BINARY(4) UNSIGNED</td>
<td align="left" valign="top">Offset to waiting thread descriptions</td>
</tr>
<tr>
<td align="center" valign="top">24</td>
<td align="center" valign="top">18</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of waiting thread descriptions</td>
</tr>
<tr>
<td align="center" valign="top">28</td>
<td align="center" valign="top">1C</td>
<td align="left" valign="top">CHAR(4)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">32</td>
<td align="center" valign="top">20</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Mutex creator program</td>
</tr>
<tr>
<td align="center" valign="top">40</td>
<td align="center" valign="top">28</td>
<td align="left" valign="top">BINARY(8)</td>
<td align="left" valign="top">Mutex key</td>
</tr>
<tr>
<td align="center" valign="top">48</td>
<td align="center" valign="top">30</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Mutex owner thread identifier</td>
</tr>
<tr>
<td align="center" valign="top">56</td>
<td align="center" valign="top">38</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Mutex owner thread unique value</td>
</tr>
<tr>
<td align="center" valign="top">64</td>
<td align="center" valign="top">40</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Mutex owner job name</td>
</tr>
<tr>
<td align="center" valign="top">74</td>
<td align="center" valign="top">4A</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Mutex owner user name</td>
</tr>
<tr>
<td align="center" valign="top">84</td>
<td align="center" valign="top">54</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Mutex owner job number</td>
</tr>
<tr>
<td align="center" valign="top">90</td>
<td align="center" valign="top">5A</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">96</td>
<td align="center" valign="top">60</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Description of thread waiting for mutex</td>
</tr>
<tr>
<td align="left" valign="top" rowspan="6" colspan="2" width="20%">These fields
repeat for each thread waiting on the specified handle-based mutex.</td>
<td align="left" valign="top" width="20%">CHAR(8)</td>
<td align="left" valign="top" width="60%">Waiter thread identifier</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Waiter thread unique value</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Waiter thread job name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Waiter thread user name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Waiter thread job number</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Reserved</td>
</tr>
</table>
<br>
<br>
<h3>
<img src="delta.gif" alt="Start of change">
<a name="HMTX0300_Header">HMTX0300 Format - Retrieve threads associated
with a handle-based mutex</a>
<img src="deltaend.gif" alt="End of change">
</h3>
<p>This format is used to retrieve information for waiting threads associated with a
specified handle-based mutex. The following table shows the receiver variable
fields returned with the HMTX0300 format. For a detailed description of each
field, see <a href="#Header_8">Receiver Format 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">Number of threads waiting on mutex</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">Number of waiting thread descriptions
available</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">Number of waiting thread descriptions
returned</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="center" valign="top">14</td>
<td align="left" valign="top">BINARY(4) UNSIGNED</td>
<td align="left" valign="top">Offset to waiting thread descriptions</td>
</tr>
<tr>
<td align="center" valign="top">24</td>
<td align="center" valign="top">18</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of waiting thread descriptions</td>
</tr>
<tr>
<td align="center" valign="top">28</td>
<td align="center" valign="top">1C</td>
<td align="left" valign="top">CHAR(4)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">32</td>
<td align="center" valign="top">20</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Mutex creator program</td>
</tr>
<tr>
<td align="center" valign="top">40</td>
<td align="center" valign="top">28</td>
<td align="left" valign="top">BINARY(8)</td>
<td align="left" valign="top">Mutex key</td>
</tr>
<tr>
<td align="center" valign="top">48</td>
<td align="center" valign="top">30</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Mutex owner thread identifier</td>
</tr>
<tr>
<td align="center" valign="top">56</td>
<td align="center" valign="top">38</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Mutex owner thread unique value</td>
</tr>
<tr>
<td align="center" valign="top">64</td>
<td align="center" valign="top">40</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Mutex owner job name</td>
</tr>
<tr>
<td align="center" valign="top">74</td>
<td align="center" valign="top">4A</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Mutex owner user name</td>
</tr>
<tr>
<td align="center" valign="top">84</td>
<td align="center" valign="top">54</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Mutex owner job number</td>
</tr>
<tr>
<td align="center" valign="top">90</td>
<td align="center" valign="top">5A</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">96</td>
<td align="center" valign="top">60</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Last mutex locker thread identifier</td>
</tr>
<tr>
<td align="center" valign="top">104</td>
<td align="center" valign="top">68</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Last mutex locker thread unique value</td>
</tr>
<tr>
<td align="center" valign="top">112</td>
<td align="center" valign="top">70</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Last mutex locker job name</td>
</tr>
<tr>
<td align="center" valign="top">122</td>
<td align="center" valign="top">7A</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Last mutex locker user name</td>
</tr>
<tr>
<td align="center" valign="top">132</td>
<td align="center" valign="top">84</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Last mutex locker job number</td>
</tr>
<tr>
<td align="center" valign="top">138</td>
<td align="center" valign="top">8A</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">144</td>
<td align="center" valign="top">90</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Last mutex unlocker thread identifier</td>
</tr>
<tr>
<td align="center" valign="top">152</td>
<td align="center" valign="top">98</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Last mutex unlocker thread unique value</td>
</tr>
<tr>
<td align="center" valign="top">160</td>
<td align="center" valign="top">A0</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Last mutex unlocker job name</td>
</tr>
<tr>
<td align="center" valign="top">170</td>
<td align="center" valign="top">AA</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Last mutex unlocker user name</td>
</tr>
<tr>
<td align="center" valign="top">180</td>
<td align="center" valign="top">B4</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Last mutex unlocker job number</td>
</tr>
<tr>
<td align="center" valign="top">186</td>
<td align="center" valign="top">BA</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">192</td>
<td align="center" valign="top">C0</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Recursive flag</td>
</tr>
<tr>
<td align="center" valign="top">193</td>
<td align="center" valign="top">C1</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Keep valid flag</td>
</tr>
<tr>
<td align="center" valign="top">194</td>
<td align="center" valign="top">C2</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Pending state flag</td>
</tr>
<tr>
<td align="center" valign="top">195</td>
<td align="center" valign="top">C3</td>
<td align="left" valign="top">CHAR(5)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">200</td>
<td align="center" valign="top">C8</td>
<td align="left" valign="top">BINARY(8) UNSIGNED</td>
<td align="left" valign="top">Lock count</td>
</tr>
<tr>
<td align="center" valign="top">208</td>
<td align="center" valign="top">D0</td>
<td align="left" valign="top">CHAR(16)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">224</td>
<td align="center" valign="top">E0</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Description of thread waiting for mutex</td>
</tr>
<tr>
<td align="left" valign="top" rowspan="6" colspan="2" width="20%">These fields
repeat for each thread waiting on the specified handle-based mutex.</td>
<td align="left" valign="top" width="20%">CHAR(8)</td>
<td align="left" valign="top" width="60%">Waiter thread identifier</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Waiter thread unique value</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Waiter thread job name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Waiter thread user name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Waiter thread job number</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Reserved</td>
</tr>
</table>
<br>
<br>
<h3><a name="HCND0100_Header">HCND0100 Format - Retrieve handle-based
conditions associated with a job or thread</a></h3>
<p>This format is used to retrieve information for handle-based conditions
associated with one or all threads of a job. The following table shows the
receiver variable fields returned with the HCND0100 format. For a detailed
description of each field, see <a href="#Header_8">Receiver Format 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">Number of threads in job</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">Number of condition descriptions available</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">Number of condition descriptions returned</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="center" valign="top">14</td>
<td align="left" valign="top">BINARY(4) UNSIGNED</td>
<td align="left" valign="top">Offset to condition descriptions</td>
</tr>
<tr>
<td align="center" valign="top">24</td>
<td align="center" valign="top">18</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of condition descriptions</td>
</tr>
<tr>
<td align="center" valign="top">28</td>
<td align="center" valign="top">1C</td>
<td align="left" valign="top">CHAR(4)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">32</td>
<td align="center" valign="top">20</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Handle-based condition description</td>
</tr>
<tr>
<td align="left" valign="top" rowspan="5" colspan="2" width="20%">These fields
repeat for each thread associated with a handle-based condition.</td>
<td align="left" valign="top" width="20%">PTR(OPN)</td>
<td align="left" valign="top" width="60%">Condition reference</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Thread identifier associated with condition</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(8)</td>
<td align="left" valign="top">Condition Key</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Number of threads waiting on condition</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(12)</td>
<td align="left" valign="top">Reserved</td>
</tr>
</table>
<br>
<br>
<h3><a name="HCND0200_Header">HCND0200 Format - Retrieve threads associated
with a handle-based condition</a></h3>
<p>This format is used to retrieve information for waiting threads associated with a
specified handle-based condition. The following table shows the receiver
variable fields returned with the HCND0200 format. For a detailed description
of each field, see <a href="#Header_8">Receiver Format 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">Number of threads waiting on condition</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">Number of waiting thread descriptions
available</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">Number of waiting thread descriptions
returned</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="center" valign="top">14</td>
<td align="left" valign="top">BINARY(4) UNSIGNED</td>
<td align="left" valign="top">Offset to waiting thread descriptions</td>
</tr>
<tr>
<td align="center" valign="top">24</td>
<td align="center" valign="top">18</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of waiting thread descriptions</td>
</tr>
<tr>
<td align="center" valign="top">28</td>
<td align="center" valign="top">1C</td>
<td align="left" valign="top">CHAR(4)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">32</td>
<td align="center" valign="top">20</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Condition creator program</td>
</tr>
<tr>
<td align="center" valign="top">40</td>
<td align="center" valign="top">28</td>
<td align="left" valign="top">BINARY(8)</td>
<td align="left" valign="top">Condition key</td>
</tr>
<tr>
<td align="center" valign="top">48</td>
<td align="center" valign="top">30</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Description of thread waiting for condition</td>
</tr>
<tr>
<td align="left" valign="top" rowspan="6" colspan="2" width="20%">These fields
repeat for each thread waiting on the specified handle-based condition.</td>
<td align="left" valign="top" width="20%">CHAR(8)</td>
<td align="left" valign="top" width="60%">Waiter thread identifier</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Waiter thread unique value</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Waiter thread job name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Waiter thread user name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Waiter thread job number</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Reserved</td>
</tr>
</table>
<br>
<br>
<h3>
<img src="delta.gif" alt="Start of change">
<a name="HCND0300_Header">HCND0300 Format - Retrieve threads associated
with a handle-based condition</a>
<img src="deltaend.gif" alt="End of change"> </h3>
<p>This format is used to retrieve information for waiting threads associated with a
specified handle-based condition. The following table shows the receiver
variable fields returned with the HCND0300 format. For a detailed description
of each field, see <a href="#Header_8">Receiver Format 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">Number of threads waiting on condition</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">Number of waiting thread descriptions
available</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">Number of waiting thread descriptions
returned</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="center" valign="top">14</td>
<td align="left" valign="top">BINARY(4) UNSIGNED</td>
<td align="left" valign="top">Offset to waiting thread descriptions</td>
</tr>
<tr>
<td align="center" valign="top">24</td>
<td align="center" valign="top">18</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of waiting thread descriptions</td>
</tr>
<tr>
<td align="center" valign="top">28</td>
<td align="center" valign="top">1C</td>
<td align="left" valign="top">CHAR(4)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">32</td>
<td align="center" valign="top">20</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Condition creator program</td>
</tr>
<tr>
<td align="center" valign="top">40</td>
<td align="center" valign="top">28</td>
<td align="left" valign="top">BINARY(8)</td>
<td align="left" valign="top">Condition key</td>
</tr>
<tr>
<td align="center" valign="top">48</td>
<td align="center" valign="top">30</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Last condition waiter thread identifier</td>
</tr>
<tr>
<td align="center" valign="top">56</td>
<td align="center" valign="top">38</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Last condition waiter thread unique value</td>
</tr>
<tr>
<td align="center" valign="top">64</td>
<td align="center" valign="top">40</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Last condition waiter job name</td>
</tr>
<tr>
<td align="center" valign="top">74</td>
<td align="center" valign="top">4A</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Last condition waiter user name</td>
</tr>
<tr>
<td align="center" valign="top">84</td>
<td align="center" valign="top">54</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Last condition waiter job number</td>
</tr>
<tr>
<td align="center" valign="top">90</td>
<td align="center" valign="top">5A</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">96</td>
<td align="center" valign="top">60</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Last condition setter thread identifier</td>
</tr>
<tr>
<td align="center" valign="top">104</td>
<td align="center" valign="top">68</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Last condition setter thread unique value</td>
</tr>
<tr>
<td align="center" valign="top">112</td>
<td align="center" valign="top">70</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Last condition setter job name</td>
</tr>
<tr>
<td align="center" valign="top">122</td>
<td align="center" valign="top">7A</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Last condition setter user name</td>
</tr>
<tr>
<td align="center" valign="top">132</td>
<td align="center" valign="top">84</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Last condition setter job number</td>
</tr>
<tr>
<td align="center" valign="top">138</td>
<td align="center" valign="top">8A</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">144</td>
<td align="center" valign="top">90</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Reset mode flag</td>
</tr>
<tr>
<td align="center" valign="top">148</td>
<td align="center" valign="top">94</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Is signaled flag</td>
</tr>
<tr>
<td align="center" valign="top">149</td>
<td align="center" valign="top">95</td>
<td align="left" valign="top">CHAR(11)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">160</td>
<td align="center" valign="top">A0</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Description of thread waiting for condition</td>
</tr>
<tr>
<td align="left" valign="top" rowspan="6" colspan="2" width="20%">These fields
repeat for each thread waiting on the specified handle-based condition.</td>
<td align="left" valign="top" width="20%">CHAR(8)</td>
<td align="left" valign="top" width="60%">Waiter thread identifier</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Waiter thread unique value</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Waiter thread job name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Waiter thread user name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Waiter thread job number</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Reserved</td>
</tr>
</table>
<br>
<br>
<h3><a name="STOK0100_Header">STOK0100 Format - Retrieve synchronization tokens
associated with a job or thread</a></h3>
<p>This format is used to retrieve information for synchronization tokens
associated with one or all threads of a job. The following table shows the
receiver variable fields returned with the STOK0100 format. For a detailed
description of each field, see <a href="#Header_8">Receiver Format 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">Number of threads in job</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">Number of token descriptions available</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">Number of token descriptions returned</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="center" valign="top">14</td>
<td align="left" valign="top">BINARY(4) UNSIGNED</td>
<td align="left" valign="top">Offset to token descriptions</td>
</tr>
<tr>
<td align="center" valign="top">24</td>
<td align="center" valign="top">18</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of token descriptions</td>
</tr>
<tr>
<td align="center" valign="top">28</td>
<td align="center" valign="top">1C</td>
<td align="left" valign="top">CHAR(4)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">32</td>
<td align="center" valign="top">20</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Token description</td>
</tr>
<tr>
<td align="left" valign="top" rowspan="14" colspan="2" width="20%">These fields
repeat for each thread associated with a synchronization token.</td>
<td align="left" valign="top" width="20%">CHAR(8)</td>
<td align="left" valign="top" width="60%">Thread identifier associated with
token</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Number of thread descriptions for identified thread</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Description sequence value for the thread
associated with the token</td>
</tr>
<tr>
<td align="left" valign="top">PTR(OPN)</td>
<td align="left" valign="top">Token reference</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Token owner thread identifier</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Token owner thread unique value</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Token owner job name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Token owner user name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Token owner job number</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Token state</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(5)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Number of threads waiting on token</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(12)</td>
<td align="left" valign="top">Reserved</td>
</tr>
</table>
<br>
<br>
<h3><a name="STOK0200_Header">STOK0200 Format - Retrieve threads associated
with a synchronization token</a></h3>
<p>This format is used to retrieve information for waiting threads associated with a
specified synchronization token. The following table shows the receiver
variable fields returned with the STOK0200 format. For a detailed description
of each field, see <a href="#Header_8">Receiver Format 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">Number of threads waiting on token</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">Number of waiting thread descriptions
available</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">Number of waiting thread descriptions
returned</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="center" valign="top">14</td>
<td align="left" valign="top">BINARY(4) UNSIGNED</td>
<td align="left" valign="top">Offset to waiting thread descriptions</td>
</tr>
<tr>
<td align="center" valign="top">24</td>
<td align="center" valign="top">18</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of waiting thread descriptions</td>
</tr>
<tr>
<td align="center" valign="top">28</td>
<td align="center" valign="top">1C</td>
<td align="left" valign="top">CHAR(4)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">32</td>
<td align="center" valign="top">20</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Token creator program</td>
</tr>
<tr>
<td align="center" valign="top">40</td>
<td align="center" valign="top">28</td>
<td align="left" valign="top">BINARY(8)</td>
<td align="left" valign="top">Token unique value</td>
</tr>
<tr>
<td align="center" valign="top">48</td>
<td align="center" valign="top">30</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Token owner thread identifier</td>
</tr>
<tr>
<td align="center" valign="top">56</td>
<td align="center" valign="top">38</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Token owner thread unique value</td>
</tr>
<tr>
<td align="center" valign="top">64</td>
<td align="center" valign="top">40</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Token owner job name</td>
</tr>
<tr>
<td align="center" valign="top">74</td>
<td align="center" valign="top">4A</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Token owner user name</td>
</tr>
<tr>
<td align="center" valign="top">84</td>
<td align="center" valign="top">54</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Token owner job number</td>
</tr>
<tr>
<td align="center" valign="top">90</td>
<td align="center" valign="top">5A</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">96</td>
<td align="center" valign="top">60</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Description of thread waiting for token</td>
</tr>
<tr>
<td align="left" valign="top" rowspan="6" colspan="2" width="20%">These fields
repeat for each thread waiting on the specified synchronization token.</td>
<td align="left" valign="top" width="20%">CHAR(8)</td>
<td align="left" valign="top" width="60%">Waiter thread identifier</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Waiter thread unique value</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Waiter thread job name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Waiter thread user name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Waiter thread job number</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Reserved</td>
</tr>
</table>
<h3>
<img src="delta.gif" alt="Start of change">
<a name="STOK0300_Header">STOK0300 Format - Retrieve threads associated
with a synchronization token</a>
<img src="deltaend.gif" alt="End of change">
</h3>
<p>This format is used to retrieve information for waiting threads associated with a
specified synchronization token. The following table shows the receiver
variable fields returned with the STOK0300 format. For a detailed description
of each field, see <a href="#Header_8">Receiver Format 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">Number of threads waiting on token</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">Number of waiting thread descriptions
available</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">Number of waiting thread descriptions
returned</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="center" valign="top">14</td>
<td align="left" valign="top">BINARY(4) UNSIGNED</td>
<td align="left" valign="top">Offset to waiting thread descriptions</td>
</tr>
<tr>
<td align="center" valign="top">24</td>
<td align="center" valign="top">18</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of waiting thread descriptions</td>
</tr>
<tr>
<td align="center" valign="top">28</td>
<td align="center" valign="top">1C</td>
<td align="left" valign="top">CHAR(4)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">32</td>
<td align="center" valign="top">20</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Token creator program</td>
</tr>
<tr>
<td align="center" valign="top">40</td>
<td align="center" valign="top">28</td>
<td align="left" valign="top">BINARY(8)</td>
<td align="left" valign="top">Token unique value</td>
</tr>
<tr>
<td align="center" valign="top">48</td>
<td align="center" valign="top">30</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Token owner thread identifier</td>
</tr>
<tr>
<td align="center" valign="top">56</td>
<td align="center" valign="top">38</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Token owner thread unique value</td>
</tr>
<tr>
<td align="center" valign="top">64</td>
<td align="center" valign="top">40</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Token owner job name</td>
</tr>
<tr>
<td align="center" valign="top">74</td>
<td align="center" valign="top">4A</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Token owner user name</td>
</tr>
<tr>
<td align="center" valign="top">84</td>
<td align="center" valign="top">54</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Token owner job number</td>
</tr>
<tr>
<td align="center" valign="top">90</td>
<td align="center" valign="top">5A</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">96</td>
<td align="center" valign="top">60</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Last token locker thread identifier</td>
</tr>
<tr>
<td align="center" valign="top">104</td>
<td align="center" valign="top">68</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Last token locker thread unique value</td>
</tr>
<tr>
<td align="center" valign="top">112</td>
<td align="center" valign="top">70</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Last token locker job name</td>
</tr>
<tr>
<td align="center" valign="top">122</td>
<td align="center" valign="top">7A</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Last token locker user name</td>
</tr>
<tr>
<td align="center" valign="top">132</td>
<td align="center" valign="top">84</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Last token locker job number</td>
</tr>
<tr>
<td align="center" valign="top">138</td>
<td align="center" valign="top">8A</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">144</td>
<td align="center" valign="top">90</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Last token unlocker thread identifier</td>
</tr>
<tr>
<td align="center" valign="top">152</td>
<td align="center" valign="top">98</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Last token unlocker thread unique value</td>
</tr>
<tr>
<td align="center" valign="top">160</td>
<td align="center" valign="top">A0</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Last token unlocker job name</td>
</tr>
<tr>
<td align="center" valign="top">170</td>
<td align="center" valign="top">AA</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Last token unlocker user name</td>
</tr>
<tr>
<td align="center" valign="top">180</td>
<td align="center" valign="top">B4</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Last token unlocker job number</td>
</tr>
<tr>
<td align="center" valign="top">186</td>
<td align="center" valign="top">BA</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">192</td>
<td align="center" valign="top">C0</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Description of thread waiting for token</td>
</tr>
<tr>
<td align="left" valign="top" rowspan="6" colspan="2" width="20%">These fields
repeat for each thread waiting on the specified synchronization token.</td>
<td align="left" valign="top" width="20%">CHAR(8)</td>
<td align="left" valign="top" width="60%">Waiter thread identifier</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Waiter thread unique value</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Waiter thread job name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Waiter thread user name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Waiter thread job number</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Reserved</td>
</tr>
</table>
<br>
<br>
<h3><a name="SEMA0100_Header">SEMA0100 Format - Retrieve semaphores associated
with a job, thread, or all semaphores</a></h3>
<p>This format is used to retrieve information for semaphores associated with
one or all threads of a job or all semaphores on a system. The following table shows the receiver variable
fields returned with the SEMA0100 format. For a detailed description of each
field, see <a href="#Header_8">Receiver Format 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">Number of semaphore descriptions available</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">Number of semaphore descriptions returned</td>
</tr>
<tr>
<td align="center" valign="top">16</td>
<td align="center" valign="top">10</td>
<td align="left" valign="top">BINARY(4) UNSIGNED</td>
<td align="left" valign="top">Offset to semaphore descriptions</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">Length of semaphore descriptions</td>
</tr>
<tr>
<td align="center" valign="top">24</td>
<td align="center" valign="top">18</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">32</td>
<td align="center" valign="top">20</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Semaphore associated job name</td>
</tr>
<tr>
<td align="center" valign="top">42</td>
<td align="center" valign="top">2A</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Semaphore associated user name</td>
</tr>
<tr>
<td align="center" valign="top">52</td>
<td align="center" valign="top">34</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Semaphore associated job number</td>
</tr>
<tr>
<td align="center" valign="top">58</td>
<td align="center" valign="top">3A</td>
<td align="left" valign="top">CHAR(2)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">60</td>
<td align="center" valign="top">3C</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Number of threads in job associated with
semaphore</td>
</tr>
<tr>
<td align="center" valign="top">64</td>
<td align="center" valign="top">40</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Semaphore description</td>
</tr>
<tr>
<td align="left" valign="top" rowspan="14" colspan="2" width="20%">These fields
repeat for each thread associated with a semaphore.</td>
<td align="left" valign="top" width="20%">CHAR(8)</td>
<td align="left" valign="top" width="60%">Thread identifier associated with
semaphore</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="left" valign="top">PTR(OPN)</td>
<td align="left" valign="top">Semaphore reference</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(16)</td>
<td align="left" valign="top">Semaphore title</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Semaphore creator program</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(8)</td>
<td align="left" valign="top">Semaphore key</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Number of threads waiting on semaphore</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Semaphore count value</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Semaphore maximum count</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Semaphore type</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Semaphore unlinked status</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(2)</td>
<td align="left" valign="top">Reserved</td>
</tr>
</table>
<br>
<br>
<h3><a name="SEMA0200_Header">SEMA0200 Format - Retrieve threads associated
with a semaphore</a></h3>
<p>This format is used to retrieve information for waiting threads associated with a
specified semaphore. The following table shows the receiver variable fields
returned with the SEMA0200 format. For a detailed description of each field,
see <a href="#Header_8">Receiver Format 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">Number of threads waiting on semaphore</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">Number of waiting thread descriptions
available</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">Number of waiting thread descriptions
returned</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="center" valign="top">14</td>
<td align="left" valign="top">BINARY(4) UNSIGNED</td>
<td align="left" valign="top">Offset to waiting thread descriptions</td>
</tr>
<tr>
<td align="center" valign="top">24</td>
<td align="center" valign="top">18</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of waiting thread descriptions</td>
</tr>
<tr>
<td align="center" valign="top">28</td>
<td align="center" valign="top">1C</td>
<td align="left" valign="top">CHAR(4)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">32</td>
<td align="center" valign="top">20</td>
<td align="left" valign="top">CHAR(16)</td>
<td align="left" valign="top">Semaphore title</td>
</tr>
<tr>
<td align="center" valign="top">48</td>
<td align="center" valign="top">30</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Semaphore creator program</td>
</tr>
<tr>
<td align="center" valign="top">56</td>
<td align="center" valign="top">38</td>
<td align="left" valign="top">BINARY(8)</td>
<td align="left" valign="top">Semaphore key</td>
</tr>
<tr>
<td align="center" valign="top">64</td>
<td align="center" valign="top">40</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Semaphore count value</td>
</tr>
<tr>
<td align="center" valign="top">68</td>
<td align="center" valign="top">44</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Semaphore maximum count</td>
</tr>
<tr>
<td align="center" valign="top">72</td>
<td align="center" valign="top">48</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Semaphore type</td>
</tr>
<tr>
<td align="center" valign="top">73</td>
<td align="center" valign="top">49</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Semaphore unlinked status</td>
</tr>
<tr>
<td align="center" valign="top">74</td>
<td align="center" valign="top">4A</td>
<td align="left" valign="top">CHAR(2)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">76</td>
<td align="center" valign="top">4C</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Last semaphore post operation thread identifier</td>
</tr>
<tr>
<td align="center" valign="top">84</td>
<td align="center" valign="top">54</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Last semaphore post operation thread unique value</td>
</tr>
<tr>
<td align="center" valign="top">92</td>
<td align="center" valign="top">5C</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Last semaphore post operation job name</td>
</tr>
<tr>
<td align="center" valign="top">102</td>
<td align="center" valign="top">66</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Last semaphore post operation user name</td>
</tr>
<tr>
<td align="center" valign="top">112</td>
<td align="center" valign="top">70</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Last semaphore post operation job number</td>
</tr>
<tr>
<td align="center" valign="top">118</td>
<td align="center" valign="top">76</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Last semaphore wait operation thread identifier</td>
</tr>
<tr>
<td align="center" valign="top">126</td>
<td align="center" valign="top">7E</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Last semaphore wait operation thread unique value</td>
</tr>
<tr>
<td align="center" valign="top">134</td>
<td align="center" valign="top">86</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Last semaphore wait operation job name</td>
</tr>
<tr>
<td align="center" valign="top">144</td>
<td align="center" valign="top">90</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Last semaphore wait operation user name</td>
</tr>
<tr>
<td align="center" valign="top">154</td>
<td align="center" valign="top">9A</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Last semaphore wait operation job number</td>
</tr>
<tr>
<td align="center" valign="top">160</td>
<td align="center" valign="top">A0</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Description of thread waiting for semaphore</td>
</tr>
<tr>
<td align="left" valign="top" rowspan="6" colspan="2" width="20%">These fields
repeat for each thread waiting on the specified semaphore.</td>
<td align="left" valign="top" width="20%">CHAR(8)</td>
<td align="left" valign="top" width="60%">Waiter thread identifier</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Waiter thread unique value</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Waiter thread job name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Waiter thread user name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Waiter thread job number</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Reserved</td>
</tr>
</table>
<br>
<br>
<h3>
<img src="delta.gif" alt="Start of change">
<a name="SEMA0300_Header">SEMA0300 Format - Retrieve threads associated
with a semaphore</a>
<img src="deltaend.gif" alt="End of change">
</h3>
<p>This format is used to retrieve information for waiting threads associated with a
specified semaphore. The following table shows the receiver variable fields
returned with the SEMA0300 format. For a detailed description of each field,
see <a href="#Header_8">Receiver Format 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">Number of threads waiting on semaphore</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">Number of waiting thread descriptions
available</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">Number of waiting thread descriptions
returned</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="center" valign="top">14</td>
<td align="left" valign="top">BINARY(4) UNSIGNED</td>
<td align="left" valign="top">Offset to waiting thread descriptions</td>
</tr>
<tr>
<td align="center" valign="top">24</td>
<td align="center" valign="top">18</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of waiting thread descriptions</td>
</tr>
<tr>
<td align="center" valign="top">28</td>
<td align="center" valign="top">1C</td>
<td align="left" valign="top">CHAR(4)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">32</td>
<td align="center" valign="top">20</td>
<td align="left" valign="top">CHAR(16)</td>
<td align="left" valign="top">Semaphore title</td>
</tr>
<tr>
<td align="center" valign="top">48</td>
<td align="center" valign="top">30</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Semaphore creator program</td>
</tr>
<tr>
<td align="center" valign="top">56</td>
<td align="center" valign="top">38</td>
<td align="left" valign="top">BINARY(8)</td>
<td align="left" valign="top">Semaphore key</td>
</tr>
<tr>
<td align="center" valign="top">64</td>
<td align="center" valign="top">40</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Semaphore count value</td>
</tr>
<tr>
<td align="center" valign="top">68</td>
<td align="center" valign="top">44</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Semaphore maximum count</td>
</tr>
<tr>
<td align="center" valign="top">72</td>
<td align="center" valign="top">48</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Semaphore type</td>
</tr>
<tr>
<td align="center" valign="top">73</td>
<td align="center" valign="top">49</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Semaphore unlinked status</td>
</tr>
<tr>
<td align="center" valign="top">74</td>
<td align="center" valign="top">4A</td>
<td align="left" valign="top">CHAR(2)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">76</td>
<td align="center" valign="top">4C</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Last semaphore post operation thread identifier</td>
</tr>
<tr>
<td align="center" valign="top">84</td>
<td align="center" valign="top">54</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Last semaphore post operation thread unique value</td>
</tr>
<tr>
<td align="center" valign="top">92</td>
<td align="center" valign="top">5C</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Last semaphore post operation job name</td>
</tr>
<tr>
<td align="center" valign="top">102</td>
<td align="center" valign="top">66</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Last semaphore post operation user name</td>
</tr>
<tr>
<td align="center" valign="top">112</td>
<td align="center" valign="top">70</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Last semaphore post operation job number</td>
</tr>
<tr>
<td align="center" valign="top">118</td>
<td align="center" valign="top">76</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Last semaphore wait operation thread identifier</td>
</tr>
<tr>
<td align="center" valign="top">126</td>
<td align="center" valign="top">7E</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Last semaphore wait operation thread unique value</td>
</tr>
<tr>
<td align="center" valign="top">134</td>
<td align="center" valign="top">86</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Last semaphore wait operation job name</td>
</tr>
<tr>
<td align="center" valign="top">144</td>
<td align="center" valign="top">90</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Last semaphore wait operation user name</td>
</tr>
<tr>
<td align="center" valign="top">154</td>
<td align="center" valign="top">9A</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Last semaphore wait operation job number</td>
</tr>
<tr>
<td align="center" valign="top">160</td>
<td align="center" valign="top">A0</td>
<td align="left" valign="top">PTR(SPC)</td>
<td align="left" valign="top">Original semaphore</td>
</tr>
<tr>
<td align="center" valign="top">176</td>
<td align="center" valign="top">B0</td>
<td align="left" valign="top">CHAR(16)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">192</td>
<td align="center" valign="top">C0</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Description of thread waiting for semaphore</td>
</tr>
<tr>
<td align="left" valign="top" rowspan="6" colspan="2" width="20%">These fields
repeat for each thread waiting on the specified semaphore.</td>
<td align="left" valign="top" width="20%">CHAR(8)</td>
<td align="left" valign="top" width="60%">Waiter thread identifier</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Waiter thread unique value</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Waiter thread job name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Waiter thread user name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Waiter thread job number</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Reserved</td>
</tr>
</table>
<br>
<br>
<h3><a name="Header_8">Receiver Format Field Descriptions</a></h3>
<p><strong>Bytes available.</strong> The number (in bytes) of all data that can
be returned. All available data is returned if enough space in the receiver
variable is provided.</p>
<p><strong>Bytes returned.</strong> The number (in bytes) of data returned in
the receiver variable. Only complete descriptions are returned.</p>
<p><strong>Condition creator program.</strong> The first 8 characters of the
name of the program module that created the condition. This field is for debug
purposes only and should not be used for building applications based on its
contents.</p>
<p><strong>Condition key.</strong> A unique system-wide value that is assigned
to a handle-based condition for sharing between jobs. If a condition was
created without a key, this field contains binary 0.</p>
<p><strong>Condition reference.</strong> A replica of a handle-based condition.
Additional information for the condition replica returned in this field can be
retrieved using this API and the HCND0200 and HCND0300 formats.</p>
<p><strong>Description of thread waiting for condition.</strong> Structure that
contains a description of a thread waiting on the specified condition. This
structure is repeated as needed to describe all threads waiting on the
specified condition. Only complete descriptions are returned.</p>
<p><strong>Description of thread waiting for mutex.</strong> Structure that
contains a description of a thread waiting on the specified mutex. This
structure is repeated as needed to describe all threads waiting on the
specified mutex. Only complete descriptions are returned.</p>
<p><strong>Description of thread waiting for semaphore.</strong> Structure that
contains a description of a thread waiting on the specified semaphore. This
structure is repeated as needed to describe all threads waiting on the
specified semaphore. Only complete descriptions are returned.</p>
<p><strong>Description of thread waiting for token.</strong> Structure that
contains a description of a thread waiting on the specified token. This
structure is repeated as needed to describe all threads waiting on the
specified token. Only complete descriptions are returned.</p>
<p><strong>
Description sequence value for the thread associated with the mutex.
</strong>
The sequence number of a description in the range of the total
number of descriptions for a thread identifier. This value can be used in the
form "M of N descriptions", in which M is the description sequence value for
the thread and N is the total number of descriptions for the thread.</p>
<p><strong>
Description sequence value for the thread associated with the token.
</strong>
The sequence number of a description in the range of the total
number of descriptions for a thread identifier. This value can be used in the
form "M of N descriptions", in which M is the description sequence value for
the thread and N is the total number of descriptions for the thread.</p>
<p><strong>Handle-based condition description.</strong> Contains fields that
describe a handle-based condition associated with the specified job or thread. This structure is repeated as needed to include all available handle-based
condition descriptions. Only complete descriptions are returned.</p>
<p><strong>Handle-based mutex description.</strong> Contains fields that
describe a handle-based mutex associated with the specified job or thread. This
structure is repeated as needed to include all available handle-based mutex
descriptions. Only complete descriptions are returned.</p>
<p><strong>Is signaled flag.</strong> Indicates if the condition is in the signaled or
nonsignaled state.</p>
<table cellpadding="5">
<tr>
<td align="left" valign="top"><em>'0'</em></td>
<td align="left" valign="top">Nonsignaled</td>
</tr>
<tr>
<td align="left" valign="top"><em>'1'</em></td>
<td align="left" valign="top">Signaled</td>
</tr>
</table>
<p><strong>Keep valid flag.</strong> Indicates if the mutex was created with
the keep valid option. Possible values follow:</p>
<table cellpadding="5">
<tr>
<td align="left" valign="top"><em>'0'</em></td>
<td align="left" valign="top">Mutex will be destroyed when its owning thread is
terminated</td>
</tr>
<tr>
<td align="left" valign="top"><em>'1'</em></td>
<td align="left" valign="top">Mutex will remain valid when its owning thread is
terminated. The mutex will be marked as being in a pending state until the first
thread performs a lock operation on the mutex. The first thread will successfully lock and
revalidate the pending mutex.</td>
</tr>
</table>
<p><strong>Last condition setter job name.</strong> Job name of the job containing
the last thread that performed a set or pulse operation on the condition and caused the condition to become signaled.
If this field is all blanks, no job has ever performed a set operation on the
condition, or the last setter job has ended and the API could not collect this
information.</p>
<p><strong>Last condition setter job number.</strong> Job number of the job containing
the last thread that performed a set or pulse operation on the condition and caused the condition to become signaled.
If this field is all blanks, no job has ever performed a set operation on the
condition, or the last setter job ended and the API could not collect this
information.</p>
<p><strong>Last condition setter thread identifier.</strong> Job-specific thread
identifier for the thread that performed a set or pulse operation on the condition and caused the condition to
become signaled. If this field is binary 0, no thread has ever performed a set
operation on the condition, or the last setter thread has ended and the API could
not collect this information. </p>
<p><strong>Last condition setter thread unique value.</strong> A system-wide unique
value that identifies the specific thread that last performed a set or pulse operation on the condition and caused the
condition to become signaled. If this field is binary 0, no thread has ever
performed a set operation on the condition. This field cannot be used as input on any
other API but may be useful for debug purposes. </p>
<p><strong>Last condition setter user name.</strong> User name of the job containing
the last thread that performed a set or pulse operation on the condition and caused the condition to become signaled.
If this field is all blanks, no job has ever performed a set operation on the
condition, or the last setter job ended and the API could not collect this
information.</p>
<p><strong>Last condition waiter job name.</strong> Job name of the job containing
the last thread that had to wait for another thread to set the condition to a
signaled state before becoming unblocked. If
this field is all blanks, no job has ever waited on the condition, or the last waiter job has ended and the API could not collect this
information.</p>
<p><strong>Last condition waiter job number.</strong> Job number of the job containing
the last thread that had to wait for another thread to set the condition to a
signaled state before becoming unblocked. If this field
is all blanks, no job has ever waited on the condition, or the last waiter job has ended and the API could not collect this
information.</p>
<p><strong>Last condition waiter thread identifier.</strong> Job-specific thread
identifier for the last thread that had to wait for another
thread to set the condition to a signaled state before becoming unblocked. If this field is binary 0, no thread has ever waited
on the condition, or the last waiter thread has ended and the API
could not collect this information. </p>
<p><strong>Last condition waiter thread unique value.</strong> A system-wide unique
value that identifies the specific thread that last had to wait for another thread to
set the condition to a signaled state before becoming unblocked. If this field is binary 0, no thread has ever waited on
the condition. This field cannot be used as input on any other
API but may be useful for debug purposes. </p>
<p><strong>Last condition waiter user name.</strong> User name of the job containing
the last thread that had to wait for another thread to set the condition to a
signaled state before becoming unblocked. If this
field is all blanks, no job has ever waited on the condition, or
the last waiter job has ended and the API could not collect this information.</p>
<p><strong>Last mutex locker job name.</strong> Job name of the job
containing the thread that last locked the mutex after waiting for another
thread to unlock the mutex. A thread may perform a lock operation and
immediately achieve the lock without waiting if there is no thread currently
holding the lock. As a result, this field may contain a job name for a job
other than the one that last performed a lock operation on the mutex. If this
field is all blanks, no job has ever locked the mutex after waiting, or the last
locker job has ended and the API could not collect this information. </p>
<p><strong>Last mutex locker job number.</strong> Job number of the job
containing the thread that last locked the mutex after waiting for another
thread to unlock the mutex. A thread may perform a lock operation and
immediately achieve the lock without waiting if there is no thread currently
holding the lock. As a result, this field may contain a job number for a job
other than the one that last performed a lock operation on the mutex. If this
field is all blanks, no job has ever locked the mutex after waiting, or the last
locker job has ended and the API could not collect this information. </p>
<p><strong>Last mutex locker thread identifier.</strong> Job-specific thread
identifier for the thread within the job that last
locked the mutex after waiting for another thread to unlock the mutex. A thread
may perform a lock operation and immediately achieve the lock without waiting if
there is no thread currently holding the lock. As a result, this field may
contain a thread identifier for a thread other than the one that last performed a
lock operation on the mutex. If this field is binary 0, no thread has ever locked
the mutex after waiting for another thread to unlock the mutex, or the last locker
thread has ended and the API could not collect this information. </p>
<p><strong>Last mutex locker thread unique value.</strong> A system-wide unique
value that identifies the specific thread that last locked the mutex after
waiting for another thread to unlock the mutex. A thread may perform a lock operation
and immediately achieve the lock without waiting if there is no thread currently
holding the lock. As a result, this field may contain a unique value for a
thread other than the one that last performed a lock operation on the mutex. If this
field is binary 0, no thread has ever locked the mutex after waiting for another
thread to unlock the mutex. This field cannot be used as input on any other API but
may be useful for debug purposes. </p>
<p><strong>Last mutex locker user name.</strong> User name of the job
containing the thread that last locked the mutex after waiting for another
thread to unlock the mutex. A thread may perform a lock operation and
immediately achieve the lock without waiting if there is no thread currently
holding the lock. As a result, this field may contain a user name for a job other
than the one that last performed a lock operation on the mutex. If this field is
all blanks, no job has ever locked the mutex after waiting, or the last
locker job has ended and the API could not collect this information.</p>
<p><strong>Last mutex unlocker job name.</strong> Job name of the job
containing the thread that last unlocked the mutex while waking another
thread that was waiting. A thread may perform an unlock operation and
immediately unlock the mutex without waking another thread if there are no
other threads waiting. As a result, this field may contain a job name for
a job other than the one that last performed an unlock operation on the
mutex. If this field is all blanks, no job has ever unlocked the mutex while
waking another thread that was waiting, or the last unlocker job has ended
and the API could not collect this information. </p>
<p><strong>Last mutex unlocker job number.</strong> Job number of the job
containing the thread that last unlocked the mutex while waking another
thread that was waiting. A thread may perform an unlock operation and immediately
unlock the mutex without waking another thread if there are no other threads
waiting. As a result, this field may contain a job number for a job other than
the one that last performed an unlock operation on the mutex. If this field is
all blanks, no job has ever unlocked the mutex while waking another thread that
was waiting, or the last unlocker job has ended and the API could not collect
this information.</p>
<p><strong>Last mutex unlocker thread identifier.</strong> Job-specific thread
identifier for the thread within the job that last
unlocked the mutex while waking another thread that was waiting. A thread may perform
an unlock operation and immediately unlock the mutex without waking another thread
if there are no other threads waiting. As a result, this field may contain a thread
identifier for a thread other than the one that last performed an unlock operation
on the mutex. If this field is binary 0, no thread has ever unlocked the mutex while
waking another thread that was waiting, or the last unlocker thread has ended and
the API could not collect this information.</p>
<p><strong>Last mutex unlocker thread unique value.</strong> A system-wide unique
value that identifies the specific thread that last unlocked the mutex while
waking another thread that was waiting. A thread may perform an unlock operation and
immediately unlock the mutex without waking another thread if there are no other
threads waiting. As a result, this field may contain a unique value for a
thread other than the one that last performed an unlock operation on the mutex. If
this field is binary 0, no thread has ever unlocked the mutex while waking another
thread that was waiting. This field cannot be used as input on any other API but
may be useful for debug purposes. </p>
<p><strong>Last mutex unlocker user name.</strong> User name of the job
containing the thread that last unlocked the mutex while waking another
thread that was waiting. A thread may perform an unlock operation and immediately
unlock the mutex without waking another thread if there are no other threads
waiting. As a result, this field may contain a user name for a job other than
the one that last performed an unlock operation on the mutex. If this field is
all blanks, no job has ever unlocked the mutex while waking another thread that
was waiting, or the last unlocker job has ended and the API could not collect
this information</p>
<p><strong>Last semaphore post operation job name.</strong> The job name for the job
containing the thread that last incremented the semaphore count. If this field is all blanks, the semaphore
has not been successfully posted, or the thread that performed the last post operation has ended
and the API could not collect this information.</p>
<p><strong>Last semaphore post operation job number.</strong> The job number for the job
containing the thread that last incremented the semaphore count. If this field is all blanks, the semaphore
has not been successfully posted, or the thread that performed the last post operation has ended
and the API could not collect this information.</p>
<p><strong>Last semaphore post operation thread identifier.</strong> A job-specific
thread identifier for the thread that last incremented the semaphore count.
If this field is binary 0, the
semaphore has not been successfully posted, or the thread that performed the last post operation has ended
and the API could not collect this information.</p>
<p><strong>Last semaphore post operation thread unique value.</strong> A system-wide
unique value that identifies the specific thread that last incremented the
semaphore count. If this field is
binary 0, the semaphore has not been successfully posted. This field cannot be
used as input on any other API but may be useful for debug purposes.</p>
<p><strong>Last semaphore post operation user name.</strong> The user name for the job
containing the thread that last incremented the semaphore count. If this field is all blanks, the semaphore
has not been successfully posted, or the thread that performed the last post operation has ended
and the API could not collect this information.</p>
<p><strong>Last semaphore wait operation job name.</strong> The job name for the job
containing the thread that last decremented the semaphore count. If this field is all blanks, the semaphore has not been successfully
decremented, or the thread
that performed the last wait operation has ended and the API could not collect this
information.</p>
<p><strong>Last semaphore wait operation job number.</strong> The job number for the job
containing the thread that last decremented the semaphore count. If this field is all blanks, the semaphore has not been successfully
decremented, or the thread
that performed the last wait operation has ended and the API could not collect this
information.</p>
<p><strong>Last semaphore wait operation thread identifier.</strong> A job-specific
thread identifier for the thread within the job that last
decremented the semaphore count. If this field is binary 0, the semaphore has not been successfully
decremented, or the thread
that performed the last wait operation has ended and the API could not collect this
information.</p>
<p><strong>Last semaphore wait operation thread unique value.</strong> A system-wide
unique value that identifies the specific thread that last decremented the
semaphore count. If this field is binary 0, the semaphore has not been successfully
decremented. This field
cannot be used as input on any other API but may be useful for debug purposes. </p>
<p><strong>Last semaphore wait operation user name.</strong> The user name for the job
containing the thread that last decremented the semaphore count. If this field is all blanks, the semaphore has not been successfully
decremented or the thread
that performed the last wait operation has ended and the API could not collect this
information.</p>
<p><strong>Last token locker job name.</strong> Job name of the job
containing the thread that last locked the token after waiting for another
thread to unlock the token. A thread may perform a lock operation and
immediately achieve the lock without waiting if there is no thread currently
holding the lock. As a result, this field may contain a job name for a job
other than the one that last performed a lock operation on the token. If this
field is all blanks, no job has ever locked the token after waiting, or the last
locker job has ended and the API could not collect this information. </p>
<p><strong>Last token locker job number.</strong> Job number of the job
containing the thread that last locked the token after waiting for another
thread to unlock the token. A thread may perform a lock operation and immediately
achieve the lock without waiting if there is no thread currently holding
the lock. As a result, this field may contain a job number for a job other
than the one that last performed a lock operation on the token. If this field is
all blanks, no job has ever locked the token after waiting, or the last locker
job has ended and the API could not collect this information. </p>
<p><strong>Last token locker thread identifier.</strong> Job-specific thread
identifier for the thread within the job that last
locked the token after waiting for another thread to unlock the token. A thread may
perform a lock operation and immediately achieve the lock without waiting if there
is no thread currently holding the lock. As a result, this field may contain a
thread identifier for a thread other than the one that last performed a lock
operation on the token. If this field is binary 0, no thread has ever locked the
token after waiting for another thread to unlock the token, or the last locker
thread has ended and the API could not collect this information. </p>
<p><strong>Last token locker thread unique value.</strong> A system-wide unique
value that identifies the specific thread that last locked the token after
waiting for another thread to unlock the token. A thread may perform a lock operation
and immediately achieve the lock without waiting if there is no thread currently
holding the lock. As a result, this field may contain a unique value for
a thread other than the one that last performed a lock operation on the token. If
this field is binary 0, no thread has ever locked the token after waiting for another
thread to unlock the token. This field cannot be used as input on any other API
but may be useful for debug purposes. </p>
<p><strong>Last token locker user name.</strong> User name of the job
containing the thread that last locked the token after waiting for another
thread to unlock the token. A thread may perform a lock operation and immediately
achieve the lock without waiting if there is no thread currently holding
the lock. As a result, this field may contain a user name for a job other
than the one that last performed a lock operation on the token. If this field is
all blanks, no job has ever locked the token after waiting, or the last locker job
has ended and the API could not collect this information. </p>
<p><strong>Last token unlocker job name.</strong> Job name of the job
containing the thread that last unlocked the token while waking another
thread that was waiting. A thread may perform an unlock operation and immediately
unlock the token without waking another thread if there are no other threads
waiting. As a result, this field may contain a job name for a job other than
the one that last performed an unlock operation on the token. If this field is all
blanks, no job has ever unlocked the token while waking another thread that was
waiting, or the last unlocker job has ended and the API could not collect this
information. </p>
<p><strong>Last token unlocker job number.</strong> Job number of the job
containing the thread that last unlocked the token while waking another
thread that was waiting. A thread may perform a lock operation and immediately
unlock the token without waking another thread if there are no other threads
waiting. As a result, this field may contain a job number for a job other than
the one that last performed an unlock operation on the token. If this field is all
blanks, no job has ever unlocked the token while waking another thread that was
waiting, or the last unlocker job has ended and the API could not collect this
information. </p>
<p><strong>Last token unlocker thread identifier.</strong> Job-specific thread
identifier for the thread within the job that last
unlocked the token while waking another thread that was waiting. A thread may
perform a lock operation and immediately unlock the token without waking another
thread if there are no other threads waiting. As a result, this field may contain
a thread identifier for a thread other than the one that last performed an unlock
operation on the token. If this field is binary 0, no thread has ever unlocked the
token while waking another thread that was waiting, or the last unlocker thread
has ended and the API could not collect this information. </p>
<p><strong>Last token unlocker thread unique value.</strong> A system-wide unique
value that identifies the specific thread that last unlocked the token while
waking another thread that was waiting. A thread may perform a lock operation and
immediately unlock the token without waking another thread if there are no other
threads waiting. As a result, this field may contain a unique value for a
thread other than the one that last performed an unlock operation on the token. If
this field is binary 0, no thread has ever unlocked the token while waking another
thread that was waiting. This field cannot be used as input on any other API but
may be useful for debug purposes. </p>
<p><strong>Last token unlocker user name.</strong> User name of the job
containing the thread that last unlocked the token while waking another
thread that was waiting. A thread may perform an unlock operation and immediately
unlock the token without waking another thread if there are no other threads
waiting. As a result, this field may contain a user name for a job other than
the one that last performed an unlock operation on the token. If this field is
all blanks, no job has ever unlocked the token while waking another thread that
was waiting, or the last unlocker job has ended and the API could not collect
this information. </p>
<p><strong>Length of condition descriptions.</strong> Size (in bytes) of one
condition description returned by this call. Only complete descriptions are
returned.</p>
<p><strong>Length of mutex descriptions.</strong> Size (in bytes) of one mutex
description returned by this call. Only complete descriptions are returned.
</p>
<p><strong>Length of semaphore descriptions.</strong> Size (in bytes) of one
semaphore description returned by this call. Only complete descriptions are
returned.</p>
<p><strong>Length of token descriptions.</strong> Size (in bytes) of one
synchronization token description returned by this call. Only complete
descriptions are returned.</p>
<p><strong>Length of waiting thread descriptions.</strong> Size (in bytes) of one
waiting thread description returned by this call. Only complete descriptions
are returned.</p>
<p><strong>Lock count.</strong> Indicates the current count for the number of
times the mutex has been locked. When the mutex is created as a recursive mutex,
this field may contain a value greater than one.</p>
<p><strong>Mutex creator program.</strong> The first 8 characters of the name
of the program module that created the mutex. This field is for debug purposes
only and should not be used for building applications based on its
contents.</p>
<p><strong>Mutex key.</strong> A unique system-wide value that is assigned
to a handle-based mutex for sharing between jobs. If a handle-based mutex was
created without a key, this field contains binary 0.</p>
<p><strong>Mutex owner job name.</strong> Job name associated with a job that contains the thread
that holds the lock on a pointer-based or handle-based mutex. If the mutex owner job name is
blanks, the mutex is not locked or the thread that holds the lock on the mutex
has ended.</p>
<p><strong>Mutex owner job number.</strong> Job number associated with a job that contains the thread
that holds the lock on a pointer-based or handle-based mutex. If the mutex owner job number is
blanks, the mutex is not locked or the thread that holds the lock on the mutex
has ended.</p>
<p><strong>Mutex owner thread identifier.</strong> Job-specific thread
identifier for a thread that holds the lock on a pointer-based or handle-based
mutex. If the mutex owner thread identifier field contains binary 0,
the mutex is not locked or the thread that holds the lock on the mutex has
ended.</p>
<p><strong>Mutex owner thread unique value.</strong> A system-wide unique value
identifying a thread owning a pointer-based or handle-based mutex. If the mutex owner thread unique value field is binary 0, the mutex is not locked. This field
should be used for debug purposes only.</p>
<p><strong>Mutex owner user name.</strong> User name associated with a job that contains the
thread that holds the lock on a pointer-based or handle-based mutex. If the mutex owner user
name is blanks, the mutex is not locked or the thread that holds the lock on
the mutex has ended.</p>
<p><strong>Mutex name.</strong> The field containing the mutex name may have
the following formats:</p>
<ol type="1">
<li>16 characters, left-justified, and padded to the right with blanks.</li>
<li>"UNNAMED_" + first 8 characters of the program that created the mutex (if
the mutex is created without a name)</li>
</ol>
<p><strong>Mutex reference.</strong> A mutex address or a replica of a mutex.
Additional information for the mutex reference returned in this field can be
retrieved using this API and the PMTX0200 and PMTX0300 formats for pointer-based mutexes or
the HMTX0200 and HMTX0300 formats for handle-based mutexes.</p>
<p><strong>Mutex state.</strong> Indicates mutex status. Possible values
follow:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>'0'</em></td>
<td align="left" valign="top">Locked by thread.</td>
</tr>
<tr>
<td align="left" valign="top"><em>'1'</em></td>
<td align="left" valign="top">Thread is waiting for the mutex.</td>
</tr>
</table>
<p><strong>Number of condition descriptions available.</strong> Total number of
descriptions available to describe all conditions associated with one or more
threads.</p>
<p><strong>Number of condition descriptions returned.</strong> Number of
condition descriptions returned by this call.</p>
<p><strong>Number of mutex descriptions available.</strong> Total number of
descriptions available to describe all pointer-based or handle-based mutexes
associated with one or more threads.</p>
<p><strong>Number of mutex descriptions returned.</strong> Number of
pointer-based or handle-based mutex descriptions returned by this call.</p>
<p><strong>Number of semaphore descriptions available.</strong> Total number of
descriptions available to describe all semaphores of the specified type for the
specified job or thread or for the entire system.</p>
<p><strong>Number of semaphore descriptions returned.</strong> Number of
semaphore descriptions returned by this call.</p>
<p><strong>Number of thread descriptions for identified thread.</strong>
Total number of descriptions available for the identified thread.</p>
<p><strong>Number of threads in job.</strong> Total number of active threads in
the specified job at the time of the call. This number is not applicable when
information is retrieved for a single thread and contains binary 0 in
this case.</p>
<p><strong>Number of threads waiting on condition.</strong> The number of
threads that are currently waiting for the condition to be set.</p>
<p><strong>Number of threads waiting on mutex.</strong> The number of threads
currently waiting for the mutex to become unlocked.</p>
<p><strong>Number of threads waiting on semaphore.</strong> The number of
threads that are currently waiting for the semaphore to be posted.</p>
<p><strong>Number of threads waiting on token.</strong> The number of threads
that are currently waiting for the token to be unlocked.</p>
<p><strong>Number of token descriptions available.</strong> Total number of
descriptions available to describe all synchronization tokens associated with
one or more threads.</p>
<p><strong>Number of token descriptions returned.</strong> Number of
synchronization token descriptions returned by this call. Only complete
descriptions are returned.</p>
<p><strong>Number of waiting thread descriptions available.</strong> Number of
descriptions available to describe all threads waiting on the associated
synchronization object.</p>
<p><strong>Number of waiting thread descriptions returned.</strong> Number of
waiting thread descriptions returned by this call. Only complete descriptions
are returned.</p>
<p><strong>Offset to condition descriptions.</strong> The length (in bytes)
from the start of the structure to the location of the condition descriptions.
If the receiver does not contain enough space for at least one description,
this field contains binary 0.
</p>
<p><strong>Offset to mutex descriptions.</strong> The length (in bytes) from the
start of the structure to the location of the mutex descriptions.
If the receiver does not contain enough space for at least one description,
this field contains binary 0.
</p>
<p><strong>Offset to semaphore descriptions.</strong> The length (in bytes)
from the start of the structure to the location of the semaphore descriptions.
If the receiver does not contain enough space for at least one description,
this field contains binary 0.
</p>
<p><strong>Offset to token descriptions.</strong> The length (in bytes) from
the start of the structure to the location of the token descriptions.
If the receiver does not contain enough space for at least one description,
this field contains binary 0.
</p>
<p><strong>Offset to waiting thread descriptions.</strong> The length (in
bytes) from the start of the structure to the location of the waiting thread
descriptions.
If the receiver does not contain enough space for at least one description,
this field contains binary 0.
</p>
<p><strong>Original mutex.</strong> A space pointer to a mutex. If this API
returns information for a mutex that is a copy of another mutex, the original mutex
is the address of the mutex from which the copy was made. Copies of mutex
copies are permitted; however, this field always points to the original mutex from
which the first copy was made.</p>
<p><strong>Original semaphore.</strong> A space pointer to a semaphore. If
this API returns information for a semaphore that is a copy of another semaphore,
the original semaphore is the address of the semaphore from which the copy
was made. Copies of semaphore copies are permitted; however, this field always points
to the original semaphore from which the first copy was made.</p>
<p><strong>Pending state flag.</strong> Indicates if the mutex is currently in
a state where it must be revived because the thread holding the lock on the mutex
terminated. This field is only valid when the keep valid flag is set to mutex
will remain valid when its owning thread is terminated. Possible values follow:</p>
<table cellpadding="5">
<tr>
<td align="left" valign="top"><em>'0'</em></td>
<td align="left" valign="top">Holding thread has not terminated.</td>
</tr>
<tr>
<td align="left" valign="top"><em>'1'</em></td>
<td align="left" valign="top">Holding thread has terminated. This mutex should be
revalidated using the lock operation.</td>
</tr>
</table>
<p><strong>Pointer-based mutex description. </strong>Contains fields that
describe a pointer-based mutex associated with a thread. This structure is
repeated as needed to include all available pointer-based mutex
descriptions. Only complete descriptions are returned.</p>
<p><strong>Recursive flag.</strong> Indicates if the mutex was created to be
a recursive mutex. Possible values follow:</p>
<table cellpadding="5">
<tr>
<td align="left" valign="top"><em>'0'</em></td>
<td align="left" valign="top">Recursive attempts to lock this mutex will not
be permitted</td>
</tr>
<tr>
<td align="left" valign="top"><em>'1'</em></td>
<td align="left" valign="top">Recursive attempts to lock this mutex will be
permitted by the same thread that has already locked the mutex. </td>
</tr>
</table>
<p><strong>Reserved.</strong> An unused field. This field contains binary 0.</p>
<p><strong>Reset mode flag.</strong> Indicates the reset mode this condition was
created with. If the condition is marked for cleanup, reset mode flag is set to
invalid.</p>
<table cellpadding="5">
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">Invalid</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">Auto-reset</td>
</tr>
<tr>
<td align="left" valign="top"><em>2</em></td>
<td align="left" valign="top">Manual-reset</td>
</tr>
</table>
<p><strong>Semaphore associated job name.</strong> Job name associated with the
identified semaphore. This field contains blanks when all semaphores
are retrieved on a system.</p>
<p><strong>Semaphore associated job number.</strong> Job number associated with
the identified semaphore. This field contains blanks when all semaphores
are retrieved on a system.</p>
<p><strong>Semaphore associated user name.</strong> User name associated with
the identified semaphore. This field contains blanks when all semaphores
are retrieved on a system.</p>
<p><strong>Semaphore count value.</strong> The current count value for the
semaphore.</p>
<p><strong>Semaphore creator program.</strong> The first 8 characters of the
name of the program module that created the semaphore. This field is for debug
purposes only and should not be used for building applications based on its
contents.</p>
<p><strong>Semaphore description.</strong> Contains fields that describe a
semaphore associated with a thread. This structure is
repeated as needed to include all available semaphore descriptions.
Only complete descriptions are returned.</p>
<p><strong>Semaphore key.</strong> A system-wide unique value that is assigned
to name-based semaphores for sharing between jobs. The field is not applicable
to pointer-based semaphores and is set to binary 0 in this case.</p>
<p><strong>Semaphore maximum count.</strong> The maximum count for the
semaphore specified at creation.</p>
<p><strong>Semaphore reference.</strong> A replica of a semaphore. Additional
information for the semaphore replica returned in this field can be retrieved
using this API and the SEMA0200 and SEMA0300 formats.</p>
<p><strong>Semaphore title.</strong> Semaphore description text specified
during semaphore creation.</p>
<p><strong>Semaphore type.</strong> Indicates the type of semaphore. Possible
values follow:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>'0'</em></td>
<td align="left" valign="top">Pointer-based semaphore</td>
</tr>
<tr>
<td align="left" valign="top"><em>'1'</em></td>
<td align="left" valign="top">Name-based semaphore</td>
</tr>
</table>
<p><strong>Semaphore unlinked status.</strong> Indicates whether a name-based
semaphore is linked or unlinked. The field does not apply to pointer-based
semaphores and contains binary 0 in this case. Possible values
follow:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>'0'</em></td>
<td align="left" valign="top">Linked</td>
</tr>
<tr>
<td align="left" valign="top"><em>'1'</em></td>
<td align="left" valign="top">Unlinked</td>
</tr>
</table>
<p><strong>Thread identifier associated with condition.</strong> A job-specific
thread identifier that specifies a thread in a job that is associated with a
handle-based condition.</p>
<p><strong>Thread identifier associated with mutex.</strong> A job-specific
thread identifier that specifies a thread in a job that is associated with a
pointer-based or handle-based mutex.</p>
<p><strong>Thread identifier associated with semaphore.</strong> A job-specific
thread identifier that specifies a thread in a job that is associated with a
semaphore. This field is not applicable when all semaphores on a system are
retrieved and contains binary 0 for this case.</p>
<p><strong>Thread identifier associated with token.</strong> A job-specific
thread identifier that specifies a thread in a job that is associated with a
synchronization token.</p>
<p><strong>Token creator program.</strong> The first 8 characters of the name
of the program module that is associated with the thread that first waited on
the token. This field is for debug purposes only and should not be used for
building applications based on its contents.</p>
<p><strong>Token description.</strong> Contains fields that describe a
synchronization token associated with a thread. This structure is repeated as
needed to include all available synchronization token descriptions.
Only complete descriptions are returned.</p>
<p><strong>Token owner job name.</strong> Job name associated with a job that contains the thread
that holds the lock on a synchronization token. If token owner job name is all blanks, the
token is not locked or the thread that holds the lock on the token has
ended.</p>
<p><strong>Token owner job number.</strong> Job number associated with a job that contains the thread
that holds the lock on a synchronization token. If token owner job number is all blanks, the
token is not locked or the thread that holds the lock on the token has
ended.</p>
<p><strong>Token owner thread identifier.</strong> A job-specific thread
identifier for a thread that holds the lock on a synchronization token. If token
lock owner thread identifier is binary 0, the token is not locked or the thread
that holds the lock on the token has ended.</p>
<p><strong>Token owner thread unique value.</strong> A system-wide unique value
identifying the thread that holds the lock on a synchronization token. If token owner unique
thread value is binary 0, the token is not locked. This field should be used
for debug purposes only.</p>
<p><strong>Token owner user name.</strong> User name associated with a job that contains the thread
that holds the lock on a synchronization token. If token owner user name is all blanks, the
token is not locked or the thread that holds the lock on the token has
ended.</p>
<p><strong>Token reference.</strong> A synchronization token address or a
replica of a synchronization token. Additional information for the
synchronization token reference returned in this field can be retrieved using
this API and the STOK0200 and STOK0300 formats.</p>
<p><strong>Token state.</strong> Indicates synchronization token status.
Possible values follow:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>'0'</em></td>
<td align="left" valign="top">Locked by thread</td>
</tr>
<tr>
<td align="left" valign="top"><em>'1'</em></td>
<td align="left" valign="top">Thread is waiting for token</td>
</tr>
</table>
<p><strong>Token unique value.</strong> A system-wide unique value that
identifies a token. This field should be used
for debug purposes only.</p>
<p><strong>Waiter thread job name.</strong> Job name associated with a job containing the thread waiting
on a synchronization object. If waiter thread job name is all blanks, the thread
waiting on the synchronization object has ended, and the API could not
collect this information. This is a normal state for threads that have waited
on a synchronization object successfully and ended.</p>
<p><strong>Waiter thread job number.</strong> Job number associated with a job containing the thread
waiting on a synchronization object. If waiter thread job number is all blanks, the
thread waiting on the synchronization object has ended, and the API could not
collect this information. This is a normal state for threads that have waited
on a synchronization object successfully and ended.</p>
<p><strong>Waiter thread identifier.</strong> A job-specific thread identifier
that specifies a thread waiting on a synchronization object. If the waiter
thread identifier field contains binary 0, the thread waiting on the
synchronization object has ended, and the API could not
collect this information. This is a normal state for threads that have waited
on a synchronization object successfully and ended.</p>
<p><strong>Waiter thread unique value.</strong> A system-wide unique value
identifying a thread waiting on a synchronization object. This field should be
used for debug purposes only.</p>
<p><strong>Waiter thread user name.</strong> User name associated with a job containing the thread
waiting on a synchronization object. If waiter thread user name is all blanks, the
thread waiting on the synchronization object has ended, and the API could not
collect this information. This is a normal state for threads that have waited
on a synchronization object successfully and ended.</p>
<br>
<h3><a name="TIDF0100_Header"></a>TIDF0100 Format - Job and Thread
Identification</h3>
<p>This format is used to identify a job or thread. A job can be identified by
an Internal job identifier or the Job name, User name, and Job number fields.
For a detailed description of each field, see <a href="#TIDF0100_Format_FD">
TIDF0100 Format Field Descriptions</a>.</p>
<table border width="80%">
<tr>
<th align="center" valign="bottom" colspan="2">Offset</th>
<th align="left" valign="bottom" rowspan="2">Type</th>
<th align="left" valign="bottom" rowspan="2">Field</th>
</tr>
<tr>
<th align="center" valign="bottom">Dec</th>
<th align="center" valign="bottom">Hex</th>
</tr>
<tr>
<td align="center" valign="top" width="10%">0</td>
<td align="center" valign="top" width="10%">0</td>
<td align="left" valign="top" width="20%">CHAR(10)</td>
<td align="left" valign="top" width="60%">Job Name</td>
</tr>
<tr>
<td align="center" valign="top" width="10%">10</td>
<td align="center" valign="top" width="10%">A</td>
<td align="left" valign="top" width="20%">CHAR(10)</td>
<td align="left" valign="top" width="60%">User Name</td>
</tr>
<tr>
<td align="center" valign="top" width="10%">20</td>
<td align="center" valign="top" width="10%">14</td>
<td align="left" valign="top" width="20%">CHAR(6)</td>
<td align="left" valign="top" width="60%">Job Number</td>
</tr>
<tr>
<td align="center" valign="top" width="10%">26</td>
<td align="center" valign="top" width="10%">1A</td>
<td align="left" valign="top" width="20%">CHAR(16)</td>
<td align="left" valign="top" width="60%">Internal job identifier</td>
</tr>
<tr>
<td align="center" valign="top" width="10%">42</td>
<td align="center" valign="top" width="10%">2A</td>
<td align="left" valign="top" width="20%">CHAR(2)</td>
<td align="left" valign="top" width="60%">Reserved</td>
</tr>
<tr>
<td align="center" valign="top" width="10%">44</td>
<td align="center" valign="top" width="10%">2C</td>
<td align="left" valign="top" width="20%">BINARY(4)</td>
<td align="left" valign="top" width="60%">Thread indicator</td>
</tr>
<tr>
<td align="center" valign="top" width="10%">48</td>
<td align="center" valign="top" width="10%">30</td>
<td align="left" valign="top" width="20%">CHAR(8)</td>
<td align="left" valign="top" width="60%">Thread identifier</td>
</tr>
</table>
<br>
<br>
<h3><a name="TIDF0100_Format_FD">TIDF0100 Format Field Descriptions</a></h3>
<p><strong>Internal job identifier.</strong> The internal identifier for the
job. The List Job (QUSLJOB) API returns this identifier. If you do not specify
*INT for the Job name parameter, this parameter must contain binary 0.
With this parameter, the system can locate the job more quickly than with the
Job name, Job number, and User name.</p>
<p><strong>Job name.</strong> A specific job name or one of the following
special values:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>"* "</em></td>
<td align="left" valign="top">The job in which this program is running. The Job
number and User name must contain binary 0.</td>
</tr>
<tr>
<td align="left" valign="top"><em>"*INT "</em></td>
<td align="left" valign="top">The Internal job identifier locates the job. The
Job number and User name must contain binary 0.</td>
</tr>
</table>
<p><strong>Job number.</strong> A specific job number or binary 0 when
the Job name specified is a special value.</p>
<p><strong>Reserved.</strong> An unused field. This field must contain
binary 0.</p>
<p><strong>Thread identifier.</strong> A value that uniquely identifies a
thread within a job. Because a thread identifier is job-specific, the Job name,
User name, and Job Number or the Internal job identifier must also be provided
to identify a thread.</p>
<p><strong>Thread indicator.</strong> A value that is used to specify the
thread or job for which information is to be retrieved. The following values
are supported:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>'0'</em></td>
<td align="left" valign="top"><strong>Specified Thread.</strong> Information
should be retrieved for the thread specified in the Thread identifier field. A
valid Job name, Job number, and User name or a valid Internal job identifier
must also be provided to identify the job containing the specified thread.</td>
</tr>
<tr>
<td align="left" valign="top"><em>'1'</em></td>
<td align="left" valign="top"><strong>Issuing Thread.</strong> Information
should be retrieved for the thread in which this program is running currently.
No additional information is required. The Job name, Job number, User name,
Internal job identifier, and Thread identifier fields of this structure must
contain binary 0.</td>
</tr>
<tr>
<td align="left" valign="top"><em>'2'</em></td>
<td align="left" valign="top"><strong>Initial Thread of Specified Job.</strong>
Information should be retrieved for the initial thread of the identified job. A
valid Job name, Job number, and User name or a valid Internal job identifier
must be provided in the fields of this structure. No Thread identifier
information is required, and this field must contain binary 0. If all
name-based semaphores for a job are to be retrieved, this option must be
specified.</td>
</tr>
<tr>
<td align="left" valign="top"><em>'3'</em></td>
<td align="left" valign="top"><strong>All Threads of Specified Job.</strong>
Information should be retrieved for the job and its associated threads. A valid
Job name, Job number, and User name or a valid Internal job identifier must be
provided in the fields of this structure. No Thread identifier information is
required, and this field must contain binary 0.</td>
</tr>
</table>
<p><strong>Note:</strong> For all supported values, the combination of the
Internal job identifier, Job name, Job number, User name, and Thread identifier
fields must identify the job containing the specified thread or threads.</p>
<p><strong>User name.</strong> A specific user profile name or binary 0
when the Job name specified is a special value.</p>
<br>
<h3><a name="TIDF0200_Header"></a>TIDF0200 Format - Synchronization Object
Identification</h3>
<p>This format is used to identify a synchronization object and any required
job information associated with the synchronization object. For a detailed
description of each field, see <a href="#TIDF0200_Format_FD">TIDF0200 Format
Field Descriptions</a>.</p>
<table border width="80%">
<tr>
<th align="center" valign="bottom" colspan="2">Offset</th>
<th align="left" valign="bottom" rowspan="2">Type</th>
<th align="left" valign="bottom" rowspan="2">Field</th>
</tr>
<tr>
<th align="center" valign="bottom">Dec</th>
<th align="center" valign="bottom">Hex</th>
</tr>
<tr>
<td align="center" valign="top" width="10%">0</td>
<td align="center" valign="top" width="10%">0</td>
<td align="left" valign="top" width="20%">CHAR(10)</td>
<td align="left" valign="top" width="60%">Job Name</td>
</tr>
<tr>
<td align="center" valign="top" width="10%">10</td>
<td align="center" valign="top" width="10%">A</td>
<td align="left" valign="top" width="20%">CHAR(10)</td>
<td align="left" valign="top" width="60%">User Name</td>
</tr>
<tr>
<td align="center" valign="top" width="10%">20</td>
<td align="center" valign="top" width="10%">14</td>
<td align="left" valign="top" width="20%">CHAR(6)</td>
<td align="left" valign="top" width="60%">Job Number</td>
</tr>
<tr>
<td align="center" valign="top" width="10%">26</td>
<td align="center" valign="top" width="10%">1A</td>
<td align="left" valign="top" width="20%">CHAR(16)</td>
<td align="left" valign="top" width="60%">Internal job identifier</td>
</tr>
<tr>
<td align="center" valign="top" width="10%">42</td>
<td align="center" valign="top" width="10%">2A</td>
<td align="left" valign="top" width="20%">CHAR(1)</td>
<td align="left" valign="top" width="60%">Reference specification</td>
</tr>
<tr>
<td align="center" valign="top" width="10%">43</td>
<td align="center" valign="top" width="10%">2B</td>
<td align="left" valign="top" width="20%">CHAR(1)</td>
<td align="left" valign="top" width="60%">Job specification</td>
</tr>
<tr>
<td align="center" valign="top" width="10%">44</td>
<td align="center" valign="top" width="10%">2C</td>
<td align="left" valign="top" width="20%">CHAR(4)</td>
<td align="left" valign="top" width="60%">Reserved</td>
</tr>
<tr>
<td align="center" valign="top" width="10%">48</td>
<td align="center" valign="top" width="10%">30</td>
<td align="left" valign="top" width="20%">OPN(PTR)</td>
<td align="left" valign="top" width="60%">Reference address</td>
</tr>
</table>
<br>
<br>
<h3><a name="TIDF0200_Format_FD">TIDF0200 Format Field Descriptions</a></h3>
<p><strong>Internal job identifier.</strong> The internal identifier for the
job used with the STOK0200 and STOK0300 formats when the address of a synchronization token
is indicated in the Reference specification field. The List Job (QUSLJOB) API
returns this identifier. If you do not specify *INT for the Job name parameter,
this parameter must contain binary 0. With this parameter, the system
can locate the job more quickly than with the Job name, Job number, and User
name. This field is not applicable to all other formats and must contain
binary 0 in these cases.</p>
<p><strong>Job name.</strong> A specific job name or one of the special values
in the table below used with the STOK0200 and STOK0300 formats when the address of a
synchronization token is indicated in the Reference specification field. This
field is not applicable to all other formats and the STOK0200 and STOK0300 formats when
replica addresses are provided. The field must contain binary 0 in these
cases.</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>"* "</em></td>
<td align="left" valign="top">The job in which this program is running. The Job
number and User name must contain binary 0.</td>
</tr>
<tr>
<td align="left" valign="top"><em>"*INT "</em></td>
<td align="left" valign="top">The Internal job identifier locates the job. The
Job number and User name must contain binary 0.</td>
</tr>
</table>
<p><strong>Job number.</strong> A specific job number used with the STOK0200 and STOK0300
formats when the address of a synchronization token is indicated in the
Reference specification field. If the Job name field contains one of the
special values * or *INT, this field must contain binary 0. This field
is not applicable to all other formats and to the STOK0200 and STOK0300 formats when replica
addresses are provided. The field must contain binary 0 in these
cases.</p>
<p><strong>Job specification.</strong> Specifies that a specific job will be
provided for the STOK0200 and STOK0300 formats when information is to be retrieved for a
synchronization token in another process. This field is not applicable to all
other formats and to the STOK0200 and STOK0300 formats when replica addresses are provided. This field
must contain binary 0 in these cases.</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>'0'</em></td>
<td align="left" valign="top">Retrieve information for the token from the
issuing thread's job. No additional information is required for this option.
The Job name, User name, Job number, and Internal Job Identifier fields must
contain binary 0.</td>
</tr>
<tr>
<td align="left" valign="top"><em>'1'</em></td>
<td align="left" valign="top">Retrieve information for the token from the job
specified with the Job name, User name, and Job number or Internal Job
Identifier fields of this structure.</td>
</tr>
</table>
<p><strong>Reference address.</strong> The address of a synchronization object
or the address of the replica of a synchronization object.</p>
<p><strong>Reference specification.</strong> Selects address of a
synchronization object or the address of a replica of a synchronization object. This field is
only applicable to the STOK0200 and STOK0300 formats. The possible values of this field
are:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>'0'</em></td>
<td align="left" valign="top">The address of a synchronization token is
provided in the Reference address field.</td>
</tr>
<tr>
<td align="left" valign="top"><em>'1'</em></td>
<td align="left" valign="top">The address of a replica of a synchronization
token is provided Reference address field.</td>
</tr>
</table>
<p><strong>Reserved.</strong> An unused field. This field must contain
binary 0.</p>
<p><strong>User name.</strong> A specific user profile name used for the
STOK0200 and STOK0300 formats when the address of a synchronization object is indicated in
the Reference specification field. If the Job name field contains one of the
special values '* ' or '*INT ', this field must contain binary 0. This
field is not applicable to all other formats and to the STOK0200 and STOK0300 formats when
replica addresses are provided. The field must contain binary 0 in
these cases.</p>
<br>
<h3><a name="OPTN0100_Header"></a>OPTN0100 Format - Options for Receiver
Variable</h3>
<p>This format is used to control data retrieved in the Receiver variable. For
a detailed description of each field, see <a href="#OPTN0100_Format_FD">
OPNT0100 Format Field Descriptions</a>.</p>
<table border width="80%">
<tr>
<th align="center" valign="bottom" colspan="2">Offset</th>
<th align="left" valign="bottom" rowspan="2">Type</th>
<th align="left" valign="bottom" rowspan="2">Field</th>
</tr>
<tr>
<th align="center" valign="bottom">Dec</th>
<th align="center" valign="bottom">Hex</th>
</tr>
<tr>
<td align="center" valign="top" width="10%">0</td>
<td align="center" valign="top" width="10%">0</td>
<td align="left" valign="top" width="20%">CHAR(1)</td>
<td align="left" valign="top" width="60%">References</td>
</tr>
<tr>
<td align="center" valign="top" width="10%">1</td>
<td align="center" valign="top" width="10%">1</td>
<td align="left" valign="top" width="20%">CHAR(1)</td>
<td align="left" valign="top" width="60%">Thread status</td>
</tr>
<tr>
<td align="center" valign="top" width="10%">2</td>
<td align="center" valign="top" width="10%">2</td>
<td align="left" valign="top" width="20%">CHAR(1)</td>
<td align="left" valign="top" width="60%">Semaphore filter</td>
</tr>
<tr>
<td align="center" valign="top" width="10%">3</td>
<td align="center" valign="top" width="10%">3</td>
<td align="left" valign="top" width="20%">CHAR(1)</td>
<td align="left" valign="top" width="60%">Semaphore selection</td>
</tr>
<tr>
<td align="center" valign="top" width="10%">4</td>
<td align="center" valign="top" width="10%">4</td>
<td align="left" valign="top" width="20%">CHAR(12)</td>
<td align="left" valign="top" width="60%">Reserved</td>
</tr>
</table>
<br>
<br>
<h3><a name="OPTN0100_Format_FD">OPTN0100 Format Field Descriptions</a></h3>
<p><strong>References.</strong> Selects addresses or replicas for the
synchronization object associated with the format. If addresses are selected,
only those synchronization objects that the issuing thread has addressability
to can be retrieved. If replicas are selected, all synchronization objects for
the specified thread or threads are retrieved. The following values are
allowed:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>'0'</em></td>
<td align="left" valign="top">Return replicas of synchronization objects.</td>
</tr>
<tr>
<td align="left" valign="top"><em>'1'</em></td>
<td align="left" valign="top">Return addresses of synchronization objects.</td>
</tr>
</table>
<p><strong>Note:</strong> This field is used only with the PMTX0100 and
STOK0100 formats. For the HMTX0100, HCND0100, and SEMA0100 formats replicas are
always returned. If the field does not apply to the current request, this field
must contain binary 0.</p>
<p><strong>Reserved.</strong> An unused field. This field must contain
binary 0.</p>
<p><strong>Semaphore filter.</strong> Retrieves information for semaphores
associated with a specified job or thread, all semaphores system wide, or all
name-based semaphores in a job. This field is used only with the SEMA0100
format and must contain binary 0 for all other formats. The following
values are allowed:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>'0'</em></td>
<td align="left" valign="top">Retrieve information for the thread or job
specified in the Target identification structure with the TIDF0100 format.</td>
</tr>
<tr>
<td align="left" valign="top"><em>'1'</em></td>
<td align="left" valign="top">Retrieve system-wide semaphore information using
the Target identification structure with the TIDF0000 format.</td>
</tr>
<tr>
<td align="left" valign="top"><em>'2'</em></td>
<td align="left" valign="top">Retrieve information for all name-based
semaphores in a job. A Job name, User name, and Job number or an Internal Job
Identifier must be specified in the Target identification structure with the
TIDF0100 format. The Thread Indicator field of the Target identification
structure must indicate that information should be retrieved for a specified
job ('2').</td>
</tr>
</table>
<p><strong>Note:</strong> For all other formats, this field must contain
binary 0.</p>
<p><strong>Semaphore selection.</strong> Selects type of semaphore information
to be retrieved for the SEMA0100 format when Semaphore Filter is '0' or '1'.
For all other formats this field must contain binary 0. The following
values are allowed:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>'0'</em></td>
<td align="left" valign="top">Retrieve information for name-based semaphores.
The Semaphore filter field must indicate that information should be retrieved
for a specified thread or job ('0') or system wide ('1').</td>
</tr>
<tr>
<td align="left" valign="top"><em>'1'</em></td>
<td align="left" valign="top">Retrieve information for pointer-based
semaphores. The Semaphore filter field must indicate that information should be
retrieved for a specified thread or job ('0') or system wide ('1').</td>
</tr>
<tr>
<td align="left" valign="top"><em>'2'</em></td>
<td align="left" valign="top">Retrieve information for pointer-based and
name-based semaphores. The Semaphore filter field must indicate that
information should be retrieved for a specified thread or job ('0') or system
wide ('1').</td>
</tr>
</table>
<p><strong>Note:</strong> This field is not applicable when the Semaphore
filter field indicates that information should be retrieved for all name-based
semaphores in a job. If the field does not apply to the current request, the
field must contain binary 0.</p>
<p><strong>Thread status.</strong> Selects status of mutexes or tokens that are
retrieved. The following values are allowed:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>'0'</em></td>
<td align="left" valign="top">Retrieve descriptions of mutexes or tokens that are locked
or waited upon by a thread.</td>
</tr>
<tr>
<td align="left" valign="top"><em>'1'</em></td>
<td align="left" valign="top">Retrieve descriptions of mutexes or tokens that are waited
upon by a thread.</td>
</tr>
</table>
<p><strong>Note:</strong> This field is used only with the PMTX0100, HMTX0100,
and STOK0100 formats. If the field does not apply to the current request, the
field must contain binary 0.</p>
<br>
<h3><a name="header_9">Error Messages</a></h3>
<table width="100%">
<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">CPE3021</td>
<td width="85%" valign="top">The value specified for the argument is not
correct.</td>
</tr>
<tr>
<td valign="top">CPE3027</td>
<td valign="top">Operation not permitted.</td>
</tr>
<tr>
<td valign="top">CPE3404</td>
<td valign="top">No space available.</td>
</tr>
<tr>
<td valign="top">CPE3408</td>
<td valign="top">The address used for an argument was not correct.</td>
</tr>
<tr>
<td valign="top">CPE3525</td>
<td valign="top">Object is too large to process.</td>
</tr>
<tr>
<td valign="top">CPE3463</td>
<td valign="top">The synchronization object was destroyed, or the object no
longer exists.</td>
</tr>
<tr>
<td valign="top">CPF3CF1</td>
<td valign="top">Error code parameter not valid.</td>
</tr>
</table>
<br>
<br>
<h3>Example</h3>
<p>See <a href="../apiref/aboutapis.htm#codedisclaimer">Code disclaimer information</a>
for information pertaining to code examples.</p>
<pre>
#include "qp0msrtvso.H"
#include &lt;qusec.h&gt; /*Error code structures */
#include &lt;string.h&gt;
#include &lt;stdio.h&gt;
#include &lt;mih/crtmtx.h&gt;
#include &lt;mih/lockmtx.h&gt;
#include &lt;mih/desmtx.h&gt;
#include &lt;mih/unlkmtx.h&gt;
#include &lt;except.h&gt;
/*******************************************************************/
/* Description: This program creates and locks two pointer-based */
/* mutexes. It then calls Qp0msRtvSyncObjInfo() with the PMTX0100 */
/* format to retrieve a list of consisting of the two mutexes. The */
/* program uses one of the mutex addresses as the input of */
/* Qp0msRtvSyncObjInfo() with the PMTX0200 format to retrieve */
/* additional information about that mutex. */
/*******************************************************************/
int main (int argc, char *argv[]) {
char pmutex1[32];
char pmutex2[32];
char pointer[16];
Qp0ms_TIDF0200 target2;
memset(&amp;target2, 0, sizeof(Qp0ms_TIDF0200));
_OPENPTR address_of_mutex;
/* Creation of pointer-based mutex */
_Mutex_Create_T pmtx_options;
memset(&amp;pmtx_options, 0x00, sizeof(_Mutex_Create_T));
int result;
result = _CRTMTX( (_Mutex_T *) pmutex1, &amp;pmtx_options );
result = _CRTMTX( (_Mutex_T *) pmutex2, &amp;pmtx_options );
/* Lock pointer-based mutexes */
_Mutex_Lock_T lock_template;
_LOCKMTX((_Mutex_T *) pmutex1, &amp;lock_template);
_LOCKMTX((_Mutex_T *) pmutex2, &amp;lock_template);
/**** Create Qp0msRtvSyncObjInfo parameters ****/
// This call allocates space for 1 mutex description
char * receiver = new char[sizeof(Qp0ms_PMTX0100_List_t) + 1*sizeof(Qp0ms_PMtxDesc_t)];
int length = sizeof(Qp0ms_PMTX0100_List_t) + 1*sizeof(Qp0ms_PMtxDesc_t);
Qus_EC_t err_code;
/**** Initialize options structure ****/
Qp0ms_OPTN0100_t options;
memset(&amp;options, 0x00, sizeof(Qp0ms_OPTN0100_t) );
options.References = '0';
options.Thread_Status = '0';
/**** Initialize target structure ****/
Qp0ms_TIDF0100_t target;
memset(&amp;target, 0x00, sizeof(Qp0ms_TIDF0100_t) );
target.Thread_Indicator = '1';
/**** Initialize error code structure ****/
memset(&amp;err_code, 0x00, sizeof(Qus_EC_t) );
err_code.Bytes_Provided = sizeof(Qus_EC_t);
/* Call Retrieve Synchronization Object Information API */
Qp0msRtvSyncObjInfo(receiver, &amp;length, "PMTX0100", &amp;target, "TIDF0100",
&amp;options, "OPTN0100", &amp;err_code);
Qp0ms_PMtxDesc_t * Mutex_Desc = (Qp0ms_PMtxDesc_t *)((char *) receiver + ((Qp0ms_PMTX0100_List_t *)
receiver)-&gt;Desc_Offset);
printf("********************Results of Qp0msRtvSyncObjInfo() *************\n");
if ( err_code.Bytes_Available != 0 )
printf("This call failed with error %7.7s\n", err_code.Exception_Id);
else {
printf("Bytes Returned %d\n", ((Qp0ms_PMTX0100_List *) receiver)-&gt;Bytes_Returned);
printf("Bytes Available %d\n", ((Qp0ms_PMTX0100_List *) receiver)-&gt;Bytes_Available);
printf("Number of Threads %d\n", ((Qp0ms_PMTX0100_List *) receiver)-&gt;Num_Threads);
printf("Number of Descriptions Available %d\n", ((Qp0ms_PMTX0100_List *)
receiver)-&gt;Num_Desc_Available);
printf("Number of Descriptions Returned %d\n", ((Qp0ms_PMTX0100_List *)
receiver)-&gt;Num_Desc_Returned);
}
for ( int i = 0; i &lt; ((Qp0ms_PMTX0100_List *) receiver)-&gt;Num_Desc_Returned; ++i) {
if ( err_code.Bytes_Available != 0 )
printf("This call failed with error %7.7s\n", err_code.Exception_Id);
else{
printf("Mutex information %d\n", i);
printf("Mutex state: %d\n", Mutex_Desc[i].Mutex_State);
printf("Mutex Name: %16.16s\n", Mutex_Desc[i].Mutex_Name);
printf("Mutex Owner Job Information\n");
printf("Job Name: %10.10s\n", Mutex_Desc[i].Owner_Job_Name);
printf("Job Number: %6.6s\n", Mutex_Desc[i].Owner_Job_Num);
printf("User Name: %10.10s\n", Mutex_Desc[i].Owner_User_Name);
int * tid = (int *) &amp;Mutex_Desc[i].Owner_Thread_Id[0];
printf("Mutex Owner Thread ID: %4.4x", *tid);
printf("%4.4x\n", *(tid+1));
int * thr_uval = (int *) &amp;Mutex_Desc[i].Owner_Thread_Val[0];
printf("Mutex Owner Thread Unique Value: %4.4x", *thr_uval);
printf("%4.4x\n", *(thr_uval+1));
printf("Number of threads waiting on this mutex: %d\n", Mutex_Desc[i].Num_Waiters);
memcpy(&amp;address_of_mutex, &amp;Mutex_Desc[i].Mutex, sizeof(_OPENPTR));
address_of_mutex = (_OPENPTR) Mutex_Desc[i].Mutex;
void * test = Mutex_Desc[i].Mutex;
memcpy(&amp;test, &amp;Mutex_Desc[i].Mutex, sizeof(void *));
test = Mutex_Desc[i].Mutex;
memcpy(pointer, &amp;Mutex_Desc[i].Mutex, 16);
memcpy(&amp;address_of_mutex, pointer, 16);
target2.Ref_Address = &amp;Mutex_Desc[i].Mutex;
if ( ((Qp0ms_PMTX0100_List_t *) receiver)-&gt;Bytes_Available &gt; ((Qp0ms_PMTX0100_List_t *)
receiver)-&gt;Bytes_Returned ){
printf("More descriptions available.\n");
}
}
}
delete receiver;
/* Initialize receiver */
receiver = new char[sizeof(Qp0ms_PMTX0200_List_t) + sizeof(Qp0ms_Waiters)];
/* Initialize length */
length = sizeof(Qp0ms_PMTX0200_List_t) + sizeof(Qp0ms_Waiters);
/* Initialize error code */
memset(&amp;err_code, 0, sizeof(Qus_EC_t));
err_code.Bytes_Provided = sizeof(Qus_EC_t);
/* Call Retrieve Synchronization Object Information API */
Qp0msRtvSyncObjInfo(receiver, &amp;length, "PMTX0200", &amp;target2, "TIDF0200", NULL, "OPTN0000",
&amp;err_code);
if ( err_code.Bytes_Available != 0 )
printf("This call failed with error %7.7s\n", err_code.Exception_Id);
else {
printf("Bytes Returned %d\n", ((Qp0ms_PMTX0200_List *) receiver)-&gt;Bytes_Returned);
printf("Bytes Available %d\n", ((Qp0ms_PMTX0200_List *) receiver)-&gt;Bytes_Available);
printf("Number of Threads %d\n", ((Qp0ms_PMTX0200_List *) receiver)-&gt;Num_Threads_Waiting);
printf("Number of Descriptions Available %d\n", ((Qp0ms_PMTX0200_List *)
receiver)-&gt;Num_Desc_Available);
printf("Number of Descriptions Returned %d\n", ((Qp0ms_PMTX0200_List *)
receiver)-&gt;Num_Desc_Returned);
printf("Mutex Name: %16.16s\n", ((Qp0ms_PMTX0200_List *) receiver)-&gt;Mutex_Name);
int * tid = (int *) &amp;((Qp0ms_PMTX0200_List *) receiver)-&gt;Owner_Thread_Id[0];
printf("Mutex Owner Thread ID: %4.4x", *tid);
printf("%4.4x\n", *(tid+1));
int * thr_uval = (int * ) &amp;((Qp0ms_PMTX0200_List *) receiver)-&gt;Owner_Thread_Val[0];
printf("Mutex Owner Thread Unique Value: %4.4x", *thr_uval);
printf("%4.4x\n", *(thr_uval+1));
printf("Owner Job Name: %10.10s\n", ((Qp0ms_PMTX0200_List *) receiver)-&gt;Owner_Job_Name);
printf("Owner Job Number: %6.6s\n", ((Qp0ms_PMTX0200_List *) receiver)-&gt;Owner_Job_Num);
printf("Owner User Name: %10.10s\n", ((Qp0ms_PMTX0200_List *) receiver)-&gt;Owner_User_Name);
Qp0ms_Waiters * waiters = (Qp0ms_Waiters *) ((int) receiver + ((Qp0ms_PMTX0200_List *)
receiver)-&gt;Desc_Offset);
for( int i = 0; i &lt; ((Qp0ms_PMTX0200_List *) receiver)-&gt;Num_Desc_Returned; ++i) {
int * atid = (int *) &amp;waiters[i].Thread_Id[0];
printf("Mutex %d, Associated Thread ID: %4.4x", i, *atid);
printf("%4.4x\n", *(atid+1));
int * athr_uval = waiters[i].Thread_Val;
printf("Mutex %d Associated Thread Unique Value: %4.4x", i, *athr_uval);
printf("%4.4x\n", *(athr_uval+1));
printf("Mutex %d Associated Job Name\n", i, waiters[i].Job_Name);
printf("Mutex %d Associated User Name\n", i, waiters[i].User_Name);
printf("Mutex %d Associated Job Number\n", i, waiters[i].Job_Number);
}
}
/* Clean up */
_UNLKMTX( (_Mutex_T *) pmutex1 );
_UNLKMTX( (_Mutex_T *) pmutex2 );
_Mutex_Destroy_Opt_T destroy_opt;
_DESMTX( (_Mutex_T *) pmutex1, &amp;destroy_opt );
_DESMTX( (_Mutex_T *) pmutex2, &amp;destroy_opt );
delete receiver;
}
</pre>
<br>
<h3>Example Output</h3>
<pre>
********************Results of Qp0msRtvSyncObjInfo() *************
Bytes Returned 128
Bytes Available 224
Number of Threads 0
Number of Descriptions Available 2
Number of Descriptions Returned 1
Mutex information 0
Mutex state: 240
Mutex Name: UNNAMED_I0_EXAMP
Mutex Owner Job Information
Job Name: QPADEV0004
Job Number: 023786
User Name: USER1
Mutex Owner Thread ID: 00000060
Mutex Owner Thread Unique Value: b003f000df03000
Number of threads waiting on this mutex: 0
More descriptions available.
Bytes Returned 96
Bytes Available 96
Number of Threads 0
Number of Descriptions Available 0
Number of Descriptions Returned 0
Mutex Name: UNNAMED_I0_EXAMP
Mutex Owner Thread ID: 00000060
Mutex Owner Thread Unique Value: b003f000df03000
Owner Job Name: QPADEV0004
Owner Job Number: 023786
Owner User Name: USER1
</pre>
<br>
<hr>
API introduced: V5R3
<hr>
<table align="center" cellpadding="2" cellspacing="2">
<tr align="center">
<td valign="middle" align="center"><a href="#Top">Top</a> | <a href="wm1.htm">
Work Management APIs</a> | <a href="aplist.htm">APIs by category</a></td>
</tr>
</table>
</body>
</html>