3837 lines
106 KiB
HTML
3837 lines
106 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>Submit Debug Command (QteSubmitDebugCommand) 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. -->
|
|
<!-- DEBUG1 SCRIPT A converted by B2H R4.1 (346) (CMS) by V2KEA304 -->
|
|
<!-- at RCHVMW2 on 29 Jan 1999 at 16:05:09 -->
|
|
<!-- Change History: -->
|
|
<!-- reason author date comment -->
|
|
<!-- P9933041 gettler 09/15/2000 Exception in EVAL Java StringF -->
|
|
<!-- D9778400 gettler 11/07/2000 Teraspace Pointer Support -->
|
|
<!-- D9878800 elliott 08/02/2001 Multiple job debug support -->
|
|
<!-- D9300900 campbell 06/18/2004 4-byte string formatting (:w) -->
|
|
<!-- D9300800 gettler 12/20/2004 Localvars support -->
|
|
<!-- GIF files included are: RBAFX637 through 645, 655, 660, and 661 -->
|
|
<!-- 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>Submit Debug Command (QteSubmitDebugCommand) API</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="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">View ID</td>
|
|
<td align="left" valign="top">Input</td>
|
|
<td align="left" valign="top">Binary(4)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">4</td>
|
|
<td align="left" valign="top">Input buffer</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">Input buffer length</td>
|
|
<td align="left" valign="top">Input</td>
|
|
<td align="left" valign="top">Binary(4)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">6</td>
|
|
<td align="left" valign="top">Compiler ID</td>
|
|
<td align="left" valign="top">Input</td>
|
|
<td align="left" valign="top">Char(20)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">7</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>
|
|
Service Program Name: QTEDBGS<br>
|
|
<!-- iddvc RMBR -->
|
|
<br>
|
|
Default Public Authority: *USE<br>
|
|
<!-- iddvc RMBR -->
|
|
<br>
|
|
Threadsafe: No<br>
|
|
<!-- iddvc RMBR -->
|
|
<br>
|
|
</div>
|
|
|
|
<p>The Submit Debug Command (QteSubmitDebugCommand) API allows a client program
|
|
to issue debug language statements. Debug language statements permit client
|
|
programs to enter breakpoints, run one or more statements of the program under
|
|
investigation (step), and evaluate expressions. Watch conditions may also be
|
|
entered to cause a breakpoint when the contents at a specified storage location
|
|
are changed.</p>
|
|
|
|
<br>
|
|
<img src="delta.gif" alt="Start of change">
|
|
<h3>Authorities and Locks</h3>
|
|
<p>None.</p>
|
|
<br>
|
|
<img src="deltaend.gif" alt="End of change">
|
|
<h3>Required Parameter Group</h3>
|
|
|
|
<dl>
|
|
<dt><strong>Receiver variable</strong></dt>
|
|
|
|
<dd>OUTPUT; CHAR(*)
|
|
|
|
<p>The variable that is to receive the results of the Submit Debug Command API.
|
|
For more information on the structure of the receiver variable, see <a href=
|
|
"#TBLDLTB03">Variations in Receiver Variable Structure</a>.</p>
|
|
|
|
<p>The Submit Debug Command API may have more data to return than can be stored
|
|
in the receiver variable. The bytes available field, described in
|
|
Variations in Receiver Variable Structure, specifies how large
|
|
the receiver variable must be to contain the results for the Debug Language
|
|
statements submitted. If more data is available than the receiver variable can
|
|
contain, a larger buffer should be provided and the API should be reissued.</p>
|
|
</dd>
|
|
|
|
<dt><strong>Length of receiver variable</strong></dt>
|
|
|
|
<dd>INPUT; BINARY(4)
|
|
|
|
<p>The length of the receiver variable. If the length is larger than the size
|
|
of the receiver variable, the results may not be predictable. The minimum
|
|
length is 8 bytes.</p>
|
|
</dd>
|
|
|
|
<dt><strong>View ID</strong></dt>
|
|
|
|
<dd>INPUT; BINARY(4)
|
|
|
|
<p>An identifier of a view of a module whose operation is managed by the source
|
|
debugger. The view ID is returned as a result of issuing the Register Debug
|
|
View API. The view ID is used to find debug data associated with the
|
|
module.</p>
|
|
</dd>
|
|
|
|
<dt><strong>Input buffer</strong></dt>
|
|
|
|
<dd>INPUT; CHAR(*)
|
|
|
|
<p>The input variable that is passed to the Submit Debug Command API. The
|
|
information passed in the buffer is debug language statements.</p>
|
|
</dd>
|
|
|
|
<dt><strong>Input buffer length</strong></dt>
|
|
|
|
<dd>INPUT; BINARY(4)
|
|
|
|
<p>The length of the data provided in the input buffer.</p>
|
|
</dd>
|
|
|
|
<dt><strong>Compiler ID</strong></dt>
|
|
|
|
<dd>INPUT; CHAR(20)
|
|
|
|
<p>The compiler ID of the compiler that produced the module being debugged.
|
|
This information is used by the debug translator during expression evaluation.
|
|
The compiler ID is returned by the Retrieve Module Views
|
|
(QteRetrieveModuleViews) API.</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>Receiver Variable Format</h3>
|
|
|
|
<p>The following table shows the structure of the receiver variable. For more
|
|
information on the fields contained in the table, see <a href="#HDRFIRST">Field
|
|
Descriptions</a>.</p>
|
|
|
|
<p><strong><a name="TBLDLTB02">Receiver Variable Structure</a></strong></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">Entry count</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">12</td>
|
|
<td align="center" valign="top">C</td>
|
|
<td align="left" valign="top">CHAR(*)</td>
|
|
<td align="left" valign="top">Results array</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">String space</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<h3><a name="HDRFIRST">Field Descriptions</a></h3>
|
|
|
|
<p><strong>Bytes available.</strong> The number of bytes of data available to
|
|
be returned. All available data is returned if enough space is provided.</p>
|
|
|
|
<p><strong>Bytes returned.</strong> The number of bytes of data returned.</p>
|
|
|
|
<p><strong>Entry count.</strong> The number of entries in the results array.
|
|
The value of the field is the number of entries in the results array. Each
|
|
entry occupies 12 bytes. Depending on the kind of information returned, values
|
|
in entries vary.</p>
|
|
|
|
<p><strong>Results array.</strong> The results of interpreting debug language
|
|
statements. This is an array of records having similar structures. Each record
|
|
in the array occupies 12 bytes. There can be up to three fields in each record.
|
|
Each field occupies 4 bytes and can be interpreted as an unsigned (nonnegative)
|
|
integer. The first field in a record is the result type field and is used to
|
|
select the remaining fields. Entries in the result record array fall into
|
|
several classes. <a href="#TBLDLTB03">Variations in Receiver Variable Structure</a>
|
|
depicts several formats of result records.</p>
|
|
|
|
<p>Statements are interpreted sequentially and the results of each statement
|
|
are placed in the order in which statements appear in the input buffer. The
|
|
evaluate statement can return many values if an array or a structure is
|
|
evaluated. The entry count field contains the number of entries in the results
|
|
array, and the structure of each entry is summarized in <a href="#TBLDLTB03">
|
|
Variations in Receiver Variable Structure</a>.</p>
|
|
|
|
<p><strong>String space.</strong> A sequence of strings. Each string is an
|
|
array of characters whose last character is a null character.</p>
|
|
|
|
<br>
|
|
<h3>Description of the Structure of the Receiver Variable</h3>
|
|
|
|
<p>Variations in Receiver Variable Structure illustrates
|
|
three possible variations in the structure of the receiver variable. The receiver
|
|
variable consists of the following structures:</p>
|
|
|
|
<ul>
|
|
<li>A header record<br>
|
|
This structure consists of three fields:<br>
|
|
|
|
<ul>
|
|
<li>Bytes returned
|
|
</li>
|
|
|
|
<li>Bytes available
|
|
</li>
|
|
|
|
<li>Entry count
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li>A result array
|
|
</li>
|
|
|
|
<li>A string space</li>
|
|
</ul>
|
|
|
|
<table border width="80%">
|
|
<tr>
|
|
<th align="left" valign="top" colspan="4"><em><a name="TBLDLTB03">Variations
|
|
in Receiver Variable Structure</a></em></th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">Header</td>
|
|
<td align="left" valign="top">Bytes Returned</td>
|
|
<td align="left" valign="top">Bytes Available</td>
|
|
<td align="left" valign="top">Entry Count</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top" width="25%">Result array 1</td>
|
|
<td align="left" valign="top" width="25%">Result type</td>
|
|
<td align="left" valign="top" width="25%"> </td>
|
|
<td align="left" valign="top" width="25%"> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">Result array 2</td>
|
|
<td align="left" valign="top">Result type</td>
|
|
<td align="left" valign="top">Count</td>
|
|
<td align="left" valign="top"> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">Result array 3</td>
|
|
<td align="left" valign="top">Result type</td>
|
|
<td align="left" valign="top">Offset</td>
|
|
<td align="left" valign="top">Length</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top" colspan="4">String space</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p>Each row of Variations in Receiver Variable Structure occupies 12 bytes.
|
|
The row containing the headings describes the remainder of the receiver
|
|
variable. The number of bytes returned is assigned to that field.
|
|
The value of the bytes returned field is always less than or equal to the size
|
|
of the receiver variable. The number of bytes available may be greater than the
|
|
number returned. In that case, the client program should reissue the Submit
|
|
Debug Command API to obtain all data produced for the input debug language
|
|
statements. The entry count field in the first row indicates the number of
|
|
12-byte records, each beginning with a result type field, that follow.</p>
|
|
|
|
<p>Records beginning with a result type field have the following basic
|
|
formats.</p>
|
|
|
|
<ul>
|
|
<li>The first entry in the array shows a record containing only one field,
|
|
result type. Records having this structure acknowledge that a kind of debug
|
|
language statement was translated. An example of this kind of record is the
|
|
result record for a CLEAR PGM statement.<br>
|
|
<br>
|
|
</li>
|
|
|
|
<li>The second entry in the array shows a record containing a count field as
|
|
well as a result type field. The count field can serve two purposes:<br>
|
|
<br>
|
|
|
|
|
|
<ul>
|
|
<li>It can acknowledge that a debug language statement was properly translated
|
|
as in the case of the StepR result record.<br>
|
|
<br>
|
|
</li>
|
|
|
|
<li>It can enumerate the number of related records to follow as in the case of
|
|
the BreakR result record.<br>
|
|
<br>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li>The offset field contains the displacement from the start of the receiver
|
|
variable to the first byte of the character string. All character strings are
|
|
stored at the end of the receiver variable directly after the record entries.
|
|
Displacements are measured in bytes.
|
|
|
|
<p>The length field contains the number of characters in the character
|
|
string.</p>
|
|
|
|
<p>The last character of each string in the string space has an ordinal value
|
|
of zero. All characters in the string space occupy 8 bits. The length of a
|
|
string in the string space does not include the last character.</p>
|
|
|
|
<blockquote>
|
|
<p><strong>Note:</strong> The length field will always be set to 512, with each
|
|
of the 512 characters occupying 16 bits, for a string of type kStringF_E when
|
|
debugging a JAVA executable. This will occur even when the returned string has
|
|
a length of less than 512. The end of the returned string can be found by
|
|
locating the first unicode character in the string that has an ordinal value of
|
|
zero. As unicode, this character will occupy 16 bits.</p>
|
|
</blockquote>
|
|
</li>
|
|
|
|
<li>The last row of <a href="#TBLDLTB03">Variations in Receiver Variable Structure</a>
|
|
depicts an arbitrarily large string space containing character data. Names and
|
|
other text fields that are referred to in the result type fields shown in the
|
|
other rows of Variations in Receiver Variable Structure are stored in this area.</li>
|
|
</ul>
|
|
|
|
<br>
|
|
<h3>Results Array Entry Structure Summary</h3>
|
|
|
|
<p>The following tables describe each result record in detail. Each result
|
|
record contains up to three fields and always occupies 12 bytes. The first
|
|
field, the result type field, is used as an enumerated type. The result type
|
|
field determines the format of each result record.</p>
|
|
|
|
<p>Each of the following enumeration constants has both a symbolic name and an
|
|
ordinal value. The terms symbolic and ordinal refer to enumerations found in
|
|
programming languages. The symbolic value of an enumeration constant is the
|
|
symbol, usually a descriptive word that serves as a keyword for the programmer
|
|
(for example, StepR). The ordinal value of an enumeration constant is the
|
|
integer constant assigned, usually by the compiler, to the symbolic value. For
|
|
example, 1 is assigned for StepR.</p>
|
|
|
|
<br>
|
|
<h3>StepR (1)</h3>
|
|
|
|
<p>Record format StepR is returned as a result of evaluating a step
|
|
statement.</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%">Result type</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">Step count</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">8</td>
|
|
<td align="center" valign="top">8</td>
|
|
<td align="left" valign="top">CHAR(4)</td>
|
|
<td align="left" valign="top">Reserved</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<h3>BreakR (2)</h3>
|
|
|
|
<p>Record format BreakR contains the number of records returned for a break
|
|
statement.</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%">Result type</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">Break results count</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">8</td>
|
|
<td align="center" valign="top">8</td>
|
|
<td align="left" valign="top">CHAR(4)</td>
|
|
<td align="left" valign="top">Reserved</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<h3>ClearBreakpointR (3)</h3>
|
|
|
|
<p>Record format ClearBreakpointR contains the line number of the breakpoint
|
|
removed as a result of interpreting the CLEAR break-position statement.</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%">Result type</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">Line number</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">8</td>
|
|
<td align="center" valign="top">8</td>
|
|
<td align="left" valign="top">CHAR(4)</td>
|
|
<td align="left" valign="top">Reserved</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<h3>ClearPgmR (4)</h3>
|
|
|
|
<p>Record format ClearPgmR indicates that all breakpoints have been removed in
|
|
the current program as result of interpreting the CLEAR PGM statement.</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%">Result type</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">4</td>
|
|
<td align="center" valign="top">4</td>
|
|
<td align="left" valign="top">CHAR(4)</td>
|
|
<td align="left" valign="top">Reserved</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">8</td>
|
|
<td align="center" valign="top">8</td>
|
|
<td align="left" valign="top">CHAR(4)</td>
|
|
<td align="left" valign="top">Reserved</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<h3>BreakPositionR (5)</h3>
|
|
|
|
<p>Record format BreakPositionR identifies the line number on which a
|
|
breakpoint was entered. This may not be the same line number as the one entered
|
|
in the break statement.</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%">Result type</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">Line number</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">8</td>
|
|
<td align="center" valign="top">8</td>
|
|
<td align="left" valign="top">CHAR(4)</td>
|
|
<td align="left" valign="top">Reserved</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<h3>EvaluationR (6)</h3>
|
|
|
|
<p>Record format EvaluationR contains the number of records returned for an
|
|
evaluate statement that are referred to in the subsequent ExpressionValueR
|
|
record.</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%">Result type</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">Evaluation count</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">Reserved</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<h3>ExpressionTextR (7)</h3>
|
|
|
|
<p>Record format ExpressionTextR describes a character string that contains the
|
|
expression that was evaluated by the evaluate statement.</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%">Result type</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">Expression text offset</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">Expression text length</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<h3>ExpressionValueR (8)</h3>
|
|
|
|
<p>Record format ExpressionValueR refers to text that contains the formatted
|
|
value of the expression that is described by the ExpressionTextR record.</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%">Result type</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">Expression value offset</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">Expression value length</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<h3>ExpressionTypeR (9)</h3>
|
|
|
|
<p>Record format ExpressionTypeR contains the type of the expression whose
|
|
value is referred to in the ExpressionValueR record.</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%">Result type</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">Expression type</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">8</td>
|
|
<td align="center" valign="top">8</td>
|
|
<td align="left" valign="top">CHAR(4)</td>
|
|
<td align="left" valign="top">Reserved</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<h3>QualifyR (10)</h3>
|
|
|
|
<p>Record format QualifyR is returned as a result of evaluating a qualify
|
|
statement.</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%">Result type</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">Line number</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">Reserved</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<h3>TypeR (11)</h3>
|
|
|
|
<p>Record format TypeR contains the number of records that are returned for an
|
|
ATTR statement.</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%">Result type</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">Type record count</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">Reserved</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<h3>TypeDescR (12)</h3>
|
|
|
|
<p>Record format TypeDescR contains the type and length of the program
|
|
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%">Result type</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">Type</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">Length</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<h3>DecimalR (13)</h3>
|
|
|
|
<p>Record format DecimalR is returned only for decimal type variables and
|
|
contains the total and fractional number of digits in the decimal number.</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%">Result type</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">Total digits</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">Fraction digits</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<h3>ArrayR (14)</h3>
|
|
|
|
<p>Record format ArrayR is returned only for array type variables and contains
|
|
the number of dimensions in the array. The ArrayR record is followed by a
|
|
DimensionR record for each dimension.</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%">Result type</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">Dimensions</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">Reserved</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<h3>DimensionR (15)</h3>
|
|
|
|
<p>Record format DimensionR is returned only for array type variables and
|
|
contains the low and high bounds of the array dimensions. There is one
|
|
DimensionR record for each dimension in the array.</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%">Result type</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">Low bound</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">High bound</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<h3>WatchR (16)</h3>
|
|
|
|
<p>Record format WatchR contains the number of records returned for a watch
|
|
statement.</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%">Result type</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">Watch results count</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">Reserved</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<h3>WatchNumberR (17)</h3>
|
|
|
|
<p>Record format WatchNumberR describes the watch condition that was set as a
|
|
result of the watch statement.</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%">Result type</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">Watch number</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">Watch length</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<h3>ClearWatchNumberR (18)</h3>
|
|
|
|
<p>Record format ClearWatchNumberR contains the watch number that is cleared as
|
|
a result of interpreting the CLEAR WATCH watch-number statement.</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%">Result type</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">Watch number</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">Reserved</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<h3>ClearWatchR (19)</h3>
|
|
|
|
<p>Record format ClearWatchR indicates that all watches in this debug session
|
|
have been removed as a result of interpreting the CLEAR WATCH ALL
|
|
statement.</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%">Result type</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">Reserved</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">Reserved</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<h3>TBreakR (20)</h3>
|
|
|
|
<p>Record format TBreakR contains the number of records that are returned for a
|
|
tbreak statement.</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%">Result type</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">TBreak results count</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">8</td>
|
|
<td align="center" valign="top">8</td>
|
|
<td align="left" valign="top">CHAR(4)</td>
|
|
<td align="left" valign="top">Reserved</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<h3>SBreakR (21)</h3>
|
|
|
|
<p>Record format SBreakR contains the number of records that are returned for a
|
|
sbreak statement.</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%">Result type</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">SBreak results count</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">8</td>
|
|
<td align="center" valign="top">8</td>
|
|
<td align="left" valign="top">CHAR(4)</td>
|
|
<td align="left" valign="top">Reserved</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
|
|
<h3>Field Descriptions</h3>
|
|
|
|
<p><strong>Break results count.</strong> The number of entries returned for the
|
|
break statement.</p>
|
|
|
|
<p><strong>Dimensions.</strong> The number of dimensions in the array.</p>
|
|
|
|
<p><strong>Expression text length.</strong> The number of characters in the
|
|
expression text.</p>
|
|
|
|
<p><strong>Expression text offset.</strong> The displacement from the start of
|
|
the receiver variable to the first character of the expression text.
|
|
Displacement is measured in bytes.</p>
|
|
|
|
<p><strong>Expression value length.</strong> The number of characters in the
|
|
expression value text.</p>
|
|
|
|
<p><strong>Expression value offset.</strong> The displacement from the start of
|
|
the receiver variable to the first byte of the expression value text.
|
|
Displacement is measured in bytes.</p>
|
|
|
|
<p><strong>Evaluation count.</strong> The number of records returned for an
|
|
evaluate statement.</p>
|
|
|
|
<p><strong>Expression type.</strong> The data type of the expression. The
|
|
expression type may be one of the following:</p>
|
|
|
|
<table cellpadding="5">
|
|
<tr>
|
|
<th align="center" valign="top">Type</th>
|
|
<th align="left" valign="top">Enumeration</th>
|
|
<th align="left" valign="top">Description</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top" width="15%">0</td>
|
|
<td align="left" valign="top" width="25%">kNoType__E</td>
|
|
<td align="left" valign="top" width="60%">Type is not valid</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">1</td>
|
|
<td align="left" valign="top">kChar__8_E</td>
|
|
<td align="left" valign="top">8-bit character value</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">2</td>
|
|
<td align="left" valign="top">kChar_16_E</td>
|
|
<td align="left" valign="top">16-bit character value</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">3</td>
|
|
<td align="left" valign="top">kBool_32_E</td>
|
|
<td align="left" valign="top">32-bit Boolean value</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">4</td>
|
|
<td align="left" valign="top">kCard_16_E</td>
|
|
<td align="left" valign="top">16-bit unsigned integer value</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">5</td>
|
|
<td align="left" valign="top">kCard_32_E</td>
|
|
<td align="left" valign="top">32-bit unsigned integer value</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">6</td>
|
|
<td align="left" valign="top">kInt__16_E</td>
|
|
<td align="left" valign="top">16-bit two's complement integer value</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">7</td>
|
|
<td align="left" valign="top">kInt__32_E</td>
|
|
<td align="left" valign="top">32-bit two's complement integer value</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">8</td>
|
|
<td align="left" valign="top">kReal_32_E</td>
|
|
<td align="left" valign="top">32-bit real floating-point value</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">9</td>
|
|
<td align="left" valign="top">kReal_64_E</td>
|
|
<td align="left" valign="top">64-bit real floating-point value</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">10</td>
|
|
<td align="left" valign="top">kSpcPtr__E</td>
|
|
<td align="left" valign="top">64 or 128-bit pointer</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">11</td>
|
|
<td align="left" valign="top">kFncPtr__E</td>
|
|
<td align="left" valign="top">64 or 128-bit function pointer</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">12</td>
|
|
<td align="left" valign="top">kMchAddr_E</td>
|
|
<td align="left" valign="top">64 or 128-bit machine pointer</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">13</td>
|
|
<td align="left" valign="top">kRecord__E</td>
|
|
<td align="left" valign="top">Structure or record</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">14</td>
|
|
<td align="left" valign="top">kArray___E</td>
|
|
<td align="left" valign="top">Array</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">15</td>
|
|
<td align="left" valign="top">kEnum____E</td>
|
|
<td align="left" valign="top">Enumerated type</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">16</td>
|
|
<td align="left" valign="top">kString__E</td>
|
|
<td align="left" valign="top">String (:s format on EVAL)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">17</td>
|
|
<td align="left" valign="top">kPacked__E</td>
|
|
<td align="left" valign="top">Packed decimal</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">18</td>
|
|
<td align="left" valign="top">kZonedTE_E</td>
|
|
<td align="left" valign="top">Zoned, trailing embedded sign</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">19</td>
|
|
<td align="left" valign="top">kZonedTS_E</td>
|
|
<td align="left" valign="top">Zoned, trailing separate sign</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">20</td>
|
|
<td align="left" valign="top">kZonedLE_E</td>
|
|
<td align="left" valign="top">Zoned, leading embedded sign</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">21</td>
|
|
<td align="left" valign="top">kZonedLS_E</td>
|
|
<td align="left" valign="top">Zoned, leading separate sign</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">22</td>
|
|
<td align="left" valign="top">kBinD_16_E</td>
|
|
<td align="left" valign="top">16-bit binary decimal value</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">23</td>
|
|
<td align="left" valign="top">kBinD_32_E</td>
|
|
<td align="left" valign="top">32-bit binary decimal value</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">24</td>
|
|
<td align="left" valign="top">kBinD_64_E</td>
|
|
<td align="left" valign="top">64-bit binary decimal value</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">25</td>
|
|
<td align="left" valign="top">kTable___E</td>
|
|
<td align="left" valign="top">Multiple occurrence data structure</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">26</td>
|
|
<td align="left" valign="top">kInd_____E</td>
|
|
<td align="left" valign="top">Indicator</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">27</td>
|
|
<td align="left" valign="top">kDate____E</td>
|
|
<td align="left" valign="top">Date</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">28</td>
|
|
<td align="left" valign="top">kTime____E</td>
|
|
<td align="left" valign="top">Time</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">29</td>
|
|
<td align="left" valign="top">kTstamp__E</td>
|
|
<td align="left" valign="top">Timestamp</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">30</td>
|
|
<td align="left" valign="top">kFixedL__E</td>
|
|
<td align="left" valign="top">Fixed-length string</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">31</td>
|
|
<td align="left" valign="top">kStringF_E</td>
|
|
<td align="left" valign="top"><img src="delta.gif" alt="Start of change">String (:f, :a, :u, :w format on EVAL command) <img src="deltaend.gif" alt="End of change"></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">100</td>
|
|
<td align="left" valign="top">kHex_____E</td>
|
|
<td align="left" valign="top">Hexadecimal (:x format on EVAL command)</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p><strong>Fraction digits.</strong> The number of digits to the right of the
|
|
decimal point in a decimal number.</p>
|
|
|
|
<p><strong>High bound.</strong> The high boundary of the array dimension.</p>
|
|
|
|
<p><strong>Length.</strong> The program variable length that is returned by the
|
|
TypeDescR result record. The length units are bits.</p>
|
|
|
|
<p><strong>Line number.</strong> The number of the line on which the action
|
|
requested was performed.</p>
|
|
|
|
<p><strong>Low bound.</strong> The low boundary of the array dimension.</p>
|
|
|
|
<p><strong>Reserved.</strong> An ignored field.</p>
|
|
|
|
<p><strong>Result type.</strong> The ordinal value of the result array.</p>
|
|
|
|
<p><strong>SBreak results count.</strong> The number of entries returned for
|
|
the sbreak statement.</p>
|
|
|
|
<p><strong>Step count.</strong> The number of statements processed.</p>
|
|
|
|
<p><strong>TBreak results count.</strong> The number of entries returned for
|
|
the tbreak statement.</p>
|
|
|
|
<p><strong>Total digits.</strong> The total number of digits in a decimal
|
|
number.</p>
|
|
|
|
<p><strong>Type.</strong> The program variable type that is returned by the
|
|
TypeDescR result record. The meanings of this field's value are the same as the
|
|
expression type field.</p>
|
|
|
|
<p><strong>Type record count.</strong> The number of records returned for an
|
|
attr statement.</p>
|
|
|
|
<p><strong>Watch length.</strong> The length in bytes of the storage being
|
|
watched for this watch condition.</p>
|
|
|
|
<p><strong>Watch number.</strong> The identification number assigned to the
|
|
watch condition. This number is used by various debug functions to identify
|
|
individual watches.</p>
|
|
|
|
<p><strong>Watch results count.</strong> The number of result records returned
|
|
for the watch statement.</p>
|
|
|
|
<br>
|
|
<h3>Statement Results</h3>
|
|
|
|
<p><strong>ATTR Statement Results.</strong> The Submit Debug Command API
|
|
returns a description of the symbol table entry for the program variable
|
|
entered. A variable number of result records may be produced:</p>
|
|
|
|
<ul>
|
|
<li>A TypeR record is returned, which provides a count of the number of records
|
|
returned for an ATTR statement.<br>
|
|
<br>
|
|
</li>
|
|
|
|
<li>A TypeDescR record is returned, which provides the type and size of the
|
|
program variable.<br>
|
|
<br>
|
|
</li>
|
|
|
|
<li>A DecimalR record is returned only if the program variable is a decimal
|
|
type. This record describes the total and fractional digits in the decimal
|
|
number.<br>
|
|
<br>
|
|
</li>
|
|
|
|
<li>An ArrayR record is returned only if the program variable is an array. This
|
|
record returns the number of dimensions in an array.<br>
|
|
<br>
|
|
</li>
|
|
|
|
<li>A DimensionR record is returned only if the program variable is an array.
|
|
This record returns the low and high bounds of the array dimensions.</li>
|
|
</ul>
|
|
|
|
<p><strong>Break Statement Results.</strong> The Submit Debug Command API
|
|
returns a detailed description of the break-position and conditional expression
|
|
of a conditional breakpoint when a break statement is translated.</p>
|
|
|
|
<p>The items returned follow:</p>
|
|
|
|
<ul>
|
|
<li>The number of records returned as a result of evaluating a break statement.
|
|
Record type BreakR contains this information.<br>
|
|
<br>
|
|
</li>
|
|
|
|
<li>The position on which the breakpoint was entered. Record type
|
|
BreakPositionR contains the line number of the line on which the breakpoint was
|
|
entered. Be aware that the input line number may be mapped to a different line.
|
|
For example, a breakpoint entered on a line that contains a comment is mapped
|
|
to the next line that contains an operational statement.<br>
|
|
<br>
|
|
</li>
|
|
|
|
<li>The text of the expression that defines a conditional breakpoint. Record
|
|
type ExpressionTextR refers to the text of the condition.</li>
|
|
</ul>
|
|
|
|
<p>The break statement is interpreted. Program operation is managed by i5/OS
|
|
according to the definition of the break statement.</p>
|
|
|
|
<p><strong>Clear Statement Results.</strong> One record is returned. The record
|
|
type depends on the operand following the keyword CLEAR. If the operand is a
|
|
line number, the record type is ClearBreakpointR. If the operand is the keyword
|
|
PGM, the record type is ClearPgmR. If the operand is WATCH and a watch number
|
|
is specified, the record type is ClearWatchNumberR. If the operand is WATCH and
|
|
all watches are cleared, the record type is ClearWatchR.</p>
|
|
|
|
<p>The ClearBreakpointR record contains the line number input for the break
|
|
position.</p>
|
|
|
|
<p>The clear statement is interpreted. One or more breakpoints are removed from
|
|
the program under investigation.</p>
|
|
|
|
<p><strong>Evaluate Statement Results.</strong> An evaluate statement produces
|
|
a variable number of Result Records. The first four result records follow:</p>
|
|
|
|
<ul>
|
|
<li>An EvaluationR record is returned, which enumerates itself and subsequent
|
|
records. The EvaluationR result record always contains an evaluation count of
|
|
four.<br>
|
|
<br>
|
|
</li>
|
|
|
|
<li>An Expression text record is returned, which contains the offset and length
|
|
of the string, which represents the expression text.<br>
|
|
<br>
|
|
</li>
|
|
|
|
<li>An Expression value record is returned, which contains the offset and
|
|
length of the string, which represents the value of the expression.
|
|
|
|
<p><strong>Note:</strong> The length field will always be set to 512, with each
|
|
of the 512 characters occupying 16 bits, for a string of type kStringF_E when
|
|
debugging a JAVA executable. This will occur even when the returned string has
|
|
a length of less than 512. The end of the returned string can be found by
|
|
locating the first unicode character in the string that has an ordinal value of
|
|
zero. As unicode, this character will occupy 16 bits.</p>
|
|
</li>
|
|
|
|
<li>An Expression type record is returned, which contains the type of the
|
|
expression.</li>
|
|
</ul>
|
|
|
|
<p>A single value is returned for an arithmetic expression or scalar variable.
|
|
Multiple values are returned when a structure is evaluated. Refer to
|
|
<a href="#HDRRSLTRCD">Examples of Result Records Returned by Submit Debug Command
|
|
API</a> for examples of the result records returned when a structure or an
|
|
array is evaluated.</p>
|
|
|
|
<p>The evaluate statement is interpreted. Data is formatted according to the
|
|
type of the input expression. Refer to <a href="#TBLDLTB50">Presentation Formats</a>
|
|
for a description of presentation formats.</p>
|
|
|
|
<p><strong>Qualify Statement Results.</strong> One record is returned. The
|
|
value of the result type field is QualifyR. The QualifyR record contains the
|
|
input line number used to establish the current locality for subsequent
|
|
evaluate statements.</p>
|
|
|
|
<p>A reference to the block that defines the current locality is assigned by
|
|
the qualify statement.</p>
|
|
|
|
<p><strong>SBreak Statement Results.</strong> The Submit Debug Command API
|
|
returns a detailed description of the break-position when an sbreak statement is
|
|
translated. The items returned are:</p>
|
|
|
|
<ul>
|
|
<li>The number of records returned as a result of evaluating a sbreak
|
|
statement. Record type SBreakR contains this information.<br>
|
|
<br>
|
|
</li>
|
|
|
|
<li>The position on which the breakpoint was entered. Record type
|
|
BreakPositionR contains the line number of the line on which the breakpoint was
|
|
entered. Be aware that the input line number may be mapped to a different line.
|
|
For example, a breakpoint entered on a line that contains a comment is mapped
|
|
to the next line that contains an operational statement.</li>
|
|
</ul>
|
|
|
|
<p>The sbreak statement is interpreted. Program operation is managed by i5/OS
|
|
according to the definition of the sbreak statement.</p>
|
|
|
|
<p><strong>Step Statement Results.</strong> One record is returned. The value
|
|
of the result type field is StepR. The StepR record contains the number of
|
|
statements to be run when control is given to the program under
|
|
investigation.</p>
|
|
|
|
<p>The step statement is interpreted. Program processing is managed by i5/OS
|
|
according to the definition of the step statement.</p>
|
|
|
|
<p><strong>TBreak Statement Results.</strong> The Submit Debug Command API
|
|
returns a detailed description of the thread break-position and conditional
|
|
expression of a conditional breakpoint when a tbreak statement is translated.
|
|
The items returned follow:</p>
|
|
|
|
<ul>
|
|
<li>The number of records returned as a result of evaluating a tbreak
|
|
statement. Record type TBreakR contains this information.<br>
|
|
<br>
|
|
</li>
|
|
|
|
<li>The position on which the thread breakpoint was entered. Record type
|
|
BreakPositionR contains the line number of the line on which the thread
|
|
breakpoint was entered. Be aware that the input line number may be mapped to a
|
|
different line. For example, a thread breakpoint entered on a line that
|
|
contains a comment is mapped to the next line that contains an operational
|
|
statement.<br>
|
|
<br>
|
|
</li>
|
|
|
|
<li>The text of the expression that defines a conditional breakpoint for a
|
|
thread. Record type ExpressionTextR refers to the text of the condition.</li>
|
|
</ul>
|
|
|
|
<p>The tbreak statement is interpreted. Program operation is managed by i5/OS
|
|
according to the definition of the tbreak statement.</p>
|
|
|
|
<p><strong>Watch Statement Results.</strong> The watch statement returns the
|
|
following result records:</p>
|
|
|
|
<ul>
|
|
<li>A WatchR record is returned, which provides a count of the number of result
|
|
records for the watch statement.<br>
|
|
<br>
|
|
</li>
|
|
|
|
<li>A WatchNumberR record is returned, which contains the watch number assigned
|
|
and the length in bytes of the storage being watched.<br>
|
|
<br>
|
|
</li>
|
|
|
|
<li>An ExpressionTextR record, which contains the offset and length of a
|
|
string. This record represents the watch statement expression text.<br>
|
|
<br>
|
|
</li>
|
|
|
|
<li>An ExpressionValueR record, which contains the offset and length of a
|
|
string. This record represents the watch storage location address. This value
|
|
is always a text representation of a space pointer that contains the value of
|
|
the pointer to the watched storage location (for example,
|
|
'SPP:08006F0054001004').</li>
|
|
</ul>
|
|
|
|
<br>
|
|
<h3><a name="HDRRSLTRCD">Examples of Result Records Returned by Submit Debug
|
|
Command API</a></h3>
|
|
|
|
<p>This section contains examples of result records returned by the Submit
|
|
Debug Command API. Each example contains a fragment of a program, a debug
|
|
language statement that appears in the input buffer, and the results produced
|
|
in the receiver variable.</p>
|
|
|
|
<p>The null termination symbol denotes the end of a character string in the
|
|
examples that follow.</p>
|
|
|
|
<br>
|
|
<h3>Break Statement Example</h3>
|
|
|
|
<p><strong>C Program Fragment</strong></p>
|
|
|
|
<p>Assume program operation is suspended in the program shown in <a href=
|
|
"#FIGDBUGB">Figure 1</a> just before line 6 runs.</p>
|
|
|
|
<p><strong><a name="FIGDBUGB">Figure 1. Program for Break
|
|
Example</a></strong></p>
|
|
|
|
<table border width="80%">
|
|
<tr>
|
|
<td>
|
|
<pre>
|
|
|
|
Line C Source
|
|
|
|
1 #include stdio.h
|
|
2 int T[] = {1,2,3,5,7,11,13,17,23,29};
|
|
3 int BinarySearch(int v, int f, int l);
|
|
4 main()
|
|
5 { int result;
|
|
6 result = BinarySearch(17,0,9);
|
|
7 printf("result= "); printf("%d",result); printf(" \n");
|
|
8 }
|
|
|
|
</pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<p><strong>Input Buffer</strong></p>
|
|
|
|
<pre>
|
|
|
|
BREAK 7 WHEN result > 5
|
|
|
|
</pre>
|
|
|
|
<br>
|
|
<p><strong>Receiver Variable</strong></p>
|
|
|
|
<table border width="80%">
|
|
<tr>
|
|
<th align="center" valign="top">Offset</th>
|
|
<th align="left" valign="top">Field</th>
|
|
<th align="left" valign="top">Value</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top" width="15%">0</td>
|
|
<td align="left" valign="top" width="45%">Bytes returned<br>
|
|
Bytes available<br>
|
|
Entry count</td>
|
|
<td align="left" valign="top" width="40%">59<br>
|
|
59<br>
|
|
3</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">12</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Break results count<br>
|
|
Reserved</td>
|
|
<td align="left" valign="top">BreakR<br>
|
|
3</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">24</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Line number<br>
|
|
Reserved</td>
|
|
<td align="left" valign="top">BreakPositionR<br>
|
|
7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">36</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Expression text offset<br>
|
|
Expression text length</td>
|
|
<td align="left" valign="top">ExpressionTextR<br>
|
|
48<br>
|
|
10</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">48</td>
|
|
<td align="left" valign="top">String space</td>
|
|
<td align="left" valign="top">result > 5</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<h3><a name="Header_205">Scalar Evaluate Statement Example</a></h3>
|
|
|
|
<p><strong><a name="Header_206">C Program Fragment</a></strong></p>
|
|
|
|
<p>Consider the C program fragment in <a href="#FIGDBUGS">Figure 2</a>.
|
|
Variable i defines an integer.</p>
|
|
|
|
<p><strong><a name="FIGDBUGS">Figure 2. Program for Scalar Evaluate
|
|
Example</a></strong></p>
|
|
|
|
<table border width="80%">
|
|
<tr>
|
|
<td>
|
|
<pre>
|
|
|
|
Line C Source
|
|
|
|
1 int i = 29;
|
|
|
|
</pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<p><strong>Input Buffer</strong></p>
|
|
|
|
<pre>
|
|
EVAL i
|
|
</pre>
|
|
|
|
<br>
|
|
<p><strong>Receiver Variable</strong></p>
|
|
|
|
<table border width="80%">
|
|
<tr>
|
|
<th align="center" valign="top">Offset</th>
|
|
<th align="left" valign="top">Field</th>
|
|
<th align="left" valign="top">Value</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top" width="15%">0</td>
|
|
<td align="left" valign="top" width="45%">Bytes returned<br>
|
|
Bytes available<br>
|
|
Entry count</td>
|
|
<td align="left" valign="top" width="40%">65<br>
|
|
65<br>
|
|
4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">12</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Evaluation count<br>
|
|
Reserved</td>
|
|
<td align="left" valign="top">EvaluationR<br>
|
|
4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">24</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Expression text offset<br>
|
|
Expression text length</td>
|
|
<td align="left" valign="top">ExpressionTextR<br>
|
|
60<br>
|
|
1</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">36</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Expression value offset<br>
|
|
Expression value length</td>
|
|
<td align="left" valign="top">ExpressionValueR<br>
|
|
62<br>
|
|
2</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">48</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Expression type<br>
|
|
Reserved</td>
|
|
<td align="left" valign="top">ExpressionTypeR<br>
|
|
kInt__32_E<br>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">60</td>
|
|
<td align="left" valign="top">String space</td>
|
|
<td align="left" valign="top">i29</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<h3>Scalar Evaluate Statement Example</h3>
|
|
|
|
<p><strong>RPG Program Fragment</strong></p>
|
|
|
|
<p>Consider the RPG program fragment in <a href="#FIGDLFG01A">Figure 3</a>. The
|
|
fragment assigns 1 to a zoned(1,0) variable I.</p>
|
|
|
|
<p>The program is currently stopped at line 2.</p>
|
|
|
|
<p><strong><a name="FIGDLFG01A">Figure 3. RPG Programming Language Example,
|
|
Evaluate</a></strong></p>
|
|
|
|
<table border width="80%">
|
|
<tr>
|
|
<td>
|
|
<pre>
|
|
|
|
CL0N01Factor1++++++OpcodeE+Extended-factor2
|
|
|
|
1 C EVAL I=1
|
|
2 C MOVE *ON *INLR
|
|
|
|
</pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<p><strong>Input Buffer</strong></p>
|
|
|
|
<pre>
|
|
EVAL I
|
|
</pre>
|
|
|
|
<br>
|
|
<p><strong>Receiver Variable</strong></p>
|
|
|
|
<table border width="80%">
|
|
<tr>
|
|
<th align="center" valign="top">Offset</th>
|
|
<th align="left" valign="top">Field</th>
|
|
<th align="left" valign="top">Value</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top" width="15%">0</td>
|
|
<td align="left" valign="top" width="45%">Bytes returned<br>
|
|
Bytes available<br>
|
|
Entry count</td>
|
|
<td align="left" valign="top" width="40%">64<br>
|
|
64<br>
|
|
4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">12</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Evaluation count<br>
|
|
Reserved</td>
|
|
<td align="left" valign="top">EvaluationR<br>
|
|
4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">24</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Expression text offset<br>
|
|
Expression text length</td>
|
|
<td align="left" valign="top">ExpressionTextR<br>
|
|
60<br>
|
|
1</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">36</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Expression value offset<br>
|
|
Expression value length</td>
|
|
<td align="left" valign="top">ExpressionValueR<br>
|
|
62<br>
|
|
1</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">48</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Expression type<br>
|
|
Reserved</td>
|
|
<td align="left" valign="top">ExpressionTypeR<br>
|
|
kZonedTE_E<br>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">60</td>
|
|
<td align="left" valign="top">String space</td>
|
|
<td align="left" valign="top">I1</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<h3>Structure Evaluate Statement Example</h3>
|
|
|
|
<p><strong>C Program Fragment</strong></p>
|
|
|
|
<p>Consider the C program fragment in <a href="#FIGDBUGE">Figure 4</a>.</p>
|
|
|
|
<p><strong><a name="FIGDBUGE">Figure 4. Program for Structure Evaluate
|
|
Example</a></strong></p>
|
|
|
|
<table border width="80%">
|
|
<tr>
|
|
<td>
|
|
<pre>
|
|
|
|
Line C Source
|
|
|
|
1 struct {
|
|
2 int i;
|
|
3 float f;
|
|
4 struct {
|
|
5 char c;
|
|
6 enum e {red,yellow};
|
|
7 } s2;
|
|
8 } s1 = { 1 , 5.0, {'a' , red } };
|
|
|
|
</pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p><strong>Input Buffer</strong></p>
|
|
|
|
<pre>
|
|
EVAL s1
|
|
</pre>
|
|
|
|
<br>
|
|
<p><strong>Receiver Variable</strong></p>
|
|
|
|
<table border width="80%">
|
|
<tr>
|
|
<th align="center" valign="top">Offset</th>
|
|
<th align="left" valign="top">Field</th>
|
|
<th align="left" valign="top">Value</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top" width="15%">0</td>
|
|
<td align="left" valign="top" width="45%">Bytes returned<br>
|
|
Bytes available<br>
|
|
Entry count</td>
|
|
<td align="left" valign="top" width="40%">246<br>
|
|
246<br>
|
|
16</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">12</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Evaluation count<br>
|
|
Reserved</td>
|
|
<td align="left" valign="top">EvaluationR<br>
|
|
4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">24</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Expression text offset<br>
|
|
Expression text length</td>
|
|
<td align="left" valign="top">ExpressionTextR<br>
|
|
204<br>
|
|
4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">36</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Expression value offset<br>
|
|
Expression value length</td>
|
|
<td align="left" valign="top">ExpressionValueR<br>
|
|
209<br>
|
|
1</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">48</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Expression type<br>
|
|
Reserved</td>
|
|
<td align="left" valign="top">ExpressionTypeR<br>
|
|
kInt__32_E<br>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">60</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Evaluation count<br>
|
|
Reserved</td>
|
|
<td align="left" valign="top">EvaluationR<br>
|
|
4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">72</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Expression text offset<br>
|
|
Expression text length</td>
|
|
<td align="left" valign="top">ExpressionTextR<br>
|
|
211<br>
|
|
4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">84</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Expression value offset<br>
|
|
Expression value length</td>
|
|
<td align="left" valign="top">ExpressionValueR<br>
|
|
216<br>
|
|
7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">96</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Expression type<br>
|
|
Reserved</td>
|
|
<td align="left" valign="top">ExpressionTypeR<br>
|
|
kReal_64_E</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">108</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Evaluation count<br>
|
|
Reserved</td>
|
|
<td align="left" valign="top">EvaluationR<br>
|
|
4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">120</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Expression text offset<br>
|
|
Expression text length</td>
|
|
<td align="left" valign="top">ExpressionTextR<br>
|
|
224<br>
|
|
7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">132</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Expression value offset<br>
|
|
Expression value length</td>
|
|
<td align="left" valign="top">ExpressionValueR<br>
|
|
232<br>
|
|
1</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">144</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Expression type<br>
|
|
Reserved</td>
|
|
<td align="left" valign="top">ExpressionTypeR<br>
|
|
kChar__8_E</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">156</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Evaluation count<br>
|
|
Reserved</td>
|
|
<td align="left" valign="top">EvaluationR<br>
|
|
4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">168</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Expression text offset<br>
|
|
Expression text length</td>
|
|
<td align="left" valign="top">ExpressionTextR<br>
|
|
234<br>
|
|
7</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">180</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Expression value offset<br>
|
|
Expression value length</td>
|
|
<td align="left" valign="top">ExpressionValueR<br>
|
|
242<br>
|
|
3</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">192</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Expression type<br>
|
|
Reserved</td>
|
|
<td align="left" valign="top">ExpressionTypeR<br>
|
|
kEnum____E</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">204</td>
|
|
<td align="left" valign="top">String space</td>
|
|
<td align="left" valign="top">See Note.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top" colspan="3">
|
|
<p><strong>Note:</strong> s1.i1s1.f5.0E+00s1.s2.cas1.s2.ered</p>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
|
|
|
|
<h3>Step Statement Example</h3>
|
|
|
|
<p><strong>C Program Fragment</strong></p>
|
|
|
|
<p>Assume program operation is suspended in the program shown in <a href=
|
|
"#FIGDBUGF">Figure 5</a> just before line 6 runs.</p>
|
|
|
|
<p><strong><a name="FIGDBUGF">Figure 5. Program for Step
|
|
Example</a></strong></p>
|
|
|
|
<table border width="80%">
|
|
<tr>
|
|
<td>
|
|
<pre>
|
|
|
|
Line C Source
|
|
|
|
1 #include stdio.h
|
|
2 int T[] = {1,2,3,5,7,11,13,17,23,29};
|
|
3 int BinarySearch(int v, int f, int l);
|
|
4 main()
|
|
5 { int result;
|
|
6 result = BinarySearch(17,0,9);
|
|
7 printf("result= "); printf("%d",result); printf(" \n");
|
|
8 }
|
|
|
|
</pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<p><strong>Input Buffer</strong></p>
|
|
|
|
<pre>
|
|
STEP
|
|
</pre>
|
|
|
|
<br>
|
|
<p><strong>Receiver Variable</strong></p>
|
|
|
|
<table border width="80%">
|
|
<tr>
|
|
<th align="center" valign="top">Offset</th>
|
|
<th align="left" valign="top">Field</th>
|
|
<th align="left" valign="top">Value</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top" width="15%">0</td>
|
|
<td align="left" valign="top" width="45%">Bytes Returned<br>
|
|
Bytes Available<br>
|
|
Entry Count</td>
|
|
<td align="left" valign="top" width="40%">24<br>
|
|
24<br>
|
|
1</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">12</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Step Count<br>
|
|
Reserved</td>
|
|
<td align="left" valign="top">StepR<br>
|
|
1</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<h3>ATTR Statement Example</h3>
|
|
|
|
<p><strong>RPG Program Fragment</strong></p>
|
|
|
|
<p>Consider the RPG program fragment in <a href="#FIGDLFG01B">Figure 6</a>. The
|
|
fragment assigns 1 to a zoned(1,0) variable I.</p>
|
|
|
|
<p>The program is currently stopped at line 2.</p>
|
|
|
|
<p><strong><a name="FIGDLFG01B">Figure 6. RPG Programming Language Example,
|
|
Evaluate</a></strong></p>
|
|
|
|
<table border width="80%">
|
|
<tr>
|
|
<td>
|
|
<pre>
|
|
|
|
CL0N01Factor1++++++OpcodeE+Extended-factor2
|
|
|
|
1 C EVAL I=1
|
|
2 C MOVE *ON *INLR
|
|
|
|
</pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<p><strong>Input Buffer</strong></p>
|
|
|
|
<pre>
|
|
ATTR I
|
|
</pre>
|
|
|
|
<br>
|
|
<p><strong>Receiver Variable</strong></p>
|
|
|
|
<table border width="80%">
|
|
<tr>
|
|
<th align="center" valign="top">Offset</th>
|
|
<th align="left" valign="top">Field</th>
|
|
<th align="left" valign="top">Value</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">0</td>
|
|
<td align="left" valign="top">Bytes returned<br>
|
|
Bytes available<br>
|
|
Entry count</td>
|
|
<td align="left" valign="top">48<br>
|
|
48<br>
|
|
3</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">12</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Type record count<br>
|
|
Reserved</td>
|
|
<td align="left" valign="top">TypeR<br>
|
|
3</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">24</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Type<br>
|
|
Length</td>
|
|
<td align="left" valign="top">TypeDescR<br>
|
|
kZonedTE_E<br>
|
|
1</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">36</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Total digits<br>
|
|
Fractional digits</td>
|
|
<td align="left" valign="top">DecimalR<br>
|
|
1<br>
|
|
0</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
<h3>WATCH Statement Example</h3>
|
|
|
|
<p><strong>C Program Fragment</strong></p>
|
|
|
|
<p>Consider the C program fragment in <a href="#FIGDBUGS1">Figure 7</a>.
|
|
Variable i defines an integer.</p>
|
|
|
|
<p><strong><a name="FIGDBUGS1">Figure 7. Program for Scalar Evaluate
|
|
Example</a></strong></p>
|
|
|
|
<table border width="80%">
|
|
<tr>
|
|
<td>
|
|
<pre>
|
|
|
|
Line C Source
|
|
|
|
1 int i = 29;
|
|
|
|
</pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<p><strong>Input Buffer</strong></p>
|
|
|
|
<pre>
|
|
WATCH i
|
|
</pre>
|
|
|
|
<br>
|
|
<p><strong>Receiver Variable</strong></p>
|
|
|
|
<table border width="80%">
|
|
<tr>
|
|
<th align="center" valign="top">Offset</th>
|
|
<th align="left" valign="top">Field</th>
|
|
<th align="left" valign="top">Value</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">0</td>
|
|
<td align="left" valign="top">Bytes returned<br>
|
|
Bytes available<br>
|
|
Entry count</td>
|
|
<td align="left" valign="top">83<br>
|
|
83<br>
|
|
4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">12</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Watch results count<br>
|
|
Reserved</td>
|
|
<td align="left" valign="top">WatchR<br>
|
|
4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">24</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Watch number<br>
|
|
Watch length</td>
|
|
<td align="left" valign="top">WatchNumberR<br>
|
|
1<br>
|
|
4</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">36</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Expression text offset<br>
|
|
Expression text length</td>
|
|
<td align="left" valign="top">ExpressionTextR<br>
|
|
60<br>
|
|
1</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">48</td>
|
|
<td align="left" valign="top">Result type<br>
|
|
Expression value offset<br>
|
|
Expression value length</td>
|
|
<td align="left" valign="top">ExpressionValueR<br>
|
|
62<br>
|
|
20</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center" valign="top">60</td>
|
|
<td align="left" valign="top">String space</td>
|
|
<td align="left" valign="top">See note.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top" colspan="3">
|
|
<p><strong>Note:</strong> iSPP:08006F0054001004</p>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<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">CPF1938 E</td>
|
|
<td align="left" valign="top">Command is not allowed while serviced job is not active.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF1939 E</td>
|
|
<td align="left" valign="top">Time-out occurred waiting for a reply from the serviced
|
|
job.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF1941 E</td>
|
|
<td align="left" valign="top">Serviced job has completed. Debug commands are not
|
|
allowed.</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">CPF3C24 E</td>
|
|
<td align="left" valign="top">Length of the receiver variable is not valid.</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">CPF7102 E</td>
|
|
<td align="left" valign="top">Unable to add breakpoint or trace.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E01 E</td>
|
|
<td align="left" valign="top">Pointer to receiver variable is NULL.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E02 E</td>
|
|
<td align="left" valign="top">Receiver variable length not valid.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E03 E</td>
|
|
<td align="left" valign="top">Pointer to input buffer is NULL.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E04 E</td>
|
|
<td align="left" valign="top">Input buffer length not valid.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E05 E</td>
|
|
<td align="left" valign="top">Input buffer is not as long as specified.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E06 E</td>
|
|
<td align="left" valign="top">Pointer to error code structure is NULL.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E07 E</td>
|
|
<td align="left" valign="top">Not enough space was provided for error code.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E08 E</td>
|
|
<td align="left" valign="top">Value of BytesProvided field is not correct.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E09 E</td>
|
|
<td align="left" valign="top">Value of BytesProvided field, &1, is not correct.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E10 E</td>
|
|
<td align="left" valign="top">Internal error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E11 E</td>
|
|
<td align="left" valign="top">Type error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E12 E</td>
|
|
<td align="left" valign="top">Identifier does not exist.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E14 E</td>
|
|
<td align="left" valign="top">Field does not exist.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E15 E</td>
|
|
<td align="left" valign="top">Syntax error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E16 E</td>
|
|
<td align="left" valign="top">Token error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E17 E</td>
|
|
<td align="left" valign="top">Structure type error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E18 E</td>
|
|
<td align="left" valign="top">Pointer type error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E19 E</td>
|
|
<td align="left" valign="top">Integral type error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E1A E</td>
|
|
<td align="left" valign="top">Enumerated type error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E1B E</td>
|
|
<td align="left" valign="top">Arithmetic type error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E1C E</td>
|
|
<td align="left" valign="top">Scalar type error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E1D E</td>
|
|
<td align="left" valign="top">Address type error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E1E E</td>
|
|
<td align="left" valign="top">Adding type error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E1F E</td>
|
|
<td align="left" valign="top">Subtracting type error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E20 E</td>
|
|
<td align="left" valign="top">Relational type error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E21 E</td>
|
|
<td align="left" valign="top">Equality type error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E22 E</td>
|
|
<td align="left" valign="top">Casting type error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E23 E</td>
|
|
<td align="left" valign="top">Assignment type error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E24 E</td>
|
|
<td align="left" valign="top">Line number not found.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E25 E</td>
|
|
<td align="left" valign="top">Array type error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E26 E</td>
|
|
<td align="left" valign="top">Subscript type error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E27 E</td>
|
|
<td align="left" valign="top">Format type error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E28 E</td>
|
|
<td align="left" valign="top">Type error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E29 E</td>
|
|
<td align="left" valign="top">Unsupported bit field alignment.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E2A E</td>
|
|
<td align="left" valign="top">String constants are not supported.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E2B E</td>
|
|
<td align="left" valign="top">Type compatibility error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E2C E</td>
|
|
<td align="left" valign="top">Too few array dimensions specified.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E2D E</td>
|
|
<td align="left" valign="top">Too many array dimensions specified.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E2E E</td>
|
|
<td align="left" valign="top">Incorrectly formed range expression.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E2F E</td>
|
|
<td align="left" valign="top">Range expression expands to exceed input buffer.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E50 E</td>
|
|
<td align="left" valign="top">Decimal type error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E51 E</td>
|
|
<td align="left" valign="top">Decimal size error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E52 E</td>
|
|
<td align="left" valign="top">Unsupported syntax.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E53 E</td>
|
|
<td align="left" valign="top">Assignment size error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E54 E</td>
|
|
<td align="left" valign="top">Integer type error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E55 E</td>
|
|
<td align="left" valign="top">Constant type error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E56 E</td>
|
|
<td align="left" valign="top">Identifier is ambiguous.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E57 E</td>
|
|
<td align="left" valign="top">Integer constant not valid.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E58 E</td>
|
|
<td align="left" valign="top">Compiler not valid.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E59 E</td>
|
|
<td align="left" valign="top">String type error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E5A E</td>
|
|
<td align="left" valign="top">Substring extends beyond end of string.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E5B E</td>
|
|
<td align="left" valign="top">Format length error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E5C E</td>
|
|
<td align="left" valign="top">Hexadecimal constant not valid.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E5D E</td>
|
|
<td align="left" valign="top">Decimal constant size error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E5E E</td>
|
|
<td align="left" valign="top">Integer constant size error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E5F E</td>
|
|
<td align="left" valign="top">Relational size error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E60 E</td>
|
|
<td align="left" valign="top">Constant not a decimal number.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E61 E</td>
|
|
<td align="left" valign="top">System cannot determine which expansion of the template to
|
|
use.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E62 E</td>
|
|
<td align="left" valign="top">Watch cannot be set on this variable.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E63 E</td>
|
|
<td align="left" valign="top">Watch length is not valid.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF7E64 E</td>
|
|
<td align="left" valign="top">Clear watch number not found.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E03 E</td>
|
|
<td align="left" valign="top">Internal error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E04 E</td>
|
|
<td align="left" valign="top">Internal error occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E05 E</td>
|
|
<td align="left" valign="top">Error on equal operator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E06 E</td>
|
|
<td align="left" valign="top">Error on not-equal operator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E07 E</td>
|
|
<td align="left" valign="top">Error on greater-than operator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E08 E</td>
|
|
<td align="left" valign="top">Error on greater-than-or-equal-to operator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E09 E</td>
|
|
<td align="left" valign="top">Error on less-than operator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E0A E</td>
|
|
<td align="left" valign="top">Error on less-than-or-equal-to operator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E0B E</td>
|
|
<td align="left" valign="top">Error on logical-and operator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E0C E</td>
|
|
<td align="left" valign="top">Error on logical-or operator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E0D E</td>
|
|
<td align="left" valign="top">Error on logical-exclusive-or operator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E0E E</td>
|
|
<td align="left" valign="top">Error on logical-not operator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E0F E</td>
|
|
<td align="left" valign="top">Error on add operator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E10 E</td>
|
|
<td align="left" valign="top">Error on subtract operator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E11 E</td>
|
|
<td align="left" valign="top">Error on negate operator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E12 E</td>
|
|
<td align="left" valign="top">Error on multiply operator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E13 E</td>
|
|
<td align="left" valign="top">Error on divide operator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E14 E</td>
|
|
<td align="left" valign="top">Error on increment operator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E15 E</td>
|
|
<td align="left" valign="top">Error on decrement operator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E16 E</td>
|
|
<td align="left" valign="top">Error on modulo operator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E17 E</td>
|
|
<td align="left" valign="top">Pointer not set for location referenced.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E18 E</td>
|
|
<td align="left" valign="top">Conversion error.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E19 E</td>
|
|
<td align="left" valign="top">Error on absolute value operator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E1A E</td>
|
|
<td align="left" valign="top">Domain violation occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E1B E</td>
|
|
<td align="left" valign="top">Domain violation occurred.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E1C E</td>
|
|
<td align="left" valign="top">Error on write operator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E1D E</td>
|
|
<td align="left" valign="top">Error on shift operator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E1E E</td>
|
|
<td align="left" valign="top">Error on operand value.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E1F E</td>
|
|
<td align="left" valign="top">Error on load constant operator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E20 E</td>
|
|
<td align="left" valign="top">Error on load address operator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E21 E</td>
|
|
<td align="left" valign="top">Error on store indirect operator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E22 E</td>
|
|
<td align="left" valign="top">Error on move operator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E23 E</td>
|
|
<td align="left" valign="top">Error on fill operator.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E24 E</td>
|
|
<td align="left" valign="top">Incorrect array index value.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E25 E</td>
|
|
<td align="left" valign="top">Call stack entry does not exist.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E26 E</td>
|
|
<td align="left" valign="top">Translation failed.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E27 E</td>
|
|
<td align="left" valign="top">Call to user method failed.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E28 E</td>
|
|
<td align="left" valign="top">Variable not available to display.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E29 E</td>
|
|
<td align="left" valign="top">Debug recursion error.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E2A E</td>
|
|
<td align="left" valign="top">Error occurred while processing operation.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E2B E</td>
|
|
<td align="left" valign="top">Watch cannot overlap another active watch.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF8E2C E</td>
|
|
<td align="left" valign="top">Maximum number of watches exceeded.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF9541 E</td>
|
|
<td align="left" valign="top">Not in debug mode.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF9542 E</td>
|
|
<td align="left" valign="top">View not found.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">CPF9549 E</td>
|
|
<td align="left" valign="top">Error addressing API parameter.</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<br>
|
|
<br>
|
|
|
|
<h3><a name="HDRDBGLANG">Debug Language Statements</a></h3>
|
|
|
|
<p>Debug language statements are the principal mechanism by which a programmer
|
|
debugs a program. Programmers control the operation of a program by:</p>
|
|
|
|
<ul>
|
|
<li>Entering break statements to select where the program will stop<br>
|
|
<br>
|
|
</li>
|
|
|
|
<li>Entering step statements to run one or more statements of the program under
|
|
investigation<br>
|
|
<br>
|
|
</li>
|
|
|
|
<li>Entering watch statements to stop the program when a specified storage
|
|
location is changed<br>
|
|
<br>
|
|
</li>
|
|
</ul>
|
|
|
|
<p>The clear statement enables programmers to remove a particular breakpoint or
|
|
all breakpoints. It can also be used to clear watches. Information about the
|
|
state of the program being debugged can be extracted when program processing is
|
|
suspended. The evaluate statement permits programmers to display the value of
|
|
an expression, or to display an aggregate, and to alter the value of a
|
|
variable.</p>
|
|
|
|
<p>Debug language statements are constructed by the client program and placed
|
|
in the input buffer. If multiple debug language statements are placed in the
|
|
input buffer, they must be separated by one or more blanks. The Submit Debug
|
|
Command API accepts the debug language statements of ATTR, BREAK, CLEAR, EVAL,
|
|
QUAL, SBREAK, STEP, TBREAK, and WATCH.</p>
|
|
|
|
<p>When multiple debug statements are specified in the same input buffer, a
|
|
QUAL statement must not follow an EVAL statement. The WATCH debug statement
|
|
cannot be specified with any other debug statement, including another WATCH
|
|
statement.</p>
|
|
|
|
<br>
|
|
<h3><a name="Header_231">ATTR Statement</a></h3>
|
|
|
|
<p>The variable appearing in an ATTR statement is found in the debug symbol
|
|
table. The symbol table information for the variable is returned.</p>
|
|
|
|
<p>The following example shows an ATTR statement:</p>
|
|
|
|
<p><img src="RBAFX644.gif" alt="ATTR statement"></p>
|
|
|
|
<p>The locality of variables that appear in an ATTR statement is defined by the
|
|
most recently run qualify statement. The program calling this API is advised to
|
|
issue a qualify statement that defines the stop position when program operation
|
|
is suspended.</p>
|
|
|
|
<br>
|
|
|
|
|
|
<h3><a name="Header_232">Break Statement</a></h3>
|
|
|
|
<p>The break statement permits a programmer to enter a breakpoint. Breakpoints
|
|
are entered on the program under investigation. When the program under
|
|
investigation encounters a breakpoint, operation is suspended.</p>
|
|
|
|
<p>The following example shows a break statement:</p>
|
|
|
|
<p><img src="RBAFX645.gif" alt="Break statement"></p>
|
|
|
|
<p>The position marks where program operation is suspended when a breakpoint is
|
|
encountered. Line numbers are used to identify the position when the break
|
|
statement is entered. The line number entered is mapped to a statement by the
|
|
Submit Debug Command API. A breakpoint causes the program to stop just before
|
|
the break statement is run.</p>
|
|
|
|
<p>Unconditional and conditional breakpoints can be entered. Unconditional
|
|
breakpoints are discussed first, followed by a discussion of conditional
|
|
breakpoints.</p>
|
|
|
|
<p>An unconditional breakpoint is entered by issuing the first form of the
|
|
break statement.</p>
|
|
|
|
<p><img src="RBAFX639.gif" alt="First form of break statement"></p>
|
|
|
|
<p>A line number is entered for the position. Line numbers are associated with
|
|
each view in that they identify the lines of source in a view. Line numbers are
|
|
assigned sequentially beginning with line one.</p>
|
|
|
|
<p>A conditional breakpoint is entered by issuing the second form of the break
|
|
statement.</p>
|
|
|
|
<p><img src="RBAFX640.gif" alt="Second form of break statement"></p>
|
|
|
|
<p>The position of a conditional breakpoint is assigned in the same way as the
|
|
position in an unconditional breakpoint. A line number is entered for the
|
|
position.</p>
|
|
|
|
<p>The condition of a conditional breakpoint is the expression following the
|
|
reserved word WHEN. The result of the expression must have a Boolean or a
|
|
logical value when evaluated. The expression is interpreted before the
|
|
statement on which the breakpoint was entered is run. If the value of the
|
|
expression is TRUE, operation of the program investigation is suspended. If the
|
|
value of the expression is FALSE, operation continues without interruption.</p>
|
|
|
|
<p>The locality of variables used in the conditional expression is defined by
|
|
the line number that defines the position.</p>
|
|
|
|
<p>A breakpoint can be replaced by entering another breakpoint using the same
|
|
position. The most recent breakpoint entered on a position is the active
|
|
breakpoint.</p>
|
|
|
|
<p>BREAK may be replaced by the reserved word AT in the statement that defines
|
|
the break statement.</p>
|
|
|
|
<p><img src="RBAFX641.gif" alt="Defining the break statement"></p>
|
|
|
|
<p>For threaded applications, breakpoints that are specified with the break
|
|
statement are global to all threads in the job being debugged. These are called
|
|
job breakpoints. Thread-specific breakpoints are set with the tbreak statement.
|
|
A job may not have both a job breakpoint and thread breakpoints at the same
|
|
position. When a job breakpoint is in effect and a thread breakpoint is
|
|
specified, the job breakpoint is replaced. When thread breakpoints are in
|
|
effect and a job breakpoint is specified, the thread breakpoints are
|
|
replaced.</p>
|
|
|
|
<br>
|
|
<h3><a name="Header_233">Clear Statement</a></h3>
|
|
|
|
<p>The clear statement enables a programmer to remove a particular breakpoint
|
|
or all breakpoints in a program. Particular breakpoints are identified by the
|
|
number of the line on which they are active. All breakpoints in a program are
|
|
designated by the keyword PGM. The clear statement is also used to clear one or
|
|
all watch conditions. The keyword WATCH followed by the ALL keyword clears all
|
|
watch conditions. If a watch number is specified after the WATCH keyword, only
|
|
the watch represented by that watch number is cleared.</p>
|
|
|
|
<p>The following example shows a clear statement:</p>
|
|
|
|
<p><img src="RBAFX642.gif" alt="Clear statement"></p>
|
|
|
|
<p>For threaded applications, if a thread breakpoint is in effect at the
|
|
position specified, it is cleared in the current thread only. If the breakpoint
|
|
is a job breakpoint, it is cleared for the job. When the clear statement with
|
|
the PGM keyword is specified, it will remove all job and thread
|
|
breakpoints.</p>
|
|
|
|
<br>
|
|
<h3><a name="Header_234">Evaluate Statement</a></h3>
|
|
|
|
<p>The expression appearing in an evaluate statement is evaluated, and the
|
|
value of the expression is returned. The value of an expression is formatted
|
|
according to the expression type.</p>
|
|
|
|
<p>The following example shows an evaluate statement:</p>
|
|
|
|
<img src="delta.gif" alt="Start of change">
|
|
<p><img src="RBAFX643.gif" alt="Evaluate statement"></p>
|
|
<img src="deltaend.gif" alt="End of change">
|
|
|
|
<p>An evaluate statement allows a programmer to display the value of an
|
|
expression or an aggregate, or to alter the value of a variable. The precise
|
|
definition of what can be displayed or altered is dependent on the language of
|
|
the module being debugged.</p>
|
|
|
|
<p>Variables can be displayed or altered when program processing is suspended.
|
|
Program operation is temporarily suspended as a result of encountering a
|
|
breakpoint or completing a step statement. It is also suspended when a watch
|
|
condition is satisfied.</p>
|
|
|
|
<p>Variables are formatted according to their type recorded in the HLL symbol
|
|
table, and according to the language of the module being debugged. Formats
|
|
available include integer, hexadecimal, exponential, and address, among
|
|
others.</p>
|
|
|
|
<p>Variables also may be formatted using the formatting option. The formatting
|
|
option has the general form of: <em>:<format code> <length></em>,
|
|
such as EVAL STRING :s 50.</p>
|
|
|
|
<p>The<em>:<format code></em> can be one of the following:</p>
|
|
|
|
<table width="80%">
|
|
<tr>
|
|
<th align="left" valign="top">Format Code</th>
|
|
<th align="left" valign="top">Description</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top" width="20%"><em>:c</em></td>
|
|
<td valign="top" width="80%">An EBCDIC single-character format</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top"><em>:x</em></td>
|
|
<td valign="top">A hexadecimal format</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top"><em>:s</em></td>
|
|
<td valign="top">An EBCDIC character-string format (only for the C and C++
|
|
languages)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top"><em>:f</em></td>
|
|
<td valign="top">An EBCDIC character-string format (only for the C and C++
|
|
languages). This returned type can be used by the source debugger to indicate
|
|
that alternative formatting was requested by the user.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top"><em>:a</em></td>
|
|
<td valign="top">An ASCII character-string format (only for the ILE languages).
|
|
The string is converted from the job CCSID's related-ASCII CCSID to the job
|
|
CCSID.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top"><em>:u</em></td>
|
|
<td valign="top">A Unicode character-string format (only for ILE languages).
|
|
The string is converted from Unicode CCSID 13488 to the job CCSID.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top"><img src="delta.gif" alt="Start of change"></td>
|
|
<td></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top"><br><em>:w</em></td>
|
|
<td valign="top">A Unicode character-string format (only for the C and C++ languages).
|
|
The string is converted from Unicode CCSID 1232 to the job CCSID. </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top"><img src="deltaend.gif" alt="End of change"></td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p>The <em><length></em> is a positive integer that indicates the number
|
|
of bytes to format. The defaults for the format codes are as follows:</p>
|
|
|
|
<table width="80%">
|
|
<tr>
|
|
<th align="left" valign="top">Format Code</th>
|
|
<th align="left" valign="top">Default</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top" width="20%"><em>:c</em></td>
|
|
<td valign="top" width="80%">1</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top"><em>:x</em></td>
|
|
<td valign="top">The length of the expression value</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top"><em>:s</em></td>
|
|
<td valign="top">30</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top"><em>:f</em></td>
|
|
<td valign="top">1024</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top"><em>:a</em></td>
|
|
<td valign="top">1024</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top"><em>:u</em></td>
|
|
<td valign="top">1024</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top"><img src="delta.gif" alt="Start of change"></td>
|
|
<td></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top"><em>:w</em></td>
|
|
<td valign="top">1024</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top"><img src="deltaend.gif" alt="End of change"></td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p>
|
|
<img src="delta.gif" alt="Start of change">
|
|
Specification of the %LOCALVARS keyword will result in the evaluation of
|
|
every variable originating in the current scope.
|
|
<img src="deltaend.gif" alt="End of change">
|
|
</p>
|
|
|
|
<p>The locality of variables that appear in an evaluate statement is defined by
|
|
the most recently run qualify statement. The program calling this API is
|
|
advised to issue a qualify statement that defines the stop position when
|
|
program operation is suspended.</p>
|
|
|
|
<p>EVAL may be replaced by the reserved word LIST in the statement that defines
|
|
the evaluate statement.</p>
|
|
|
|
<img src="delta.gif" alt="Start of change">
|
|
<p><img src="RBAFX655.gif" alt="Defining the evaluate statement"></p>
|
|
<img src="deltaend.gif" alt="End of change">
|
|
|
|
<p>The following table describes the formatting of data by type.</p>
|
|
|
|
<table border width="80%">
|
|
<tr>
|
|
<th align="left" valign="top" colspan="3"><em><a name="TBLDLTB50">Presentation
|
|
Formats</a></em></th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<th align="left" valign="top">Type</th>
|
|
<th align="left" valign="top">Format</th>
|
|
<th align="left" valign="top">Example</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top" width="30%">kChar__8_E</td>
|
|
<td align="left" valign="top" width="30%">c</td>
|
|
<td align="left" valign="top" width="40%">A</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">kChar_16_E</td>
|
|
<td align="left" valign="top">Shift-out cc... shift-in</td>
|
|
<td align="left" valign="top"> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">kEnum____E</td>
|
|
<td align="left" valign="top">ccccc (dd)</td>
|
|
<td align="left" valign="top">yellow (25)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">kString__E</td>
|
|
<td align="left" valign="top">ccccccccc</td>
|
|
<td align="left" valign="top">Hello World</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">kInt_32__E</td>
|
|
<td align="left" valign="top">-dd...d<br>
|
|
dd...d</td>
|
|
<td align="left" valign="top">-676</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">kPacked__E</td>
|
|
<td align="left" valign="top">dd.ddd<br>
|
|
-dd.ddd</td>
|
|
<td align="left" valign="top">5678.01</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">kZonedTE_E</td>
|
|
<td align="left" valign="top">dd.ddd<br>
|
|
-dd.ddd</td>
|
|
<td align="left" valign="top">5678.01</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">kZonedTS_E</td>
|
|
<td align="left" valign="top">dd.ddd<br>
|
|
-dd.ddd</td>
|
|
<td align="left" valign="top">5678.01</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">kZonedLE_E</td>
|
|
<td align="left" valign="top">dd.ddd<br>
|
|
-dd.ddd</td>
|
|
<td align="left" valign="top">5678.01</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">kZonedLS_E</td>
|
|
<td align="left" valign="top">dd.ddd<br>
|
|
-dd.ddd</td>
|
|
<td align="left" valign="top">5678.01</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">kBinD_16_E</td>
|
|
<td align="left" valign="top">dd.ddd<br>
|
|
-dd.ddd</td>
|
|
<td align="left" valign="top">5678.01</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">kBinD_32_E</td>
|
|
<td align="left" valign="top">dd.ddd<br>
|
|
-dd.ddd</td>
|
|
<td align="left" valign="top">5678.01</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">kBinD_64_E</td>
|
|
<td align="left" valign="top">dd.ddd<br>
|
|
-dd.ddd</td>
|
|
<td align="left" valign="top">5678.01</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">kFixedL__E</td>
|
|
<td align="left" valign="top">ccccc</td>
|
|
<td align="left" valign="top">Hello World</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">kHex_____E</td>
|
|
<td align="left" valign="top">xx xx xx xx</td>
|
|
<td align="left" valign="top">F1 F2 F3</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">kCard_32_E</td>
|
|
<td align="left" valign="top">dd...d</td>
|
|
<td align="left" valign="top">546</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">kReal_64_E</td>
|
|
<td align="left" valign="top">+d.d...dE+dd<br>
|
|
-d.d...dE-dd</td>
|
|
<td align="left" valign="top">-1.2345678901234E-95</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left" valign="top">KSpcPtr__E</td>
|
|
<td align="left" valign="top">Pointer types:<br>
|
|
BEP (behavior)<br>
|
|
IVP (invocation)<br>
|
|
LBL (label)<br>
|
|
MTP (method)<br>
|
|
OBP (object)<br>
|
|
PRP (procedure)<br>
|
|
SPP (space)<br>
|
|
SYP (system)</td>
|
|
<td align="left" valign="top">SPP:*NULL<br>
|
|
IVP:COFE001001201003<br>
|
|
SPP:COCE100201021003</td>
|
|
</tr>
|
|
</table>
|
|
|
|
|
|
<p>For threaded applications, the EVAL statement is run in the current
|
|
thread.</p>
|
|
|
|
<br>
|
|
<h3><a name="Header_235">Locality</a></h3>
|
|
|
|
<p>Locality is the term used to describe the range over which an entity may be
|
|
referred to in a module. The terms locality and scope are synonymous. By this
|
|
definition, the locality of an entity is always confined to the compilation
|
|
unit in which it was declared.</p>
|
|
|
|
<p>Entity is a formal way of describing all things that can be declared in a
|
|
module. Variables, procedures, labels, types, and constants are entities.</p>
|
|
|
|
<p>The locality of an entity is defined by the block in which it is declared.
|
|
An entity is visible in the block in which it is declared and all subordinate
|
|
blocks. A variable can be referred to in the block in which it is declared.</p>
|
|
|
|
<p>An entity may be declared in a block that encloses other blocks. The entity
|
|
declared in the outer, enclosing block is visible in inner blocks if the name
|
|
does not collide with other entities in inner blocks. A variable declared in an
|
|
outer block can be referred to in an inner block if no variable of the same
|
|
name is declared in the inner block.</p>
|
|
|
|
<p>To fully qualify a particular locality in a program, both program and module
|
|
must be identified.</p>
|
|
|
|
<br>
|
|
<h3><a name="Header_236">Qualify Statement</a></h3>
|
|
|
|
<p>The qualify statement permits a programmer to define the locality of
|
|
variables that appear in succeeding evaluate statements. Locality is defined by
|
|
the line number operand on the qualify statement. The locality assigned is that
|
|
block in which the line number appears.</p>
|
|
|
|
<p>The following example shows a qualify statement:</p>
|
|
|
|
<p><img src="RBAFX660.gif" alt="Qualify statement"></p>
|
|
|
|
<p>The locality assigned when a qualify statement is issued remains in effect
|
|
until the next qualify statement is issued. The Submit Debug Command API keeps
|
|
the locality assigned for the purpose of evaluating expressions. Users of the
|
|
Submit Debug Command API are advised to issue the qualify statement whenever
|
|
program operation is suspended. Use the line number of the stopped position to
|
|
identify the current locality. In this way, programmers may issue several
|
|
evaluate statements that refer to variables that are defined in the locality of
|
|
the stopped position.</p>
|
|
|
|
<p>For threaded applications, the QUAL statement is run in the current
|
|
thread.</p>
|
|
|
|
<br>
|
|
<h3><a name="Header_241">SBreak Statement</a></h3>
|
|
|
|
<p>The sbreak statement permits a programmer to enter a service entry
|
|
breakpoint. Service entry breakpoints are entered on the program about to be
|
|
spawned by another program. When the spawned program encounters a service entry
|
|
breakpoint, operation is suspended.</p>
|
|
|
|
<p>The following example shows a sbreak statement:</p>
|
|
|
|
<p><img src="rbafx661.gif" alt="SBreak statement"></p>
|
|
|
|
<p>The position marks where program operation is suspended when a service entry
|
|
breakpoint is encountered. Line numbers are used to identify the position when
|
|
the sbreak statement is entered. The line number entered is mapped to a
|
|
statement by the Submit Debug Command API. A service entry breakpoint causes
|
|
the program to stop just before the sbreak statement is run.</p>
|
|
|
|
<p>The userid specifies the user profile under which a job must be executing
|
|
for the service entry point being set to be active in that job. If the userid
|
|
is not specified, it defaults to the user profile under which the job in which
|
|
the sbreak command is issued is running.</p>
|
|
|
|
<p>A service entry point, job breakpoint or thread breakpoint cannot exist at
|
|
the same time at the same position. Only one of the three types of breakpoints
|
|
may exist at a specified position. If the sbreak command is issued for a
|
|
position in which one of the three types of breakpoints already exists, the
|
|
existing breakpoint will be replaced by the service entry point.</p>
|
|
|
|
<br>
|
|
|
|
<h3><a name="Header_237">Step Statement</a></h3>
|
|
|
|
<p>The step statement permits a programmer to run one or more statements of the
|
|
program under investigation for testing purposes. The program being tested runs
|
|
the number of statements specified in the statement-count operand. Operation of
|
|
the program under test is suspended at completion of the step statement.</p>
|
|
|
|
<p>The following example shows a step statement:</p>
|
|
|
|
<img src="RBAFX637.gif" alt="Step statement">
|
|
|
|
<p>If no value is entered for the statement-count, one statement is run.</p>
|
|
|
|
<p>The reserved words OVER and INTO direct the source debugger to step over or
|
|
into procedures, respectively. If OVER appears in a step statement, the source
|
|
debugger does not suspend operation in any procedures that are called.
|
|
Procedures and functions are run without interruption.</p>
|
|
|
|
<p>The INTO reserved word directs the source debugger to stop in procedures
|
|
that are called.</p>
|
|
|
|
<p>If neither INTO or OVER is entered on the step statement, OVER is
|
|
assumed.</p>
|
|
|
|
<p>There are some step limitations. The following code cannot be entered using
|
|
the step statement:</p>
|
|
|
|
<ul>
|
|
<li>Procedures in modules that have no debug data.<br>
|
|
<br>
|
|
</li>
|
|
|
|
<li>Modules that are optimized at level 40.</li>
|
|
</ul>
|
|
|
|
<p>For threaded applications, the STEP statement is run in the current thread.
|
|
Each thread can step independently of each other, at the same time.</p>
|
|
|
|
<br>
|
|
<h3><a name="Header_238">TBreak Statement</a></h3>
|
|
|
|
<p>The tbreak statement permits a programmer to enter a breakpoint for the
|
|
current thread. Breakpoints are entered on the program under investigation.
|
|
When the program under investigation encounters a breakpoint in the thread,
|
|
operation is suspended. The tbreak statement has the same format and operation
|
|
as the break statement.</p>
|
|
|
|
<p>Each thread in a threaded application may have a different thread breakpoint
|
|
at the same position. Job breakpoints and thread breakpoints cannot
|
|
coexist.</p>
|
|
|
|
<p>A tbreak statement entered at the same position as a tbreak that was
|
|
specified earlier in the same thread is replaced by the new thread
|
|
breakpoint.</p>
|
|
|
|
<p>A tbreak statement entered at the same position as a job breakpoint that was
|
|
specified earlier replaces the job breakpoint with a thread breakpoint.</p>
|
|
|
|
<p>A break statement entered at the same position as thread breakpoints that
|
|
were specified earlier replaces all thread breakpoints at that position with a
|
|
job breakpoint that is in effect for all threads.</p>
|
|
|
|
<br>
|
|
<h3><a name="Header_239">Watch Statement</a></h3>
|
|
|
|
<p>The watch statement permits a programmer to request a breakpoint when the
|
|
content of a specified storage location is changed from its current value.
|
|
After the watch condition is successfully set, a change to the content of the
|
|
watched storage location causes program operation to be suspended. Then the
|
|
Program Stop Handler exit program that is specified on the Start Source Debug
|
|
API is called.</p>
|
|
|
|
<p>The following shows the syntax of the watch statement:</p>
|
|
|
|
<p><img src="RBAFX638.gif" alt="Watch statement"></p>
|
|
|
|
<p>The expression is used to determine the address of the storage location to
|
|
watch. The expression must resolve to an lvalue (that is, a location that can
|
|
be assigned to). If an expression is specified that is not supported, error
|
|
code CPF7E62 is returned. The scope of the expression variables in a watch
|
|
statement is defined by the most recently issued QUAL debug language
|
|
statement.</p>
|
|
|
|
<p>The length of the watch comparison operation is the same as the expression
|
|
type length, or the length specified with the optional watch length parameter.
|
|
For example, if a 4-byte binary integer is specified without the watch length
|
|
parameter, the comparison length is 4 bytes. If the watch length parameter is
|
|
specified, it overrides the length of the expression in determining the watch
|
|
length. The watch length specification format is a colon character followed by
|
|
the length in bytes to watch. For example, the watch command below would watch
|
|
2 bytes starting at the first byte of variable i:</p>
|
|
|
|
<p>watch i : 2</p>
|
|
|
|
<p>The watch length must be in the range 1 through 128 bytes. If the watch
|
|
length is not valid, error code CPF7E63 is returned.</p>
|
|
|
|
<p>The maximum number of watches that can be active across the entire system is
|
|
guaranteed to be at least 128, but may range up through 256, depending on how
|
|
the watched storage is mapped by the system. This includes dedicated service
|
|
tools (DST) watches. Exceeding this number results in error code CPF8E2C being
|
|
returned. A user session may have as many watches as are available.</p>
|
|
|
|
<p>There are some restrictions on overlapping watch locations. If any of the
|
|
following conditions are true, error code CPF8E2B is returned:</p>
|
|
|
|
<ul>
|
|
<li>Watches in same job: Two watch locations may not overlap in any way.<br>
|
|
<br>
|
|
</li>
|
|
|
|
<li>Watches in different jobs: Two watch locations may not start at the same
|
|
storage address. Otherwise, overlap is permitted.</li>
|
|
</ul>
|
|
|
|
<p>A watch condition is cleared by using the CLEAR debug language
|
|
statement.</p>
|
|
|
|
<p>It is important to understand that the watch statement establishes the
|
|
watched storage location address when the watch statement is entered, and it
|
|
does not change. This can cause misleading results if a temporary storage
|
|
location is watched and that storage location is reused while the application
|
|
is running. An example of this is the automatic storage of an ILE C procedure,
|
|
which can be reused if the procedure ends.</p>
|
|
|
|
<p>The WATCH debug statement cannot be specified with any other debug
|
|
statement, including another WATCH statement.</p>
|
|
|
|
<p>For threaded applications, the WATCH statement is run in the current thread.
|
|
The address watched is global to all threads. Any thread changing a watched
|
|
location will cause a breakpoint in that thread.</p>
|
|
|
|
<hr>
|
|
API 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>
|
|
|