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

703 lines
26 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Copyright" content="Copyright (c) 2006 by IBM Corporation">
<title>Retrieve Statement View (QteRetrieveStatementView) 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: -->
<!-- YYMMDD USERID Change description -->
<!--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>Retrieve Statement View (QteRetrieveStatementView) API</h2>
<div class="box" style="width: 60%;">
<br>
&nbsp;&nbsp;Required Parameter Group:<br>
<!-- iddvc RMBR -->
<br>
<table width="100%">
<tr>
<td align="center" valign="top" width="10%">1</td>
<td align="left" valign="top" width="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">Start line number</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Binary(4)</td>
</tr>
<tr>
<td align="center" valign="top">5</td>
<td align="left" valign="top">Number of lines</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">Error code</td>
<td align="left" valign="top">I/O</td>
<td align="left" valign="top">Char(*)</td>
</tr>
</table>
<br>
&nbsp;&nbsp;Service Program: QTEDBGS<br>
<!-- iddvc RMBR -->
<br>
&nbsp;&nbsp;Threadsafe: No<br>
<!-- iddvc RMBR -->
<br>
</div>
<p>The Retrieve Statement View (QteRetrieveStatementView) API is used to retrieve the statement view and related information. The statement view information that is retrieved can be useful for breakpoint processing. The caller must specify the following:</p>
<ul>
<li>The registered statement view ID<br><br></li>
<li>The starting statement view line number to be retrieved<br><br></li>
<li>The number of statement view lines to retrieve<br><br></li>
<li>A buffer to contain the statement view and related information</li>
</ul>
<br>
<!-- Please NOTE: DO NOT DELETE THIS SECTION if this API has no authorities and locks. -->
<!-- Instead, use the commented out coding below to indicate NONE. -->
<h3>Authorities and Locks</h3>
<!-- Use this if there are no authorities and locks. -->
<p>None.</p>
<br>
<h3>Required Parameter Group</h3>
<dl>
<dt><strong>Receiver variable</strong></dt>
<dd>OUTPUT; CHAR(*)
<p>The receiver variable that receives the information requested. You can specify the size of the area to be smaller than the format requested as long as you specify the length parameter correctly. As a result, the API returns only the data that the area can hold. For more information, see <a href="#HDRFDRMRV">Format of Receiver Variable</a>.</p>
</dd>
<dt><strong>Length of receiver variable</strong></dt>
<dd>INPUT; BINARY(4)
<p>The length of the receiver variable provided. The length of receiver variable parameter may be specified up to the size of the receiver variable specified in the user program. If the length of receiver variable parameter specified is larger than the allocated size of the receiver variable specified in the user program, the results are not predictable. The minimum length is 8 bytes.</p>
</dd>
<dt><strong>View ID</strong></dt>
<dd>INPUT; BINARY(4)
<p>The identifier of the previously registered statement view obtained by using the Register Debug View (QteRegisterDebugView) API.</p>
</dd>
<dt><strong>Start line number</strong></dt>
<dd>INPUT; BINARY(4)
<p>The number of the first statement view line that the API is to retrieve. Statement view lines begin at line 1.</p>
</dd>
<dt><strong>Number of lines</strong></dt>
<dd>INPUT; BINARY(4)
<p>The number of lines of the statement view to be retrieved. This number includes the line specified in the start line number parameter. If fewer lines than requested are available, the number of lines placed in the receiver variable may be less than the number specified. No more than the number of lines specified is placed in the receiver variable.</p>
<p>The following special value is supported for this parameter:</p>
<table cellpadding="3">
<!-- cols="5 95" -->
<tr>
<td valign="top"><em>0</em></td>
<td valign="top">All lines from the start line number to the end of the statement view should be retrieved.</td>
</tr>
</table>
<dt><strong>Error code</strong></dt>
<dd>I/O; CHAR(*)
<p>The structure in which to return error information. For the format of the structure, see <a href="../apiref/error.htm#hdrerrcod">Error Code Parameter</a>.</p>
</dd>
</dl>
<br>
<h3><a name="HDRFDRMRV">Format of Receiver Variable</a></h3>
<p>The receiver variable consists of:</p>
<ul>
<li>A receiver variable header section.<br><br></li>
<li>A section containing the statement view lines.<br><br></li>
<li>A section containing information for each procedure in the statement view.<br><br></li>
<li>A string space containing the statement view procedure names.<br><br></li>
<li>A section containing offsets to additional information about individual statement view lines.<br><br></li>
<li>A section containing additional information about individual statement view lines.<br><br></li>
<li>A space containing variable length fields that are referenced by other returned data sections.</li>
</ul>
<p>Variables containing offsets are used to access statement view data. All offsets are relative to the beginning of the receiver variable.</p>
<br>
<h3>Receiver Variable Header Section</h3>
<p>The following table shows the information supplied in the receiver variable parameter. For more information on each field, see <a href="#HDRBA">Field Descriptions</a>.</p>
<table border width="80%">
<tr>
<th align="center" valign="bottom" colspan="2">Offset</th>
<th align="left" valign="bottom" rowspan="2">Type</th>
<th align="left" valign="bottom" rowspan="2">Field</th>
</tr>
<tr>
<th align="center" valign="bottom">Dec</th>
<th align="center" valign="bottom">Hex</th>
</tr>
<tr>
<td align="center" valign="top" width="10%">0</td>
<td align="center" valign="top" width="10%">0</td>
<td align="left" valign="top" width="20%">BINARY(4)</td>
<td align="left" valign="top" width="60%">Bytes returned</td>
</tr>
<tr>
<td align="center" valign="top">4</td>
<td align="center" valign="top">4</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Bytes available</td>
</tr>
<tr>
<td align="center" valign="top">8</td>
<td align="center" valign="top">8</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Offset to first statement view line</td>
</tr>
<tr>
<td align="center" valign="top">12</td>
<td align="center" valign="top">C</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Number of lines returned</td>
</tr>
<tr>
<td align="center" valign="top">16</td>
<td align="center" valign="top">10</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of statement view line</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="center" valign="top">14</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Offset to first procedure information structure</td>
</tr>
<tr>
<td align="center" valign="top">24</td>
<td align="center" valign="top">18</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Offset to first statement-view-line additional-information offset.</td>
</tr>
</table>
<br><br>
<h3>Statement View Section</h3>
<p>The statement view is returned as an array of statement lines. The first statement view line can be accessed by using the first view line offset in the receiver header. The number of lines returned variable in the receiver header is used to tell how many statement lines were returned. The total number of bytes in each line is equal to the line length. Each line has the following format.</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%">Statement number</td>
</tr>
<tr>
<td align="center" valign="top">4</td>
<td align="center" valign="top">4</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Statement 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">Offset to statement procedure information structure</td>
</tr>
</table>
<br><br>
<h3>Procedure Information Section</h3>
<p>The procedure information section contains one variable-length data structure for each procedure in the statement view. The first procedure information data structure can be accessed by using the first procedure information offset in the receiver header. Each statement view line contains a statement procedure information offset that can be used to locate procedure information for the statement line. Each procedure information data structure has the following format.</p>
<table border width="80%">
<tr>
<th align="center" valign="bottom" colspan="2">Offset</th>
<th align="left" valign="bottom" rowspan="2">Type</th>
<th align="left" valign="bottom" rowspan="2">Field</th>
</tr>
<tr>
<th align="center" valign="bottom">Dec</th>
<th align="center" valign="bottom">Hex</th>
</tr>
<tr>
<td align="center" valign="top" width="10%">0</td>
<td align="center" valign="top" width="10%">0</td>
<td align="left" valign="top" width="20%">BINARY(4)</td>
<td align="left" valign="top" width="60%">Offset to next procedure information structure</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">Procedure dictionary 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">Offset to procedure name</td>
</tr>
<tr>
<td align="center" valign="top">12</td>
<td align="center" valign="top">C</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of procedure name</td>
</tr>
<tr>
<td align="center" valign="top">16</td>
<td align="center" valign="top">10</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Offset to first statement line range element</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="center" valign="top">14</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Number of statement line ranges</td>
</tr>
<tr>
<td align="left" valign="top" colspan="4"><strong>Note:</strong> The following fields are repeated for each statement line range.</td>
</tr>
<tr>
<td align="center" valign="top">&nbsp;</td>
<td align="center" valign="top">&nbsp;</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Low line number</td>
</tr>
<tr>
<td align="center" valign="top">&nbsp;</td>
<td align="center" valign="top">&nbsp;</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">High line number</td>
</tr>
</table>
<br><br>
<h3>Procedure Name String Space</h3>
<p>The procedure name string space contains the text of the procedure names in the module. The procedure name offset in the procedure information section is used to access a procedure name. The procedure name length is also contained in the procedure information section. The procedure name is converted to the coded character set identifier (CCSID) of the job.</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%">&nbsp;</td>
<td align="center" valign="top" width="10%">&nbsp;</td>
<td align="left" valign="top" width="20%">CHAR(*)</td>
<td align="left" valign="top" width="60%">Procedure name</td>
</tr>
</table>
<br><br>
<h3>Statement-View-Line Additional-Information Offsets Section</h3>
<p>If the compiler supplies it, additional information is returned for individual statement view lines. For example, a statement may have a name associated with it, such as a block or label name. Each line in the statement view section has a corresponding offset to additional information for the line. Thus, the first offset in this section is used to find the additional information for the first statement view line returned. The second offset will reference additional information for the second statement view line returned, and so on. There must be space in the receiver variable for the additional-information offsets of all statement view lines returned or none of the offsets is returned. The presence of this section is indicated by a nonzero value in the offset to first statement-view-line additional-information offset in the receiver header. If this section is present, there is one offset for each statement view line returned. If there is additional information for a statement view line, the additional information offset for it is nonzero. Each offset has the following format.</p>
<table border width="80%">
<!-- cols="10 10 20 60" -->
<tr>
<th align="center" valign="bottom" colspan="2">Offset</th>
<th align="left" valign="bottom" rowspan="2">Type</th>
<th align="left" valign="bottom" rowspan="2">Field</th>
</tr>
<tr>
<th align="center" valign="bottom">Dec</th>
<th align="center" valign="bottom">Hex</th>
</tr>
<tr>
<td align="left" valign="top" colspan="4"><strong>Note:</strong> The following field is repeated for each statement view line returned.</td>
</tr>
<tr>
<td align="center" valign="top" width="10%">0</td>
<td align="center" valign="top" width="10%">0</td>
<td align="left" valign="top" width="20%">BINARY(4)</td>
<td align="left" valign="top" width="60%">Offset to statement-view-line additional information</td>
</tr>
</table>
<br><br>
<h3>Statement-View-Line Additional-Information Section</h3>
<p>If the compiler supplies it, additional information is returned for individual statement view lines. For example, a statement may have a name associated with it, such as a block or label name. The statement-view-line additional-information section contains one variable-length data structure for each statement view line that has additional information associated with it. If there is not enough room in the receiver variable for all of the additional-information data structures to be returned, the number that fits is returned. The additional information data structures are referenced by the offsets in the statement-view-line additional-information offsets section. Each additional-information data structure has the following format.</p>
<table border width="80%">
<tr>
<th align="center" valign="bottom" colspan="2">Offset</th>
<th align="left" valign="bottom" rowspan="2">Type</th>
<th align="left" valign="bottom" rowspan="2">Field</th>
</tr>
<tr>
<th align="center" valign="bottom">Dec</th>
<th align="center" valign="bottom">Hex</th>
</tr>
<tr>
<td align="center" valign="top" width="10%">0</td>
<td align="center" valign="top" width="10%">0</td>
<td align="left" valign="top" width="20%">BINARY(4)</td>
<td align="left" valign="top" width="60%">Offset to statement name</td>
</tr>
<tr>
<td align="center" valign="top">4</td>
<td align="center" valign="top">4</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Length of statement name</td>
</tr>
</table>
<br><br>
<h3>Variable Length Field Section</h3>
<p>This section contains space to return variable length fields. These fields are referenced by other returned data structures through offsets. Usually, a length field would also be contained within the same data structure that references a field in this space.</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%">&nbsp;</td>
<td align="center" valign="top" width="10%">&nbsp;</td>
<td align="left" valign="top" width="20%">CHAR(*)</td>
<td align="left" valign="top" width="60%">Variable length field</td>
</tr>
</table>
<br><br>
<h3><a name="HDRBA">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>High line number.</strong> The high view-line number in the statement view of a procedure statement range.</p>
<p><strong>Length of procedure name.</strong> The length of the procedure name in the procedure string space. For OPM programs the procedure name length is set to a value of 1.</p>
<p><strong>Length of statement name.</strong> The length of the statement name associated with the statement view line.</p>
<p><strong>Length of statement view line.</strong> The length of each statement view line in the statement view section.</p>
<p><strong>Low line number.</strong> The low view-line number in the statement view of a procedure statement range.</p>
<p><strong>Number of lines returned.</strong> The number of statement view lines retrieved by this API. This may be less than the number of lines requested or available if the receiver variable is not large enough to hold the number of lines requested.</p>
<p><strong>Number of statement line ranges.</strong> The number of statement view line ranges in the procedure information data structure.</p>
<p><strong>Offset to first procedure information structure.</strong> The displacement from the start of the receiver variable to the first procedure information data structure in the procedure information section. This value is zero when no procedure information is returned because of insufficient receiver variable space.</p>
<p><strong>Offset to first statement line range element.</strong> The displacement from the start of the receiver variable to the first statement range element in the procedure information data structure.</p>
<p><strong>Offset to first statement view line.</strong> The displacement from the start of the receiver variable to the first statement view line. This value is zero if no statement view lines are returned because of insufficient receiver variable space.</p>
<p><strong>Offset to first statement-view-line additional-information offset.</strong> The displacement from the start of the receiver variable to the first statement-view-line additional-information offset. This value is zero if no statement-view-line additional-information offsets are returned because of insufficient receiver variable space, or if the compiler does not support debug data for additional statement view lines.</p>
<p><strong>Offset to next procedure information structure.</strong> The displacement from the start of the receiver variable to the next procedure information data structure. This value is zero when there are no more procedure information data structures.</p>
<p><strong>Offset to procedure name.</strong> The displacement from the start of the receiver variable to the procedure name. This value is zero if the procedure name is not returned because it would not fit in the procedure string space.</p>
<p><strong>Offset to statement name.</strong> The displacement from the start of the receiver variable to the statement name that is associated with the statement view line. For example, this could be a block or label name. This value is zero if the statement name is not returned because it would not fit in the variable length field section, or because the compiler did not provide a statement name.</p>
<p><strong>Offset to statement procedure information structure.</strong> The displacement from the start of the receiver variable to appropriate procedure information data structure in the procedure information section. This value is zero if the procedure information for this statement was not returned because of insufficient receiver-variable space.</p>
<p><strong>Offset to statement-view-line additional information.</strong> The displacement from the start of the receiver variable to the statement-view-line additional-information data structure. This value is zero if no statement-view-line additional information is returned because of insufficient receiver variable space, or because there is no additional information for the statement view line.</p>
<p><strong>Procedure dictionary number.</strong> The number that uniquely identifies the procedure in this module. For OPM programs the procedure dictionary number is set to a value of 0.</p>
<p><strong>Procedure name.</strong> The name of the procedure. The procedure name is converted to the CCSID of the job. For OPM programs the procedure name is set to a blank value with a length of 1 byte.</p>
<p><strong>Statement number.</strong> The number that uniquely identifies the statement in the procedure. This number is shown on the compiler listing. For OPM programs the statement number is the same as the machine interface (MI) number.</p>
<p><strong>Statement type.</strong> The type number of statement produced by the compiler. Possible values are as follows:</p>
<table cellpadding="3">
<!-- cols="5 95" -->
<tr>
<td valign="top"><em>1</em></td>
<td valign="top">INIT CODE</td>
</tr>
<tr>
<td valign="top"><em>2</em></td>
<td valign="top">PROC ENTRY</td>
</tr>
<tr>
<td valign="top"><em>3</em></td>
<td valign="top">PROC EXIT</td>
</tr>
<tr>
<td valign="top"><em>4</em></td>
<td valign="top">ALLOC</td>
</tr>
<tr>
<td valign="top"><em>5</em></td>
<td valign="top">STMT</td>
</tr>
<tr>
<td valign="top"><em>6</em></td>
<td valign="top">ENTRY</td>
</tr>
<tr>
<td valign="top"><em>7</em></td>
<td valign="top">EXIT</td>
</tr>
<tr>
<td valign="top"><em>8</em></td>
<td valign="top">MULTIEXIT</td>
</tr>
<tr>
<td valign="top"><em>9</em></td>
<td valign="top">PATH LABEL</td>
</tr>
<tr>
<td valign="top"><em>10</em></td>
<td valign="top">PATH CALL BGN</td>
</tr>
<tr>
<td valign="top"><em>11</em></td>
<td valign="top">PATH CALL RET</td>
</tr>
<tr>
<td valign="top"><em>12</em></td>
<td valign="top">PATH DO BGN</td>
</tr>
<tr>
<td valign="top"><em>13</em></td>
<td valign="top">PATH TRUEIF</td>
</tr>
<tr>
<td valign="top"><em>14</em></td>
<td valign="top">PATH FALSEIF</td>
</tr>
<tr>
<td valign="top"><em>15</em></td>
<td valign="top">PATH WHEN BGN</td>
</tr>
<tr>
<td valign="top"><em>16</em></td>
<td valign="top">PATH OTHERW</td>
</tr>
<tr>
<td valign="top"><em>17</em></td>
<td valign="top">GOTO</td>
</tr>
<tr>
<td valign="top"><em>18</em></td>
<td valign="top">POST COMPOUND</td>
</tr>
</table>
<p><strong>Variable length field.</strong> A field referenced by an offset in a returned data structure. The data type is determined by where it is referenced. For example, a statement name field is a text string.</p>
<br>
<h3>Error Messages</h3>
<table width="100%" cellpadding="3">
<!-- cols="15 85" -->
<tr>
<th align="left" valign="top">Message ID</th>
<th align="left" valign="top">Error Message Text</th>
</tr>
<tr>
<td align="left" valign="top">CPF3C24 E</td>
<td valign="top">Length of the receiver variable is not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3CF1 E</td>
<td valign="top">Error code parameter not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3CF2 E</td>
<td valign="top">Error(s) occurred during running of &amp;1 API.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9541 E</td>
<td valign="top">Not in debug mode</td>
</tr>
<tr>
<td align="left" valign="top">CPF9542 E</td>
<td valign="top">View not found.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9549 E</td>
<td valign="top">Error addressing API parameter.</td>
</tr>
<tr>
<td align="left" valign="top">CPF954A E</td>
<td valign="top">No source text available.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9563 E</td>
<td valign="top">Number of lines not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9564 E</td>
<td valign="top">Starting line number not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9582 E</td>
<td valign="top">View is not a statement view.</td>
</tr>
</table>
<br>
<hr>
API Introduced: V3R6
<hr>
<center>
<table 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>
</center>
<br>
</body>
</html>