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

976 lines
30 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>Program-Stop Handler Exit Program</title>
<!-- 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. -->
<!-- Begin Header Records ========================================== -->
<!-- DEBUG1 SCRIPT A converted by B2H R4.1 (346) (CMS) by V2KEA304 -->
<!-- at RCHVMW2 on 29 Jan 1999 at 16:05:09 -->
<!--File Edited November 2001 -->
<!--End Header Records -->
<link rel="stylesheet" type="text/css" href="../rzahg/ic.css">
</head>
<body>
<a name="top_Of_Page"></a>
<!-- Java sync-link -->
<script language="Javascript" src="../rzahg/synch.js" type="text/javascript">
</script>
<h2>Program-Stop Handler Exit Program</h2>
<div class="box" style="width: 60%;">
<br>
&nbsp;&nbsp;Required Parameter Group:<br>
<!-- iddvc RMBR -->
<br>
<table width="100%">
<tr>
<td align="center" valign="top" width="10%">1</td>
<td align="left" valign="top" width="40%">Qualified program name</td>
<td align="left" valign="top" width="20%">Input</td>
<td align="left" valign="top" width="30%">Char(20) or Char(*)</td>
</tr>
<tr>
<td align="center" valign="top">2</td>
<td align="left" valign="top">Program type</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(10)</td>
</tr>
<tr>
<td align="center" valign="top">3</td>
<td align="left" valign="top">Module name</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(10)</td>
</tr>
<tr>
<td align="center" valign="top">4</td>
<td align="left" valign="top">Stop reason</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(10)</td>
</tr>
<tr>
<td align="center" valign="top">5</td>
<td align="left" valign="top">Receiver variable</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(*)</td>
</tr>
<tr>
<td align="center" valign="top">6</td>
<td align="left" valign="top">Number of entries</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Binary(4)</td>
</tr>
<tr>
<td align="center" valign="top">7</td>
<td align="left" valign="top">Message data</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(*)</td>
</tr>
</table>
<br>
&nbsp;&nbsp;QSYSINC Member Name: ETEPGMST<br>
<!-- iddvc RMBR -->
<br>
&nbsp;&nbsp;Threadsafe: No<br>
<!-- iddvc RMBR -->
<br>
</div>
<p>The Program-Stop Handler exit program is a user-written program that handles
program-stop conditions.</p>
<p>This program must be identified to the Source Debugger support with the
Start Source Debug (QteStartSourceDebug) API.</p>
<p>Breakpoint- and step-program stop conditions are reported using stop reasons
2, 3, and 4. The location at which the program-stop condition occurred is
specified in the receiver variable parameter and is in terms of the statement
view. The user-supplied program may use the Map View Position
(QteMapViewPosition) API to determine the location to which this program maps
any other registered view.</p>
<p>Watch-program stop conditions are reported using stop reasons 5 and 6. For
watch-program stop conditions, the program stopped might not have debug data.
In this case, the machine interface (MI) number is reported for OPM programs
and the statement number is reported for ILE programs and Java class files. If
the program can be debugged, the line number in the statement view is reported
for OPM programs, ILE programs, and Java class files. Other information is also
included in the receiver variable to identify the program that caused the watch
condition to be satisfied.</p>
<p>Unmonitored-exception-program stop conditions are represented through stop
reason 1. Unmonitored exceptions are reported through this exit program only
when the program and module identified have been created with debug data.
Without debugging data, the message that is the cause of the unmonitored
exception is issued, and the Program-Stop Handler exit program is not
called.</p>
<p>When a job being debugged by a servicing job is stopped by the
QteStopDebuggedJob API, reason code 7 is reported. When this reason code is
reported, none of the other input parameters are used and can be ignored.</p>
<p>Debugging of threaded jobs is enabled by the thread ID field that is
contained in the parameters passed to the stop handler. Threads debugging is
supported if a service job is used to debug a job that was spawned by native
threads support. For nonthreaded applications, the thread ID passed will always
be that of the initial job thread.</p>
<br>
<!-- Please NOTE: DO NOT DELETE THIS SECTION if this API has no authorities and locks. -->
<!-- Instead, use the commented out coding below to indicate NONE. -->
<h3>Authorities and Locks</h3>
<!-- Use this if there are no authorities and locks. -->
<p>None.</p>
<br>
<h3>Required Parameter Group</h3>
<dl>
<dt><strong>Qualified program name</strong></dt>
<dd>INPUT; CHAR(20) or CHAR(*)
<p>The format of this parameter is dependent on the program type parameter. If
the program type is *PGM or *SRVPGM, the format of this parameter is as
follows:</p>
<p>The name of the program that is stopped as a result of a breakpoint, program
step, or unmonitored exception. This parameter may also be the name of the
program that is stopped because a watch condition has been satisfied.</p>
<p>The first 10 characters contain the name of the program. The second 10
characters contain the name of the library where the program is located. Each
name is left-justified.</p>
<p>If the program type is *CLASS, the format of this parameter is as
follows:</p>
<p>The null-terminated class file name of the JAVA class.</p>
</dd>
<dt><strong>Program type</strong></dt>
<dd>INPUT; CHAR(10)
<p>The object type of the program that is stopped. The possible values are:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>*PGM</em></td>
<td align="left" valign="top">Bound program or OPM program</td>
</tr>
<tr>
<td align="left" valign="top"><em>*SRVPGM</em></td>
<td align="left" valign="top">Service program</td>
</tr>
<tr>
<td align="left" valign="top"><em>*CLASS</em></td>
<td valign="top">JAVA class file</td>
</tr>
</table>
<br>
</dd>
<dt><strong>Module name</strong></dt>
<dd>INPUT; CHAR(10)
<p>The name of the module (left-justified) that is stopped. The value of this
field is blank for OPM programs and JAVA class files.</p>
</dd>
<dt><strong>Stop reason</strong></dt>
<dd>INPUT; CHAR(10)
<p>The reason the program was called. Each character of this parameter has a
specific meaning. The characters and their meanings are:</p>
<table cellpadding="5">
<!-- cols="10 90" -->
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">This reason is set when an unmonitored exception is received
by the program being serviced by the source debugger support.
<table cellpadding="5">
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">No unmonitored exception</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">Unmonitored exception</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left" valign="top"><em>2</em></td>
<td align="left" valign="top">The program stopped because an unconditional or conditional
breakpoint was satisfied.
<table cellpadding="5">
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">No break condition</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">Break condition</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left" valign="top"><em>3</em></td>
<td align="left" valign="top">The program stopped because a step condition was reached.
<table cellpadding="5">
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">No step condition</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">Step condition</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left" valign="top"><em>4</em></td>
<td align="left" valign="top">The program stopped because a conditional breakpoint was set
and there was a failure in running the condition. The program is stopped at the
break position specified.
<table cellpadding="5">
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">No break condition failure</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">Break condition failure</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left" valign="top"><em>5</em></td>
<td align="left" valign="top">The program stopped because a watch condition set with the
watch debug statement was satisfied.
<table cellpadding="5">
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">No watch condition</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">Watch condition</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left" valign="top"><em>6</em></td>
<td align="left" valign="top">The program stopped because there was a failure in processing
the watch condition.
<table cellpadding="5">
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">No watch condition failure</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">Watch condition failure</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left" valign="top"><em>7</em></td>
<td align="left" valign="top">The debugged job being serviced was stopped by the
QteStopDebuggedJob API.
<table cellpadding="5">
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">Debugged job not stopped</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">Debugged job stopped</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left" valign="top" nowrap><em>8-10</em></td>
<td align="left" valign="top">Reserved. These characters are set to 0.</td>
</tr>
</table>
<br>
</dd>
<dt><strong>Receiver variable</strong></dt>
<dd>INPUT; CHAR(*)
<p><strong>Stop Reasons 1, 2, 3, 4:</strong></p>
<blockquote>
<p>If only stop reason 1, 2, 3, or 4 is present, the following receiver
variable format is passed:</p>
<p>A list of locations within the statement view where the program stop
condition occurred. This list contains the number of entries where each number
is defined as follows:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top" nowrap><em>Stopped locations</em></td>
<td align="left" valign="top">Array of BINARY(4)<br>
The line number in the statement view where the program is stopped.</td>
</tr>
<tr>
<td align="left" valign="top"><em>Thread ID</em></td>
<td align="left" valign="top">CHAR(8)<br>
The thread identification of the thread where the program is stopped. This
value immediately follows the last stopped location.</td>
</tr>
</table>
</blockquote>
<p><strong>Stop Reasons 5, 6:</strong></p>
<blockquote>
<p>Whenever stop reason 5 or 6 is present (other stop reasons can be present
also), the following receiver variable format is passed:</p>
<p>Information about the watch stop condition, including the program stopped
and the program that caused the watch condition to be satisfied. See <a href=
"#HDRSRWCH">Format of Watch-Program Stop Reason for Receiver Variable</a>.</p>
</blockquote>
<p><strong>Stop Reason 7:</strong></p>
<blockquote>
<p>For stop reason 7, the receiver variable parameter is not used and can be
ignored.</p>
</blockquote>
</dd>
<dt><strong>Number of entries</strong></dt>
<dd>INPUT; BINARY(4)
<p>The number of positions stored in the receiver variable parameter. In some
cases, it is not known exactly where a program is stopped; therefore, multiple
positions are given. Each entry specifies one position in the statement view.
This number is not less than one nor greater than three. At least one stopped
position will be identified; if stopped at more than one position, no more than
the first three positions are made available.</p>
<p>This parameter is valid when stop reason 1, 2, 3, or 4 is the only reason
present (stop reason 5 or 6 cannot be present). If stop reason 5 or 6 is
present, the receiver variable contains the equivalent number of stopped
locations parameter.</p>
</dd>
<dt><strong>Message data</strong></dt>
<dd>INPUT; CHAR(*)
<p>Information about the message. The information in this parameter is valid
only when the stop reason specified is an unmonitored exception. For a detailed
description of the format, see <a href="#HDRFOMSGD">Format of Message
Data</a>.</p>
</dd>
</dl>
<br>
<h3><a name="HDRSRWCH">Format of Watch-Program Stop Reason for Receiver
Variable</a></h3>
<p>The following table shows the information supplied in the receiver variable
parameter when a stop reason of 5 or 6 is present. For more information on the
fields, see <a href="#HDRSRWCH1">Field Descriptions</a>.</p>
<br>
<h3><a name="Header_247">Watch Receiver Variable Header</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%">BINARY(4)</td>
<td align="left" valign="top" width="60%">Watch number</td>
</tr>
<tr>
<td align="center" valign="top">4</td>
<td align="center" valign="top">4</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Offset to stopped program information</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">Offset to watch interrupt information</td>
</tr>
</table>
<br>
<br>
<h3><a name="Header_248">Watch Stopped Program Information</a></h3>
<p>The following table shows the stopped program information that is supplied
in the receiver variable parameter. This data structure is accessible by adding
the offset to stopped program information field in the receiver variable header
to the address of the receiver variable.</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%">Offset to stopped procedure name</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">Length of stopped procedure name</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">Offset to stopped locations</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 stopped locations</td>
</tr>
<tr>
<td align="center" valign="top">16</td>
<td align="center" valign="top">10</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Stopped locations flag</td>
</tr>
<tr>
<td align="center" valign="top">17</td>
<td align="center" valign="top">11</td>
<td align="left" valign="top">CHAR(3)</td>
<td align="left" valign="top">Reserved</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">Thread ID</td>
</tr>
<tr>
<td align="center" valign="top">&nbsp;</td>
<td align="center" valign="top">&nbsp;</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">&nbsp;</td>
<td align="center" valign="top">&nbsp;</td>
<td align="left" valign="top">Array of BINARY(4)</td>
<td align="left" valign="top">Stopped locations</td>
</tr>
<tr>
<td align="center" valign="top">&nbsp;</td>
<td align="center" valign="top">&nbsp;</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Stopped procedure name</td>
</tr>
</table>
<br>
<br>
<h3><a name="Header_249">Watch Interrupt Information</a></h3>
<p>The following table shows the watch-interrupt information that is supplied
in the receiver variable parameter. This data structure is accessible by adding
the offset to watch interrupt information field in the receiver variable header
to the address of the receiver variable.</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(26)</td>
<td align="left" valign="top" width="60%">Qualified interrupt job name</td>
</tr>
<tr>
<td align="center" valign="top">26</td>
<td align="center" valign="top">1A</td>
<td align="left" valign="top">CHAR(20)</td>
<td align="left" valign="top">Qualified interrupt program name</td>
</tr>
<tr>
<td align="center" valign="top">46</td>
<td align="center" valign="top">2E</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Interrupt program type</td>
</tr>
<tr>
<td align="center" valign="top">56</td>
<td align="center" valign="top">38</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Interrupt module name</td>
</tr>
<tr>
<td align="center" valign="top">66</td>
<td align="center" valign="top">42</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Interrupt locations flag</td>
</tr>
<tr>
<td align="center" valign="top">67</td>
<td align="center" valign="top">43</td>
<td align="left" valign="top">CHAR(1)</td>
<td align="left" valign="top">Reserved</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">Offset to interrupt procedure name</td>
</tr>
<tr>
<td align="center" valign="top">72</td>
<td align="center" valign="top">48</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of interrupt procedure name</td>
</tr>
<tr>
<td align="center" valign="top">76</td>
<td align="center" valign="top">4C</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Offset to interrupt locations</td>
</tr>
<tr>
<td align="center" valign="top">80</td>
<td align="center" valign="top">50</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Number of interrupt locations</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">Thread ID</td>
</tr>
<tr>
<td align="center" valign="top">92</td>
<td align="center" valign="top">5C</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Offset to interrupt class file name</td>
</tr>
<tr>
<td align="center" valign="top">96</td>
<td align="center" valign="top">60</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of interrupt class file name</td>
</tr>
<tr>
<td align="center" valign="top">&nbsp;</td>
<td align="center" valign="top">&nbsp;</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">&nbsp;</td>
<td align="center" valign="top">&nbsp;</td>
<td align="left" valign="top">Array of BINARY(4)</td>
<td align="left" valign="top">Interrupt locations</td>
</tr>
<tr>
<td align="center" valign="top">&nbsp;</td>
<td align="center" valign="top">&nbsp;</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Interrupt procedure name</td>
</tr>
<tr>
<td align="center" valign="top">&nbsp;</td>
<td align="center" valign="top">&nbsp;</td>
<td align="left" valign="top">CHAR(*)</td>
<td align="left" valign="top">Interrupt class file name</td>
</tr>
</table>
<br>
<br>
<h3><a name="HDRSRWCH1">Field Descriptions</a></h3>
<p><strong>Interrupt class file name.</strong> The Java class file name of the
Java class containing the locations that caused the watch condition to be
satisfied. For OPM and ILE programs, the Java class file name is not
returned.</p>
<p><strong>Interrupt locations.</strong> A list of locations, of the type
described by the interrupt locations flag, that caused the watch condition to
be satisfied.</p>
<p><strong>Interrupt locations flag.</strong> The type of the locations in the
interrupt locations field. All locations are of the same type.</p>
<table cellpadding="5">
<!-- cols="5 95" -->
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">Line number in statement view</td>
</tr>
<tr>
<td align="left" valign="top"><em>2</em></td>
<td align="left" valign="top">Statement number</td>
</tr>
<tr>
<td align="left" valign="top"><em>3</em></td>
<td align="left" valign="top">MI number</td>
</tr>
</table>
<p><strong>Interrupt module name.</strong> The name of the module
(left-justified) in the program that caused the watch condition to be
satisfied. The value of this field is blank for OPM programs and JAVA class
files.</p>
<p><strong>Interrupt procedure name.</strong> The procedure name of the
procedure that contains the program locations that caused the watch condition
to be satisfied. For OPM programs the procedure name is not returned.</p>
<p><strong>Interrupt program type.</strong> The object type of the program that
caused the watch condition to be satisfied. The possible values follow:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>*PGM</em></td>
<td align="left" valign="top">Bound program or OPM program</td>
</tr>
<tr>
<td align="left" valign="top"><em>*SRVPGM</em></td>
<td align="left" valign="top">Service program</td>
</tr>
<tr>
<td align="left" valign="top"><em>*CLASS</em></td>
<td align="left" valign="top">JAVA class file</td>
</tr>
</table>
<p><strong>Length of interrupt class file name.</strong> The length of the
interrupt class file name. This field is zero if there is no interrupt class
file name available (for example, OPM and ILE programs).</p>
<p><strong>Length of interrupt procedure name.</strong> The length of the
interrupt procedure name. This field is zero if there is no interrupt procedure
name available (for example, OPM programs).</p>
<p><strong>Length of stopped procedure name.</strong> The length of the stopped
procedure name. This field is zero if there is no stopped procedure name
available (for example, OPM programs).</p>
<p><strong>Number of interrupt locations.</strong> The number of locations in
the program that caused the watch condition to be satisfied. At most, three
locations are returned.</p>
<p><strong>Number of stopped locations.</strong> The number of stopped program
locations. At most, three stop locations are returned.</p>
<p><strong>Offset to interrupt class file name.</strong> The offset from the
start of the receiver variable to the name of the Java class file containing
the location that caused the watch condition to be satisfied. The field is zero
if there is no interrupt class file name available (for example, OPM and ILE
programs).</p>
<p><strong>Offset to interrupt locations.</strong> The offset from the start of
the receiver variable to the list of locations in the program that caused the
watch condition to be satisfied.</p>
<p><strong>Offset to interrupt procedure name.</strong> The offset from the
start of the receiver variable to the name of the procedure that contains the
program location that caused the watch condition to be satisfied. This field is
zero if there is no interrupt procedure name available (for example, OPM
programs).</p>
<p><strong>Offset to stopped locations.</strong> The offset from the start of
the receiver variable to the stopped program location entries.</p>
<p><strong>Offset to stopped procedure name.</strong> The offset from the start
of the receiver variable to the name of the procedure that contains the stopped
program location. This field is zero if there is no stopped procedure name
available (for example, OPM programs).</p>
<p><strong>Offset to stopped program information.</strong> The offset from the
start of the receiver variable to the stop information for the program that is
stopped as a result of the watch condition being satisfied.</p>
<p><strong>Offset to watch interrupt information.</strong> The offset from the
start of the receiver variable to the watch interrupt information. This data
structure describes the program that caused the interruption.</p>
<p><strong>Qualified interrupt job name.</strong> The name of the job that
caused the watch condition to be satisfied. The first 10 characters contain the
job name. The second 10 characters contain the user profile name. The next 6
characters contain the job number. Each name is left-justified.</p>
<p><strong>Note:</strong> This field is the same as the name of the job being
debugged. Watch program interruptions in other jobs are ignored.</p>
<p><strong>Qualified interrupt program name.</strong> The name of the program
that caused the watch condition to be satisfied. The first 10 characters
contain the name of the program. The second 10 characters contain the name of
the library where the program is located. Each name is left-justified. The
value of this field is blank for Java class files.</p>
<p><strong>Reserved.</strong> An ignored field.</p>
<p><strong>Stopped locations.</strong> A list of locations, of the type
described by the stop location flag, where the program stop condition
occurred.</p>
<p><strong>Stopped locations flag.</strong> The type of the locations in the
stop locations field. All stop locations are of the same type.</p>
<table cellpadding="5">
<!-- cols="5 95" -->
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">Line number in the statement view</td>
</tr>
<tr>
<td align="left" valign="top"><em>2</em></td>
<td align="left" valign="top">Statement number</td>
</tr>
<tr>
<td align="left" valign="top"><em>3</em></td>
<td align="left" valign="top">MI number</td>
</tr>
</table>
<p><strong>Stopped procedure name.</strong> The name of the procedure that
contains the stopped locations. For OPM programs the procedure name is not
returned.</p>
<p><strong>Thread ID.</strong> This is an 8-byte thread identification that is
assigned by the system. It identifies the thread associated with the stopped or
interrupt locations fields.</p>
<p><strong>Watch number.</strong> The watch number identifier of the watch
condition being satisfied. This is the same number that is returned by the
Submit Debug Command API when the watch condition was set.</p>
<br>
<h3><a name="HDRFOMSGD">Format of Message Data</a></h3>
<p>The following table shows the information supplied in the message data
parameter. For more information on the fields, see <a href="#HDRDBUG1">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%">Length of message data</td>
</tr>
<tr>
<td align="center" valign="top">4</td>
<td align="center" valign="top">4</td>
<td align="left" valign="top">CHAR(7)</td>
<td align="left" valign="top">Message ID</td>
</tr>
<tr>
<td align="center" valign="top">11</td>
<td align="center" valign="top">B</td>
<td align="left" valign="top">CHAR(20)</td>
<td align="left" valign="top">Message file</td>
</tr>
<tr>
<td align="center" valign="top">31</td>
<td align="center" valign="top">1F</td>
<td align="left" valign="top">CHAR(1)</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(512)</td>
<td align="left" valign="top">Message data</td>
</tr>
</table>
<br>
<br>
<h3><a name="HDRDBUG1">Field Descriptions</a></h3>
<p><strong>Length of message data.</strong> The length of the data available in
the message data parameter, in bytes. This field contains the length of the
available message data for the predefined message indicated in the message ID
field.</p>
<p><strong>Message data.</strong> The values for substitution variables in the
predefined message specified in the message ID field and located in the message
file field.</p>
<p><strong>Message file.</strong> The name of the message file that contains
the message identified in the message ID field.</p>
<p>The first 10 characters contain the message file name. The second 10
characters contain the name of the library where the file can be located. Both
entries are left-justified.</p>
<p><strong>Message ID.</strong> The identifying code of the message.</p>
<p><strong>Reserved.</strong> An ignored field.</p>
<hr>
Exit program introduced: V2R3
<hr>
<table align="center" cellpadding="2" cellspacing="2">
<tr align="center">
<td valign="middle" align="center"><a href="#top_Of_Page">Top</a> | <a href=
"debug1.htm">Debugger APIs</a> | <a href="aplist.htm">APIs by category</a></td>
</tr>
</table>
</body>
</html>