529 lines
21 KiB
HTML
529 lines
21 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>Power Down System Exit Programs</title>
|
|
<!-- All rights reserved. Licensed Materials Property of IBM -->
|
|
<!-- US Government Users Restricted Rights -->
|
|
<!-- Use, duplication or disclosure restricted by -->
|
|
<!-- GSA ADP Schedule Contract with IBM Corp. -->
|
|
<!-- Begin Header Records ========================================= -->
|
|
<!-- WM SCRIPT A converted by B2H R4.1 (346) (CMS) by V2KEA304 -->
|
|
<!-- at RCHVMW2 on 17 Feb 1999 at 11:05:09 -->
|
|
<!-- File cleanup completed Nov 2001 by v2cdijab -->
|
|
<!-- End Header Records -->
|
|
<link rel="stylesheet" type="text/css" href="../rzahg/ic.css">
|
|
</head>
|
|
<body>
|
|
<a name="Top_Of_Page"></a>
|
|
<!-- Java sync-link -->
|
|
<script type="text/javascript" language="Javascript" src="../rzahg/synch.js">
|
|
</script>
|
|
|
|
<h2>Power Down System Exit Programs</h2>
|
|
|
|
<div class="box" style="width: 75%;">
|
|
<br>
|
|
Required Parameters: None<br>
|
|
<!-- iddvc RMBR -->
|
|
<br>
|
|
Exit Point Name: QIBM_QWC_PWRDWNSYS <br>
|
|
<!-- iddvc RMBR -->
|
|
<br>
|
|
Exit Point Format Name: PWRD0100<br>
|
|
<!-- iddvc RMBR -->
|
|
<br>
|
|
</div>
|
|
|
|
|
|
<img src="delta.gif" alt="Start of change">
|
|
<div class="box" style="width: 75%;">
|
|
<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%">Exit information</td>
|
|
<td align="left" valign="top" width="20%">Input/Output</td>
|
|
<td align="left" valign="top" width="20%">Char(*)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" valign="top" width="10%">2</td>
|
|
<td align="left" valign="top" width="50%">Format of exit information</td>
|
|
<td align="left" valign="top" width="20%">Input</td>
|
|
<td align="left" valign="top" width="20%">Char(8)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" valign="top" width="10%">3</td>
|
|
<td align="left" valign="top" width="50%">Action</td>
|
|
<td align="left" valign="top" width="20%">Input</td>
|
|
<td align="left" valign="top" width="20%">Char(1)</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" valign="top" width="10%">4</td>
|
|
<td align="left" valign="top" width="50%">Delay time</td>
|
|
<td align="left" valign="top" width="20%">Input</td>
|
|
<td align="left" valign="top" width="20%">Binary(4)</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
QSYSINC Member Name: EWCPWRD<br>
|
|
<!-- iddvc RMBR -->
|
|
<br>
|
|
Exit Point Name: QIBM_QWC_PWRDWNSYS<br>
|
|
<!-- iddvc RMBR -->
|
|
<br>
|
|
Exit Point Format Name: PWRD0200<br>
|
|
<!-- iddvc RMBR -->
|
|
<br>
|
|
</div>
|
|
|
|
<p>For format PWRD0100, the Power Down System exit program is called when the Power Down System
|
|
(PWRDWNSYS) or End System (ENDSYS) command is used. There are no input or output parameters for
|
|
this format. See <a href="#HDRUSAGE1">PWRD0100 Format Usage Notes</a> for more information.</p>
|
|
|
|
<p>For format PWRD0200, the Power Down System exit programs are called only when the Power Down System
|
|
(PWRDWNSYS) command is used. See <a href="#HDRPARMS2">Format PWRD0200 Required Parameter Group</a>
|
|
for parameter information or <a href="#HDRUSAGE2">PWRD0200 Format Usage Notes</a> for usage information.<img src="deltaend.gif" alt="End of change"></p>
|
|
|
|
<br>
|
|
|
|
<h3>Authorities and Locks</h3>
|
|
<ul>
|
|
<li>A user must have all object (*ALLOBJ) and security administrator (*SECADM)
|
|
special authorities to add or remove exit programs to/from an exit point.
|
|
</li>
|
|
<li>If a user exit program is defined to the Pre power down
|
|
system exit point (QIBM_QWC_PWRDWNSYS) for format PWRD0100, then the PWRDWNSYS
|
|
command issuer must have use (*USE) authority to the user exit
|
|
program and execute (*EXECUTE) authority to the library that
|
|
contains that program. If not, then this user exit program
|
|
will not be called and the system will continue to power down.
|
|
</li>
|
|
</ul>
|
|
|
|
<br>
|
|
|
|
<h3>Format PWRD0100 Required Parameter</h3>
|
|
<dl>
|
|
<dd>None.</dd>
|
|
</dl>
|
|
|
|
|
|
<h3><img src="delta.gif" alt="Start of change"><a name="HDRPARMS2">Format PWRD0200 Required Parameter Group</a></h3>
|
|
<dl>
|
|
<dt><strong>Exit information</strong></dt>
|
|
<dd>INPUT/OUTPUT CHAR(*)
|
|
<p>The exit information used to communicate with the exit program.</p>
|
|
</dd>
|
|
<dt><strong>Format of the exit information.</strong></dt>
|
|
<dd>INPUT; CHAR(8)
|
|
<p>The format of the exit program information. The following
|
|
formats may be passed to the exit program:</p>
|
|
<table cellpadding="5">
|
|
<!-- cols="15 85" -->
|
|
<tr>
|
|
<td align="left" valign="top"><em>PDPF0100</em></td>
|
|
<td align="left" valign="top">Pre powered down state format if the Action
|
|
parameter specifies a Check action request. For details, see the
|
|
<a href="#HDPDPF0100">PDPF0100</a> format.</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left" valign="top"><em>PDPF0200</em></td>
|
|
<td align="left" valign="top">Pre powered down state format if the Action
|
|
parameter specifies an Execute or Cancel action request. For details,
|
|
see the
|
|
<a href="#HDPDPF0200">PDPF0200</a> format.</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
</dd>
|
|
<dt><strong>Action</strong></dt>
|
|
<dd>INPUT; CHAR(1)
|
|
<p>The type of exit program call being made. The following actions may be
|
|
requested:</p>
|
|
<table cellpadding="5">
|
|
<!-- cols="15 85" -->
|
|
<tr>
|
|
<td align="left" valign="top"><em>1 Check</em></td>
|
|
<td align="left" valign="top">The exit program should determine if a powered down
|
|
state can be reached. The exit program should set the Status flag and Wait time
|
|
values appropriately.</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left" valign="top" nowrap><em>2 Execute</em></td>
|
|
<td align="left" valign="top">The exit program should start the process of
|
|
preparing for a powered down state.</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left" valign="top"><em>3 Cancel</em></td>
|
|
<td align="left" valign="top">The exit program should reset any preliminary actions it may have taken
|
|
while handling a previous Check action request.
|
|
See <a href="#HDRUSAGE2">PWRD0200 Format Usage Notes</a> for all possible
|
|
reasons that the user exit programs will be called for Cancel action processing.
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
</dd>
|
|
<dt><strong>Delay time</strong></dt>
|
|
<dd>INPUT; BINARY(4)
|
|
<p>The time specified for the delay when jobs are ended.
|
|
This value represents the values passed in for the How to end (OPTION) and
|
|
Controlled end delay time (DELAY) parameters on the Power Down System (PWRDWNSYS) command.
|
|
The possible values are:</p>
|
|
<table cellpadding="5">
|
|
<!-- cols="10 90" -->
|
|
<tr>
|
|
<td align="left" valign="top"><em>-1 </em></td>
|
|
<td align="left" valign="top">The jobs are ended in an immediate manner because the PWRDWNSYS
|
|
command had parameter OPTION(*IMMED).</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left" valign="top"><em>-2 </em></td>
|
|
<td align="left" valign="top">The jobs are ended in a controlled manner because the PWRDWNSYS
|
|
command had parameters OPTION(*CNTRLD) and DELAY(*NOLIMIT).</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left" valign="top" nowrap><em><i>delay time</i></em></td>
|
|
<td align="left" valign="top">The delay time entered on the PWRDWNSYS command for a controlled end.
|
|
The jobs are ended in a controlled manner because the PWRDWNSYS
|
|
command had parameters OPTION(*CNTRLD) and DELAY(delay time). This value can range from
|
|
1 to 99999 seconds.</td>
|
|
</tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<br>
|
|
<h3><a name="HDPDPF0100">PDPF0100 Format</a></h3>
|
|
<p>The following table describes the information that is located in the
|
|
Exit information parameter for the PDPF0100 format.
|
|
For detailed descriptions of the
|
|
fields, see <a href="#HDRCHKDDE">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%">Exit information length</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">Status flag</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">Wait time</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
<br>
|
|
<h3><a name="HDRCHKDDE">Field Descriptions</a></h3>
|
|
<p><strong>Exit information length</strong> The length of the exit information.
|
|
This is set to 12.</p>
|
|
<p><strong>Status flag</strong> A value that should be set by each exit program
|
|
to indicate whether a powered down state can be reached or not. The possible
|
|
values are as follows:</p>
|
|
<table cellpadding="5">
|
|
<!-- cols="5 95" -->
|
|
<tr>
|
|
<td align="left" valign="top"><em>0</em></td>
|
|
<td align="left" valign="top">No, a powered down state cannot be
|
|
reached at this time. The exit program should set this value if it determines that
|
|
the power down should not be performed.
|
|
All prior exit programs that have been called with a Check action request will
|
|
be called again with a Cancel action request to reset any preliminary actions
|
|
taken while handling the Check action request.
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left" valign="top"><em>1</em></td>
|
|
<td align="left" valign="top">Yes, a powered down state can be reached.</td>
|
|
</tr>
|
|
</table>
|
|
<p><strong>Wait time</strong>
|
|
The number of seconds that the system should wait for
|
|
the exit program to complete the Execute action request.
|
|
The exit programs can set this to a value between 1 and 3600 seconds.
|
|
An attempt is made to run each exit program asynchronously via
|
|
a batch job (asynchronous batch job method).
|
|
If the batch job method fails for some reason, such as due to being in
|
|
restricted state, or the subsystem is ending controlled,
|
|
then another attempt will be made to execute the exit program synchronously
|
|
via a direct call (synchronous direct call method). As you can see, there could be a mixture of
|
|
asynchronous and synchronous methods used to run all the exit programs for the
|
|
power down.
|
|
Thus, both method's considerations described below must be accounted for when
|
|
setting this value.
|
|
<p>
|
|
Both method's considerations are met if the sum of all the Wait times returned
|
|
by the exit programs are less than 3600 seconds and if all exit programs finish Execute action
|
|
processing in less time than their specified Wait time.
|
|
</p>
|
|
<p>
|
|
<strong>Asynchronous batch job method considerations:</strong>
|
|
<p>
|
|
For the Execute action processing, each exit program
|
|
will be run in a separate job to allow multiple exit programs to be run at the same time.
|
|
When setting the Wait time, the following needs to be considered:
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
The largest value within this range that is set and returned by any exit program will be used
|
|
as the maximum wait time.
|
|
</li>
|
|
<li>
|
|
If none of the exit programs return a value, then a value of 30 seconds is used as the
|
|
maximum wait time.
|
|
</li>
|
|
<li>
|
|
If a value greater than 3600 is returned by any exit program, then 3600 will be used
|
|
as the maximum wait time.
|
|
</li>
|
|
<li>
|
|
For an immediate power down, the system will continue to power down after the
|
|
maximum wait time has passed, and any exit programs that have not finished
|
|
processing will be ended.
|
|
For a controlled power down, the exit programs will be allowed to process longer than
|
|
the maximum wait time depending on the value of the Delay time parameter.
|
|
</li>
|
|
</ul>
|
|
<p>
|
|
<strong>Synchronous direct call method considerations:</strong>
|
|
<p>
|
|
For the Execute action processing, each exit program
|
|
will be run sequentially in the same job where the PWRDWNSYS command was invoked.
|
|
Each exit program will be called one after the other, but only after the prior exit
|
|
program completes (serial) and only if there is time left to process.
|
|
When setting the Wait time, the following needs to be considered:
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
3600 seconds is the maximum wait time for all the exit programs to complete.
|
|
The value set by the user exit program will be used to determine how long to wait
|
|
for the completion of that program. If the program goes over the specified time,
|
|
then the program will be terminated and a CPF18C8 diagnostic message will result.
|
|
If the exit program finishes under the time specified, then only the actual time
|
|
used will be subtracted from the maximum time allowed (3600 seconds).
|
|
</li>
|
|
<li>
|
|
For each exit program that didn't return a value, a value of 30 seconds will be used
|
|
for that exit program.
|
|
</li>
|
|
<li>
|
|
If a value greater than 3600 is returned by a exit program, then 3600 will be used for that
|
|
exit program.
|
|
</li>
|
|
<li>
|
|
For an immediate or controlled power down, the system will continue to power down after the
|
|
maximum wait time has passed (3600 seconds), and any exit program that has not finished
|
|
processing will be ended. Any exit programs that were in line to be called after this
|
|
ended exit program will not be called to run.
|
|
</li>
|
|
</ul>
|
|
<br>
|
|
<br>
|
|
<h3><a name="HDPDPF0200">PDPF0200 Format</a></h3>
|
|
<p>The following table describes the information that is located in the
|
|
Exit information parameter for the PDPF0200 format.
|
|
For detailed descriptions of the
|
|
fields, see <a href="#HDREXECFD">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%">Exit information length</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" valign="top" width="10%">4</td>
|
|
<td align="center" valign="top" width="10%">4</td>
|
|
<td align="left" valign="top" width="20%">BINARY(4)</td>
|
|
<td align="left" valign="top" width="60%">Execute wait time</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
<br>
|
|
<h3><a name="HDREXECFD">Field Descriptions</a></h3>
|
|
<p><strong>Execute wait time</strong> The number of seconds that the system will wait for
|
|
this exit program to complete the Execute action request.
|
|
This value is passed into the exit program as input and is essentially the same
|
|
Wait time value that was determined during the Check action request.
|
|
For the asynchronous method, this value will be set to the maximum wait
|
|
time determined during the Check action request (value passed into each exit program will be the same).
|
|
For synchronous method, this value will be set to the lesser of the Wait
|
|
time returned by the exit program and the time left to process out of a maximum of 3600 seconds
|
|
(value passed into each exit program may vary).
|
|
This value does not apply to Cancel action requests.
|
|
</p>
|
|
<p><strong>Exit information length</strong> The length of the exit information.
|
|
This is set to 8.</p>
|
|
<br>
|
|
|
|
<h3><a name="HDRUSAGE1">PWRD0100 Format Usage Notes</a></h3>
|
|
|
|
<p>When a user issues the PWRDWNSYS or ENDSYS command, the operating system
|
|
calls the user-written exit program that was added through the registration facility.
|
|
The user-written exit program is not called for the following:
|
|
<ul>
|
|
<li>If the system is already in restricted state.</li>
|
|
<li>If the system is being powered down immediately while on auxiliary power.
|
|
See the system value Uninterruptible power supply message queue (QUPSMSGQ) for
|
|
this situation.
|
|
</li>
|
|
<li>If the system is ending because the storage lower limit is reached and the
|
|
system value Auxiliary storage lower limit action (QSTGLOWACN) has a value
|
|
of *ENDSYS or *PWRDWNSYS.
|
|
</li>
|
|
<li>If the system is ending because of an auditing error and the
|
|
system value Auditing end action (QAUDENDACN) is set with *PWRDWNSYS.</li>
|
|
<li>If the system is a secondary partition and is powering down
|
|
because the primary partition is powering down.</li>
|
|
<li>
|
|
If the system is powering down because of a
|
|
critical hardware detected situation.
|
|
</li>
|
|
</ul>
|
|
|
|
<p>This exit point supports one exit program. For information about adding an
|
|
exit program to an exit point, see the <a href="reg1.htm">Registration Facility
|
|
APIs</a>.</p>
|
|
|
|
<p>The Power Down System exit point ignores any return codes or error messages
|
|
that are sent from the exit program.</p>
|
|
|
|
<p>It is recommended that the Power Down System exit program exist in a library in the
|
|
system auxiliary storage pool (ASP) or in a basic user ASP. It might not be found
|
|
if it exists in a library in an independent ASP.</p>
|
|
|
|
<h3><a name="HDRUSAGE2">PWRD0200 Format Usage Notes</a></h3>
|
|
|
|
<p>When a user issues the PWRDWNSYS command, the operating system
|
|
calls the user-written exit programs that were added to the exit point
|
|
through the registration facility.
|
|
The user-written exit programs are not called for the following:
|
|
<ul>
|
|
<li>If the system is being powered down immediately while on auxiliary power
|
|
and this state is identified before Check action processing.
|
|
See the system value Uninterruptible power supply message queue (QUPSMSGQ) for
|
|
this situation.
|
|
</li>
|
|
<li>If the system is being powered down immediately and the system goes to auxiliary power
|
|
after Check action processing has begun but before Execute action processing has begun.
|
|
For this case, the Execute action phase will be skipped and the user exit programs
|
|
will not be called for Cancel processing.
|
|
The system will continue to power down.
|
|
</li>
|
|
<li>If the system is ending because the storage lower limit is reached and the
|
|
system value Auxiliary storage lower limit action (QSTGLOWACN) has a value
|
|
of *PWRDWNSYS.
|
|
</li>
|
|
<li>If the system is ending because of an auditing error and the
|
|
system value Auditing end action (QAUDENDACN) is set with *PWRDWNSYS.</li>
|
|
<li>If the system is a secondary partition and is powering down
|
|
because the primary partition is powering down.</li>
|
|
<li>
|
|
If the system is powering down because of a
|
|
critical hardware detected situation.
|
|
</li>
|
|
</ul>
|
|
<p>Unlike the exit program associated with format PWRD0100,
|
|
the exit programs associated with PWRD0200 will be called if the
|
|
system is powered down immediately or in a controlled manner from restricted state.
|
|
</p>
|
|
|
|
<p>This exit point supports more than one exit program (no maximum).
|
|
For information about adding an exit program to an exit point,
|
|
see the <a href="reg1.htm">Registration Facility APIs</a>.</p>
|
|
|
|
<p>If there are exit programs specified for both formats (PWRD0100 and PWRD0200)
|
|
then both format exit program(s) will be called. This can occur for a normal
|
|
controlled or immediate power down. When this occurs, the PWRD0200 exit programs
|
|
will be called first followed by the PWRD0100 exit program.</p>
|
|
|
|
<p>Format PWRD0200 provides a
|
|
method for the system to determine if a powered down state can be reached.
|
|
The Action field will have values which will be used to determine what the exit
|
|
program should do. Each exit program will be called multiple times from the PWRDWNSYS
|
|
command processing program. Each exit program will be called first with a Check
|
|
action request to determine if the powered down
|
|
state can be safely reached and how much time might be required.
|
|
If an exit program determines that a powered down state cannot be reached at this
|
|
time (0 Status flag is returned), or if the PWRDWNSYS command is canceled during
|
|
this Check processing, or if a confirmation panel is displayed after this Check processing
|
|
and the user elects to not continue the power down, then all prior exit programs that have
|
|
been called with a Check action request will be called again with a Cancel action request.
|
|
Each exit program should reset any preliminary actions it may have made.
|
|
</p>
|
|
|
|
<p>If all exit programs return a Yes (1 Status flag is returned) during the Check action
|
|
phase, then each exit program will be called again with an Execute action.
|
|
An Execute action will be used to instruct the exit program to perform it's
|
|
pre powered down state work.
|
|
These jobs will run under the user profile who issued the PWRDWNSYS command.
|
|
Once the exit program is called with an Execute action,
|
|
it will either be allowed to complete it's task or it will be terminated
|
|
if the calculated Wait time is exceeded.
|
|
Note that once the PWRDWNSYS command reaches the Execute action phase,
|
|
the command can no longer be canceled.</p>
|
|
|
|
<p>If the PWRDWNSYS command is run again while the exit programs are
|
|
processing the Execute action, then the exit programs will have to handle this
|
|
situation where the Execute action processing may have already occurred and is
|
|
currently being run in another job. The exit programs will also have to
|
|
handle any necessary serialization.</p>
|
|
|
|
<p>Errors detected by the PWRDWNSYS command processing program
|
|
(unable to call exit program, invalid status flag, and so on)
|
|
will be treated as if a powered down state can be reached (same as status flag value of 1
|
|
being returned).</p>
|
|
|
|
<p>It is recommended that the Power Down System exit programs exist in a library in the
|
|
system auxiliary storage pool (ASP number 1) or in a basic user ASP (ASP numbers 2-32).
|
|
It might not be found
|
|
if it exists in a library in an independent ASP.
|
|
</p><img src="deltaend.gif" alt="End of change">
|
|
|
|
<hr>
|
|
Exit program introduced: V4R2
|
|
|
|
<hr>
|
|
<center>
|
|
<table cellpadding="2" cellspacing="2">
|
|
<tr align="center">
|
|
<td valign="middle" align="center">
|
|
<a href="#Top_Of_Page">Top</a> |
|
|
<a href="wm1.htm">Work Management APIs</a> |
|
|
<a href="aplist.htm">APIs by category</a></td>
|
|
</tr>
|
|
</table>
|
|
</center>
|
|
</body>
|
|
</html>
|
|
|