976 lines
30 KiB
HTML
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>
|
||
|
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>
|
||
|
QSYSINC Member Name: ETEPGMST<br>
|
||
|
<!-- iddvc RMBR -->
|
||
|
<br>
|
||
|
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"> </td>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="left" valign="top">CHAR(*)</td>
|
||
|
<td align="left" valign="top">Reserved</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="center" valign="top"> </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"> </td>
|
||
|
<td align="center" valign="top"> </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"> </td>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="left" valign="top">CHAR(*)</td>
|
||
|
<td align="left" valign="top">Reserved</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="center" valign="top"> </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"> </td>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="left" valign="top">CHAR(*)</td>
|
||
|
<td align="left" valign="top">Interrupt procedure name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="center" valign="top"> </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>
|
||
|
|