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

1863 lines
60 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Copyright" content="Copyright (c) 2006 by IBM Corporation">
<title>Retrieve Call Stack (QWVRCSTK) 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 V5R1 -->
<!-- Change History: -->
<!-- YYMMDD USERID Change description -->
<!-- File cleanup completed Nov 2001 by v2cdijab -->
<!-- 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 Call Stack (QWVRCSTK) 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">Job identification information</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(*)</td>
</tr>
<tr>
<td align="center" valign="top">5</td>
<td align="left" valign="top">Format of job identification information</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">Error code</td>
<td align="left" valign="top">I/O</td>
<td align="left" valign="top">Char(*)</td>
</tr>
</table>
<br>
&nbsp;&nbsp;Default Public Authority: *USE<br>
<!-- iddvc RMBR -->
<br>
&nbsp;&nbsp;Threadsafe: Yes<br>
<!-- iddvc RMBR -->
<br>
</div>
<p>The Retrieve Call Stack (QWVRCSTK) API returns the call stack information
for the specified thread. The first call stack entry returned corresponds to
the most recent call in the thread.</p>
<br>
<h3>Authorities and Locks</h3>
<dl>
<dt><em>Job Authority</em></dt>
<dd>The API must be called within the thread for which the call stack 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 containing the thread for which
the call stack is being retrieved. Otherwise, the caller of the API must be
running under a user profile that has job control (*JOBCTL) special authority
or GUI thread control authority.
<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>
<p><img src="delta.gif" alt="Start of change">
The caller of the API must have service (*SERVICE) special authority to
retrieve advanced details for format CSTK0300.
<img src="deltaend.gif" alt="End of change"> </p>
</dd>
</dl>
<br>
<h3>Required Parameter Group</h3>
<dl>
<dt><strong>Receiver variable</strong></dt>
<dd>OUTPUT; CHAR(*)
<p>The receiver variable that receives the information requested. You can
specify the size of the area to be smaller than the format requested as long as
you specify the length parameter correctly. As a result, the API returns only
the data that the area can hold. For example, this may mean that the value in
the number of call stack entries returned field doesn't match the value in the
number of call stack entries for thread field.</p>
</dd>
<dt><strong>Length of receiver variable</strong></dt>
<dd>INPUT; BINARY(4)
<p>The length of the receiver variable provided. The length of receiver
variable parameter may be specified up to the size of the receiver variable
specified in the user program. If the length of receiver variable parameter
specified is larger than the allocated size of the receiver variable specified
in the user program, the results are not predictable. The minimum length is 8
bytes.</p>
</dd>
<dt><strong>Format of receiver information</strong></dt>
<dd>INPUT; CHAR(8)
<p>The format of the information returned in the receiver variable. The
possible format name is:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>CSTK0100</em></td>
<td align="left" valign="top">See <a href="#HDRXXCSTK1">Format CSTK0100</a> for
details on the call stack information returned.</td>
</tr>
<tr>
<td align="left" valign="top"><img src="delta.gif" alt="Start of change"><em>CSTK0200</em></td>
<td align="left" valign="top">See <a href="#HDRCSTK0200">Format CSTK0200</a> for
details on the call stack information returned. The format data will contain
OPM, ILE, i5/OS PASE, and Java program stack frames.</td>
</tr>
<tr>
<td align="left" valign="top"><em>CSTK0300</em></td>
<td align="left" valign="top">See <a href="#HDRCSTK0300">Format CSTK0300</a> for
details on the call stack information returned. The format data will contain OPM,
ILE, i5/OS PASE, Java, Licensed Internal Code, and i5/OS PASE Kernel stack frames.
To use this format, the caller of the API must be running under a user profile
that has service (*SERVICE) special authority.<img src="deltaend.gif" alt="End of change"></td>
</tr>
</table>
<br>
</dd>
<dt><strong>Job identification information</strong></dt>
<dd>INPUT; CHAR(*)
<p> The information that is used to identify the thread within a job for which
call stack information is to be returned. See <a href="#HDRXXCSTK2">Format of
job identification information</a> for details.</p>
</dd>
<dt><strong>Format of job identification information</strong></dt>
<dd>INPUT; CHAR(8)
<p> The format of the job identification information. The possible format names
are:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>JIDF0100</em></td>
<td align="left" valign="top">See <a href="#HDR_JIDF0100">JIDF0100 Format</a>
for details on the job identification
information.</td>
</tr>
<tr>
<td align="left" valign="top"><em>JIDF0200</em></td>
<td align="left" valign="top">See <a href="#HDR_JIDF0200">JIDF0200 Format</a>
for details on the job identification
information.</td>
</tr>
</table>
<p><strong>Note:</strong> If the thread handle is available, Format JIDF0200
provides a faster method of accessing a thread that is not the current thread
than Format JIDF0100.</p>
</dd>
<dt><strong>Error code</strong></dt>
<dd>I/O; CHAR(*)
<p> The structure in which to return error information. For the format of the
structure, see <a href="../apiref/error.htm#hdrerrcod">Error Code Parameter</a>.</p>
</dd>
</dl>
<br>
<h3><a name="HDRXXCSTK1">Format CSTK0100</a></h3>
<p>
<img src="delta.gif" alt="Start of change">
This format will contain OPM and ILE stack frames. For details about the fields listed,
see <a href="#Header_5">Field Descriptions</a>.
<img src="deltaend.gif" alt="End of change">
</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 call stack entries for thread</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">Offset to call stack entry information</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 call stack entries returned</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="center" valign="top">14</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Returned thread identifier</td>
</tr>
<tr>
<td align="center" valign="top">28</td>
<td align="center" valign="top">1C</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Information status</td>
</tr>
<tr>
<td align="center" valign="top">29</td>
<td align="center" valign="top">1D</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="left" valign="top" rowspan="24" colspan="2">These fields repeat, in
the order listed, for the number of call stack entries.</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of this call stack entry</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Displacement to statement identifiers</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Number of statement identifiers</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Displacement to the procedure name</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of procedure name</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Request level</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Program name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Program library name</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">MI instruction number</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Module name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Module library name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Control boundary</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(3)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4), UNSIGNED</td>
<td align="left" valign="top">Activation group number</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Activation group name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(2)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Program ASP name</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Program library ASP name</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Program ASP number</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Program library ASP number</td>
</tr>
<tr>
<td align="left" valign="top">
BINARY(8), UNSIGNED</td>
<td align="left" valign="top">Activation group number long
</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="left" valign="top">ARRAY(*) of CHAR(10)</td>
<td align="left" valign="top">Statement identifiers</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Procedure name</td>
</tr>
</table>
<br>
<br>
<img src="delta.gif" alt="Start of change">
<h3><a name="HDRCSTK0200">Format CSTK0200</a></h3>
<p>
This format will contain OPM, ILE, i5/OS PASE, and Java program stack frames.
For details about the fields listed, see <a href="#Header_5">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 call stack entries for thread</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">Offset to call stack entry information</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 call stack entries returned</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="center" valign="top">14</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Returned thread identifier</td>
</tr>
<tr>
<td align="center" valign="top">28</td>
<td align="center" valign="top">1C</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="left" valign="top" colspan="2" rowspan="6">These fields repeat, in the order listed, for the number of call stack entries.</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of this call stack entry</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Displacement to call stack entry data</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Format name of call stack entry data</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of call stack entry data</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Call stack entry data (See
<a href="#HDR_STKE">Format of call stack entry data</a> for more information.)</td>
</tr>
</table>
<br>
<br>
<h3><a name="HDRCSTK0300">Format CSTK0300</a></h3>
<p>
This format will contain OPM, ILE, i5/OS PASE, Java, Licensed Internal Code,
and i5/OS PASE Kernel stack frames. To use this format, the caller of the
API must be running under a user profile that has service (*SERVICE) special authority.
For details about the fields listed, see <a href="#Header_5">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 call stack entries for thread</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">Offset to call stack entry information</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 call stack entries returned</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="center" valign="top">14</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Returned thread identifier</td>
</tr>
<tr>
<td align="center" valign="top">28</td>
<td align="center" valign="top">1C</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="left" valign="top" colspan="2" rowspan="6">These fields repeat, in the order listed, for the number of call stack entries.</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of this call stack entry</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Displacement to call stack entry data</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Format name of call stack entry data</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of call stack entry data</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Call stack entry data (See
<a href="#HDR_STKE">Format of call stack entry data</a> for more information.)</td>
</tr>
</table>
<br>
<br>
<h3><a name="HDR_STKE">Format of call stack entry data</a></h3>
<p>
The format of the information returned for a given stack frame.
</p>
<h3><a name="HDRSTKE0100">STKE0100 Format</a></h3>
<p>
This format describes the data that is returned for an OPM or ILE program stack frame.
For details about the fields listed, see <a href="#Header_5">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="left" valign="top" width="20%" colspan="2" rowspan="21">These fields repeat, in the order listed, for the number of call stack entries.</td>
<td align="left" valign="top" width="20%">BINARY(4)</td>
<td align="left" valign="top" width="60%">Displacement to statement identifiers</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Number of statement identifiers</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Displacement to the procedure name</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of procedure name</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Request level</td>
</tr><tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Program name</td>
</tr><tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Program library name</td>
</tr><tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Module name</td>
</tr><tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Module library name</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">MI instruction number</td>
</tr><tr>
<td align="left" valign="top">BINARY(8), UNSIGNED</td>
<td align="left" valign="top">Activation group number long</td>
</tr><tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Activation group name</td>
</tr><tr>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Control boundary</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">CHAR(10)</td>
<td align="left" valign="top">Program ASP name</td>
</tr><tr>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Program library ASP name</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Program ASP number</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Program library ASP number</td>
</tr><tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Reserved</td>
</tr><tr>
<td align="left" valign="top">ARRAY(*) of CHAR(10)</td>
<td align="left" valign="top">Statement identifiers</td>
</tr><tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Procedure name</td>
</tr>
</table>
<br>
<br>
<h3><a name="HDRSTKE0200">STKE0200 Format</a></h3>
<p>
This format describes the data that is returned for i5/OS PASE and i5/OS PASE Kernel stack frames.
For details about the fields listed, see <a href="#Header_5">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="left" valign="top" width="20%" colspan="2" rowspan="19">These fields repeat, in the order listed, for the number of call stack entries.</td>
<td align="left" valign="top" width="20%">BINARY(4)</td>
<td align="left" valign="top" width="60%">Displacement to procedure name</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of procedure name</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Displacement to load module name</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of load module name</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Displacement to load module path</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of load module path</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Displacement to source path and file</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of source path and file</td>
</tr><tr>
<td align="left" valign="top">BINARY(4) , UNSIGNED</td>
<td align="left" valign="top">Line number</td>
</tr><tr>
<td align="left" valign="top">BINARY(8) , UNSIGNED</td>
<td align="left" valign="top">Instruction address</td>
</tr><tr>
<td align="left" valign="top">BINARY(4) , UNSIGNED</td>
<td align="left" valign="top">Instruction offset</td>
</tr><tr>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">32-bit indicator</td>
</tr><tr>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Kernel indicator</td>
</tr><tr>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Alternate resume point indicator</td>
</tr><tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Reserved</td>
</tr><tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Procedure name</td>
</tr><tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Load module name</td>
</tr><tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Load module path</td>
</tr><tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Source path and file</td>
</tr>
</table>
<br>
<br>
<h3><a name="HDRSTKE0300">STKE0300 Format</a></h3>
<p>
This format describes the data that is returned for Licensed Internal Code stack frames.
For details about the fields listed, see <a href="#Header_5">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="left" valign="top" width="20%" colspan="2" rowspan="8">These fields repeat, in the order listed, for the number of call stack entries.</td>
<td align="left" valign="top" width="20%">BINARY(4)</td>
<td align="left" valign="top" width="60%">Displacement to procedure name</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of procedure name</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Displacement to load module name</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of load module name</td>
</tr><tr>
<td align="left" valign="top">BINARY(4), UNSIGNED</td>
<td align="left" valign="top">Instruction offset</td>
</tr><tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Reserved</td>
</tr><tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Procedure name</td>
</tr><tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Load module name</td>
</tr>
</table>
<br>
<br>
<h3><a name="HDRSTKE0400">STKE0400 Format</a></h3>
<p>
This format describes the data that is returned for Java stack frames.
For details about the fields listed, see <a href="#Header_5">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="left" valign="top" width="20%" colspan="2" rowspan="20">
These fields repeat, in the order listed, for the number of call stack entries.</td>
<td align="left" valign="top" width="20%">BINARY(4)</td>
<td align="left" valign="top" width="60%">Displacement to Java class name</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of Java class name</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Displacement to Java method name</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of Java method name</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Displacement to Java method signature</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of Java method signature</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Displacement to Java file name/directory</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of Java file name/directory</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Displacement to Java source file name</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of Java source file name</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Java coded character set ID</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Line number</td>
</tr><tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Java byte code offset</td>
</tr><tr>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Java method type</td>
</tr><tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Reserved</td>
</tr><tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Java class name</td>
</tr><tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Java method name</td>
</tr><tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Java method signature</td>
</tr><tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Java file name/directory</td>
</tr><tr>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Java source file name</td>
</tr>
</table>
<br>
<br>
<img src="deltaend.gif" alt="End of change">
<h3><a name="Header_5">Field Descriptions</a></h3>
<p><img src="delta.gif" alt="Start of change"><strong>32-bit indicator.</strong>
Whether the invocation is running 32-bit or 64-bit i5/OS PASE code. The possible values are:</p>
<table cellpadding="5">
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">64-bit.</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">32-bit.</td>
</tr>
<tr>
<td align="left" valign="top"><em>blank</em></td>
<td align="left" valign="top">No information</td>
</tr>
</table>
<img src="deltaend.gif" alt="End of change">
<p><strong>Activation group name.</strong> The name of the activation group
within which the program or procedure is running. Possible special values
are:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>*DFTACTGRP</em></td>
<td align="left" valign="top">The activation group does not have a specific
name. The activation group is one of the default activation groups for the
system.</td>
</tr>
<tr>
<td align="left" valign="top"><em>*NEW</em></td>
<td align="left" valign="top">The activation group does not have a specific
name. The activation group was created when the program was called.</td>
</tr>
</table>
<p><strong>Activation group number.</strong> The number of the activation group
within which the program or procedure is running. This is an internal number
that uniquely identifies the activation group within the job.
It is recomended that the
activation group number long be used to uniquely identify the activation
group. The value returned in this field may become invalid due to the
presision of the storage.</p>
<p><strong>Activation group number long.</strong>
The number of the activation group
within which the program or procedure is running. This is an internal number
that uniquely identifies the activation group within the job.
</p>
<p><img src="delta.gif" alt="Start of change"><strong>Alternate resume point indicator.</strong>
Whether the current entry is a second entry for a given invocation. This flag is only used when the system can not reliably determine which of two possible resume points will be used when an invocation resumes execution. The possible values are:</p>
<table cellpadding="5">
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">The current invocation does not have an alternate resume point.</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">The current invocation does have an alternate resume point.</td>
</tr>
<tr>
<td align="left" valign="top"><em>blank</em></td>
<td align="left" valign="top">No information</td>
</tr>
</table>
<img src="deltaend.gif" alt="End of change">
<p><strong>Bytes available.</strong> The number of bytes of data available to
be returned. All available data is returned if enough space is provided.</p>
<p><strong>Bytes returned.</strong> The number of bytes of data returned.</p>
<p><img src="delta.gif" alt="Start of change"><strong>Call stack entry data.</strong>
Specifies the returned data for a given stack frame.
<img src="deltaend.gif" alt="End of change"></p>
<p><strong>Control boundary.</strong> Whether a control boundary is active for
a particular program or procedure. Possible values are:</p>
<table cellpadding="5">
<!-- cols="5 95" -->
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">No control boundary is active.</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">A control boundary is active.</td>
</tr>
</table>
<p><img src="delta.gif" alt="Start of change"><strong>Displacement to call stack entry data.</strong>
The displacement in bytes from the beginning of the call stack entry to the specific data for the call stack entry.</p>
<p><strong>Displacement to Java class name.</strong>
The displacement in bytes from the beginning of the call stack entry to the Java class name. This field is zero if no Java class name can be determined.
</p>
<p><strong>Displacement to Java file name/directory.</strong>
The displacement in bytes from the beginning of the call stack entry to the Java file name/directory. This field is zero if no Java file name/directory can be determined.
</p>
<p><strong>Displacement to Java method name.</strong>
The displacement in bytes from the beginning of the call stack entry to the Java method name. This field is if no Java method name can be determined.
</p>
<p><strong>Displacement to Java method signature.</strong>
The displacement in bytes from the beginning of the call stack entry to the Java method signature. This field is if no Java method signature can be determined.
</p>
<p><strong>Displacement to Java source file name.</strong>
The displacement in bytes from the beginning of the call stack entry to the Java source file name. This field is zero if no Java source file name can be determined.
</p>
<p><strong>Displacement to load module name.</strong>
The displacement in bytes from the beginning of the call stack entry to the load module name. This field is zero if no load module name can be determined.
</p>
<p><strong>Displacement to load module path.</strong>
The displacement in bytes from the beginning of the call stack entry to the load module path. This field is zero if no load module path can be determined.
<img src="deltaend.gif" alt="End of change"></p>
<p><strong>Displacement to procedure name.</strong> The displacement in bytes
from the beginning of the call stack entry to the procedure name. This field is
zero <img src="delta.gif" alt="Start of change">if no procedure name can be determined.</p>
<p><strong>Displacement to source path and file.</strong>
The displacement in bytes from the beginning of the call stack entry to the source path and file. This field is zero if no source path and file can be determined.
<img src="deltaend.gif" alt="End of change"></p>
<p><strong>Displacement to statement identifiers.</strong> The displacement in
bytes from the beginning of the call stack entry to the array of statement
identifiers. This field is zero if the number of statement identifiers is
zero.</p>
<p><img src="delta.gif" alt="Start of change"><strong>Format name of call stack entry data.</strong>
The format of the call stack entry data returned for a given stack frame. The possible format names are:</p>
<table cellpadding="5">
<tr>
<td align="left" valign="top"><em>STKE0100</em></td>
<td align="left" valign="top">See <a href="#HDRSTKE0100">STKE0100 Format</a>
for details on the call stack information returned.</td>
</tr>
<tr>
<td align="left" valign="top"><em>STKE0200</em></td>
<td align="left" valign="top">See <a href="#HDRSTKE0200">STKE0200 Format</a>
for details on the call stack information returned.</td>
</tr><tr>
<td align="left" valign="top"><em>STKE0300</em></td>
<td align="left" valign="top">See <a href="#HDRSTKE0300">STKE0300 Format</a>
for details on the call stack information returned.</td>
</tr><tr>
<td align="left" valign="top"><em>STKE0400</em></td>
<td align="left" valign="top">See <a href="#HDRSTKE0400">STKE0400 Format</a>
for details on the call stack information returned.</td>
</tr>
</table>
<img src="deltaend.gif" alt="End of change">
<p><strong>Information status.</strong> Whether the call stack entry
information could be successfully retrieved.</p>
<table cellpadding="5">
<!-- cols="10 90" -->
<tr>
<td align="left" valign="top"><em>blank</em></td>
<td align="left" valign="top">No errors occurred. All information is returned
in each entry.</td>
</tr>
<tr>
<td align="left" valign="top"><em>I</em></td>
<td align="left" valign="top">The information in each entry is not complete.
The request level, control boundary, activation group number and activation
group name fields could not be retrieved. The request level and activation
group number are zero and the control boundary and activation group name are
blank in each entry.</td>
</tr>
<tr>
<td align="left" valign="top"><em>N</em></td>
<td align="left" valign="top">The call stack entry information could not be
retrieved. No entries are returned.</td>
</tr>
</table>
<p><img src="delta.gif" alt="Start of change"><strong>Instruction address.</strong>
The i5/OS PASE memory address for the instruction that will run when execution resumes for the invocation.
</p>
<p><strong>Instruction offset.</strong> The offset in bytes from the beginning of the start of the procedure to the instruction that is either the suspend point for the invocation or the resume point for the invocation.</p>
<p><strong>Java byte code offset.</strong> The offset in bytes from the beginning of the Java method byte codes to the resume point for the invocation. This field is zero if no Java byte code offset can be determined.</p>
<p><strong>Java class name.</strong> The name of the Java class at this level of the call stack.</p>
<p><strong>Java coded character set ID</strong>. The coded character set identifier used to return Java information including the
Java class name, Java method name, Java method signature, Java file name/directory, and Java source file name.</p>
<p><strong>Java file name/directory.</strong> The name of the Java file and directory that provides the location of where the Java class was loaded at this level of the call stack. If the Java class was loaded from a .jar or .zip file, then the location will be the path to and the name of the .jar or .zip file. If the class was loaded from a .class file, then the location will be the directory from which the class was loaded.</p>
<p><strong>Java method name.</strong> The name of the Java method at this level of the call stack.</p>
<p><strong>Java method signature.</strong> The signature of the Java method at this level of the call stack.</p>
<p><strong>Java method type.</strong> The type of Java method. The Java method can only be one of the following types. The possible values are:</p>
<table cellpadding="5">
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">The method is a direct execution Java method. The Java method has been precompiled by the Java Transformer.</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">The method is a JIT compiled Java method. The Java method has been compiled by the Java Just In Time Compiler.</td>
</tr>
<tr>
<td align="left" valign="top"><em>2</em></td>
<td align="left" valign="top">The method is an interpreted Java method. The Java method is being interpreted by the Java Interpreter.</td>
</tr>
<tr>
<td align="left" valign="top"><em>3</em></td>
<td align="left" valign="top">The method is a MMI interpreted Java method. The Java method is being interpreted by the Mixed Mode Java Interpreter.</td>
</tr>
<tr>
<td align="left" valign="top"><em>4</em></td>
<td align="left" valign="top">The invocation is a Java Virtual Machine glue frame used either to perform a call from the JVM to a Java method or perform a call to a Java native method.</td>
</tr>
<tr>
<td align="left" valign="top"><em>blank</em></td>
<td align="left" valign="top">No information.</td>
</tr>
</table>
<p><strong>Java source file name.</strong> The name of the Java source file at this level of the call stack.</p>
<p><strong>Kernel indicator.</strong> Whether the invocation is running PASE for i5/OS kernel code. The possible values are:</p>
<table cellpadding="5">
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">The current invocation is not PASE for i5/OS kernel code.</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">The current invocation is PASE for i5/OS kernel code.</td>
</tr>
<tr>
<td align="left" valign="top"><em>blank</em></td>
<td align="left" valign="top">No information</td>
</tr>
</table>
<p><strong>Length of call stack entry data.</strong> The length of the
stack entry data.</p>
<p><strong>Length of Java class name.</strong> The length of the Java class name. This field is zero if no Java class name can be determined.</p>
<p><strong>Length of Java file name/directory.</strong> The length of the Java file name/directory. This field is if no Java file name/directory can be determined.</p>
<p><strong>Length of Java method name.</strong> The length of the Java method name. This field is zero if no Java method name can be determined.</p>
<p><strong>Length of Java method signature.</strong> The length of the Java method signature. This field is zero if no Java method signature can be determined.</p>
<p><strong>Length of Java source file name.</strong> The length of the Java source file name. This field is if no Java source file name can be determined.</p>
<p><strong>Length of load module name.</strong> The length of the load module name. This field is zero if no load module name can be determined.</p>
<p><strong>Length of load module path.</strong> The length of the load module path. This field is if no load module path can be determined.</p>
<p><strong>Length of procedure name.</strong> The length of the procedure name.
This field is zero <img src="delta.gif" alt="Start of change">if no procedure name can be determined.</p>
<p><strong>Length of source path and file.</strong> The length of the source path and file. This field is zero if no source path and file can be determined.<img src="deltaend.gif" alt="End of change"></p>
<p><strong>Length of this call stack entry.</strong> The length of this call
stack entry.</p>
<p><img src="delta.gif" alt="Start of change"><strong>Line number.</strong>
The line number where the invocation was interrupted. This value is zero if no line number can be determined.
</p>
<p><strong>Load module name.</strong>
The name of the load module at this level of the call stack.
</p>
<p><strong>Load module path.</strong>
The path to the load module at this level of the call stack.
<img src="deltaend.gif" alt="End of change"></p>
<p><strong>MI instruction number.</strong> The current machine instruction
number in the program. This field is not meaningful for integrated language
environment (ILE) procedures. A zero is returned for ILE procedures.</p>
<p><strong>Module library name.</strong> The name of the library in which the
module is located. The following special values may be returned:</p>
<table cellpadding="5">
<!-- cols="10 90" -->
<tr>
<td align="left" valign="top"><em>*N</em></td>
<td align="left" valign="top">The module library name is unavailable. Either
the program has been destroyed or the library containing the program is
locked.</td>
</tr>
<tr>
<td align="left" valign="top"><em>blanks</em></td>
<td align="left" valign="top">The program at this call stack entry is not an
ILE program.</td>
</tr>
</table>
<p><strong>Module name.</strong> The module containing the integrated language
environment (ILE) procedure. The following special values may be returned:</p>
<table cellpadding="5">
<!-- cols="10 90" -->
<tr>
<td align="left" valign="top"><em>*N</em></td>
<td align="left" valign="top">The module name is unavailable. Either the
program has been destroyed or the library containing the program is
locked.</td>
</tr>
<tr>
<td align="left" valign="top"><em>blanks</em></td>
<td align="left" valign="top">The program at this call stack entry is not an
ILE program.</td>
</tr>
</table>
<p><strong>Number of call stack entries for thread.</strong> The number of call
stack entries that are associated with this thread. A zero is returned if the
call stack could not be retrieved.</p>
<p><strong>Number of call stack entries returned.</strong> The number of call
stack entries returned in the receiver variable.</p>
<p><strong>Number of statement identifiers.</strong> The number of statement
identifiers returned. This field is zero if the program or procedure was not
created with debugging tables.</p>
<p><strong>Offset to call stack entry information.</strong> The offset in bytes
from the beginning of the receiver variable to the first call stack entry.</p>
<p><strong>Procedure name.</strong> The name of the procedure at this level of
the call stack.</p>
<p><strong>Program ASP
name.</strong> The name of the auxiliary storage pool (ASP) device in which the
program is located. The following special values also may be returned:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>*SYSBAS</em></td>
<td align="left" valign="top">The program is located in the system ASP or a
basic user ASP.</td>
</tr>
<tr>
<td align="left" valign="top"><em>*N</em></td>
<td align="left" valign="top">The name of the ASP cannot be determined.</td>
</tr>
</table>
<p><strong>Program ASP number.</strong> The numeric identifier of the ASP
containing the program. The following values may be returned:</p>
<table cellpadding="5">
<!-- cols="10 90" -->
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">The library is located in the system ASP.</td>
</tr>
<tr>
<td align="left" valign="top"><em>2-32</em></td>
<td align="left" valign="top">The library is located in a basic user ASP.</td>
</tr>
<tr>
<td align="left" valign="top"><em>33-255</em></td>
<td align="left" valign="top">The library is located in an independent
ASP.</td>
</tr>
<tr>
<td align="left" valign="top"><em>-1</em></td>
<td align="left" valign="top">The ASP device cannot be determined.</td>
</tr>
</table>
<p><strong>Program library ASP name.</strong> The name of the ASP in which the
program library is located. The following special values also may be
returned:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>*SYSBAS</em></td>
<td align="left" valign="top">The program library is located in the system ASP
or a basic user ASP.</td>
</tr>
<tr>
<td align="left" valign="top"><em>*N</em></td>
<td align="left" valign="top">The name of the ASP cannot be determined.</td>
</tr>
</table>
<p><strong>Program library ASP number.</strong> The numeric identifier of the
ASP containing the program library. The following values may be returned:</p>
<table cellpadding="5">
<!-- cols="10 90" -->
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">The library is located in the system ASP or in a
basic user ASP.</td>
</tr>
<tr>
<td align="left" valign="top"><em>2-32</em></td>
<td align="left" valign="top">The library is located in a basic user ASP.</td>
</tr>
<tr>
<td align="left" valign="top"><em>33-255</em></td>
<td align="left" valign="top">The library is located in an independent
ASP.</td>
</tr>
<tr>
<td align="left" valign="top"><em>-1</em></td>
<td align="left" valign="top">The ASP device cannot be determined.</td>
</tr>
</table>
<p><strong>Program library name.</strong> The name of the library in which the
program is located. The following special values may be returned:</p>
<table cellpadding="5">
<!-- cols="10 90" -->
<tr>
<td align="left" valign="top"><em>*N</em></td>
<td align="left" valign="top">The program library name is unavailable. The
library containing the program has been destroyed or is locked.</td>
</tr>
<tr>
<td align="left" valign="top"><em>blanks</em></td>
<td align="left" valign="top">The program is not located in a library.</td>
</tr>
</table>
<p><strong>Program name.</strong> The name of the program at this level of the
call stack. This can be any type
of program object, including objects of type *PGM and *SRVPGM. The following special value may be
returned:</p>
<table cellpadding="5">
<!-- cols="5 95" -->
<tr>
<td align="left" valign="top"><em>*N</em></td>
<td align="left" valign="top">The program is unavailable. Either the program
has been destroyed or the library containing the program is locked.</td>
</tr>
</table>
<p><strong>Request level.</strong> The level of the request-processing program
or procedure. A zero is returned if the program or procedure has not received a
request message.</p>
<p><strong>Reserved.</strong> An unused field.</p>
<p><strong>Returned thread identifier.</strong> A value which uniquely
identifies the thread within the job.</p>
<p><img src="delta.gif" alt="Start of change"><strong>Source path and file.</strong>
The path and name for the source file used to create the procedure.
<img src="deltaend.gif" alt="End of change"></p>
<p><strong>Statement identifiers.</strong> The high-level language statement
identifier. If this field contains the character representation of a number,
the number is right-adjusted in the field and padded on the left with zeros
(for example, '0000000246'). If the call stack entry is for an integrated
language environment (ILE) procedure, more than one statement identifier may
exist because of the compilers used for ILE languages.</p>
<br>
<h3><a name="HDRXXCSTK2">Format of job identification information</a></h3>
<p>The format of the information needed to identify the thread for which call
stack information will be returned.</p>
<br>
<h3><a name="HDR_JIDF0100">JIDF0100 Format</a></h3>
<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">10</td>
<td align="center" valign="top">A</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">User name</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="center" valign="top">14</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Job number</td>
</tr>
<tr>
<td align="center" valign="top">26</td>
<td align="center" valign="top">1A</td>
<td align="left" valign="top">CHAR(16)</td>
<td align="left" valign="top">Internal job identifier</td>
</tr>
<tr>
<td align="center" valign="top">42</td>
<td align="center" valign="top">2A</td>
<td align="left" valign="top">CHAR(2)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">44</td>
<td align="center" valign="top">2C</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Thread indicator</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">Thread identifier</td>
</tr>
</table>
<br>
<br>
<h3><a name="Header_7">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 blanks. With this
parameter, the system can locate the job more quickly than with a job name.</p>
<p><strong>Job name.</strong> A specific job name or one of the following
special values:</p>
<table cellpadding="5">
<!-- cols="10 90" -->
<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 blanks.</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 blanks.</td>
</tr>
</table>
<p><strong>Job number.</strong> A specific job number, or blanks when the job
name specified is a special value.</p>
<p><strong>Reserved.</strong> An unused field. This field must contain
hexadecimal zeros.</p>
<p><strong>Thread identifier.</strong> A value which uniquely identifies a
thread within a job. If the thread indicator is not 0, this field must contain
hex zeros.</p>
<p><strong>Thread indicator.</strong> A value which is used to specify the
thread within the job for which information is to be retrieved. The following
values are supported:</p>
<table cellpadding="5">
<!-- cols="5 95" -->
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">Specifies that information should be retrieved
for the thread specified in the thread identifier field.</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">Specifies that information should be retrieved
for the thread that this program is currently running in. The combination of
the internal job identifier, job name, job number, and user name fields must
also identify the job containing the current thread.</td>
</tr>
<tr>
<td align="left" valign="top"><em>2</em></td>
<td align="left" valign="top">Specifies that information should be retrieved
for the initial thread of the identified job.</td>
</tr>
</table>
<p><strong>User name.</strong> A specific user profile name, or blanks when the
job name specified is a special value.</p>
<br>
<h3><a name="HDR_JIDF0200">JIDF0200 Format</a></h3>
<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">10</td>
<td align="center" valign="top">A</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">User name</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="center" valign="top">14</td>
<td align="left" valign="top">CHAR(6)</td>
<td align="left" valign="top">Job number</td>
</tr>
<tr>
<td align="center" valign="top">26</td>
<td align="center" valign="top">1A</td>
<td align="left" valign="top">CHAR(16)</td>
<td align="left" valign="top">Internal job identifier</td>
</tr>
<tr>
<td align="center" valign="top">42</td>
<td align="center" valign="top">2A</td>
<td align="left" valign="top">CHAR(2)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">44</td>
<td align="center" valign="top">2C</td>
<td align="left" valign="top">BINARY(4), UNSIGNED</td>
<td align="left" valign="top">Thread handle</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">Thread identifier</td>
</tr>
</table>
<br>
<br>
<h3>Field Descriptions</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 blanks. With this
parameter, the system can locate the job more quickly than with a job name.</p>
<p><strong>Job name.</strong> A specific job name or one of the following
special values:</p>
<table cellpadding="5">
<!-- cols="10 90" -->
<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 blanks.</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 blanks.</td>
</tr>
</table>
<p><strong>Job number.</strong> A specific job number, or blanks when the job
name specified is a special value.</p>
<p><strong>Reserved.</strong> An unused field. This field must contain
hexadecimal zeros.</p>
<p><strong>Thread handle.</strong> A value which addresses a particular thread
within a job. While the thread identifier uniquely identifies the thread within
the job, the thread handle can improve performance when referencing the thread.
A valid thread handle must be specified. The thread handle is returned on
several other interfaces.</p>
<p><strong>Thread identifier.</strong> A value which uniquely identifies a
thread within a job. A valid thread identifier must be specified.</p>
<p><strong>User name.</strong> A specific user profile name, or blanks when the
job name specified is a special value.</p>
<br>
<h3>Error Messages</h3>
<table width="100%" cellpadding="5">
<!-- cols="15 85" -->
<tr>
<th align="left" valign="top" nowrap>Message ID</th>
<th align="left" valign="top">Error Message Text</th>
</tr>
<tr>
<td align="left" valign="top">CPF136A E</td>
<td align="left" valign="top">Job &amp;3/&amp;2/&amp;1 not
active.</td>
</tr>
<tr>
<td align="left" valign="top">CPF18BF E</td>
<td align="left" valign="top">Thread &amp;1 not found.</td>
</tr>
<tr>
<td align="left" valign="top"><img src="delta.gif" alt="Start of change">CPF222E E</td>
<td align="left" valign="top">&amp;1 special authority is required.
<img src="deltaend.gif" alt="End of change"></td>
</tr>
<tr>
<td align="left" valign="top">CPF24B4 E</td>
<td align="left" valign="top">Severe error while addressing parameter
list.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3CF1 E</td>
<td align="left" valign="top">Error code parameter not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3CF2 E</td>
<td align="left" valign="top">Error(s) occurred during running of &amp;1
API.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3C19 E</td>
<td align="left" valign="top">Error occurred with receiver variable
specified.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3C21 E</td>
<td align="left" valign="top">Format name &amp;1 is not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3C24 E</td>
<td align="left" valign="top">Length of the receiver variable is not
valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3C3B E</td>
<td align="left" valign="top">Value for parameter &amp;2 for API &amp;1 not
valid</td>
</tr>
<tr>
<td align="left" valign="top">CPF3C3C E</td>
<td align="left" valign="top">Value for parameter &amp;1 not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3C51 E</td>
<td align="left" valign="top">Internal job identifier not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3C52 E</td>
<td align="left" valign="top">Internal job identifier no longer valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3C53 E</td>
<td align="left" valign="top">Job &amp;3/&amp;2/&amp;1 not found.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3C55 E</td>
<td align="left" valign="top">Job &amp;3/&amp;2/&amp;1 does not exist.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3C57 E</td>
<td align="left" valign="top">Not authorized to retrieve job information.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3C58 E</td>
<td align="left" valign="top">Job name specified is not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3C59 E</td>
<td align="left" valign="top">Internal identifier is not blanks and job name is
not *INT.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3C90 E</td>
<td align="left" valign="top">Literal value cannot be changed.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9872 E</td>
<td align="left" valign="top">Program or service program &amp;1 in library
&amp;2 ended. Reason code &amp;3.</td>
</tr>
</table>
<br>
<hr>
API introduced: V5R1
<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>