337 lines
9.8 KiB
HTML
337 lines
9.8 KiB
HTML
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||
|
<html>
|
||
|
<head>
|
||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||
|
<meta name="Copyright" content="Copyright (c) 2006 by IBM Corporation">
|
||
|
<title>Program Temporary Fix Exit Program</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. -->
|
||
|
<!-- Change History: -->
|
||
|
<!-- YYMMDD USERID Change description -->
|
||
|
<!-- PTFXPRG SCRIPT A converted by B2H R4.1 (346) (CMS) by KENTALA at -->
|
||
|
<!-- RCHVMW2 on 21 Oct 1998 at 18:09:29 -->
|
||
|
<!-- File cleanup completed Feb 2002 by v2cdijab -->
|
||
|
<!-- End Header Records -->
|
||
|
<link rel="stylesheet" type="text/css" href="../rzahg/ic.css">
|
||
|
</head>
|
||
|
<body>
|
||
|
<!-- Java sync-link -->
|
||
|
<script type="text/javascript" language="Javascript" src="../rzahg/synch.js">
|
||
|
</script>
|
||
|
|
||
|
<a name="Top_Of_Page"></a>
|
||
|
|
||
|
<h2>Program Temporary Fix Exit Program</h2>
|
||
|
|
||
|
<div class="box" style="width: 80%;">
|
||
|
<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%">Product ID</td>
|
||
|
<td align="left" valign="top" width="20%">Input</td>
|
||
|
<td align="left" valign="top" width="20%">Char(7)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">2</td>
|
||
|
<td align="left" valign="top">PTF ID</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Char(7)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">3</td>
|
||
|
<td align="left" valign="top">Product release level</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Char(6)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">4</td>
|
||
|
<td align="left" valign="top">Product option ID</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Char(4)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">5</td>
|
||
|
<td align="left" valign="top">Product load ID</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Char(4)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">6</td>
|
||
|
<td align="left" valign="top">PTF library</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Char(10)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">7</td>
|
||
|
<td align="left" valign="top">User data</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Char(50)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">8</td>
|
||
|
<td align="left" valign="top">Current PTF status</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Char(1)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">9</td>
|
||
|
<td align="left" valign="top">PTF operation</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Char(1)</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
</div>
|
||
|
|
||
|
<p>When a program temporary fix (PTF) is created, one or more PTF exit programs
|
||
|
may be specified. The PTF exit programs are called when a PTF is temporarily
|
||
|
applied, permanently applied, temporarily removed, or permanently removed. Exit
|
||
|
programs are called at the end of the apply or remove processing. The pre-exit
|
||
|
programs are called both before and after the apply or remove processing. The
|
||
|
run option field of the exit programs parameter determines when the exit
|
||
|
program is called. (Refer to <a href="qpzcrtfx.htm#HDREGRESS">Exit Programs
|
||
|
Format</a>.) Exit programs eliminate the need for you to manually carry out
|
||
|
special instructions to install the PTF.</p>
|
||
|
|
||
|
<p>Shipping the same exit program in two PTFs for the same product causes one
|
||
|
PTF to supersede the other. Avoid this by including the PTF exit program when
|
||
|
the product is initially packaged. If a PTF exit program already exists in the
|
||
|
product, then specify *OBJLIST for the value of the exit program type field
|
||
|
(see <a href="qpzcrtfx.htm#HDREGRESS">Exit Programs Format</a>). Another way to
|
||
|
avoid unwanted superseding PTFs is to ship the exit program with a different
|
||
|
temporary object name in each PTF. When the exit program is being shipped with
|
||
|
the PTF, specify the value *PTF for the exit program type field (see <a href=
|
||
|
"qpzcrtfx.htm#HDREGRESS">Exit Program Format</a>).</p>
|
||
|
|
||
|
<p>The interface between the Apply PTF (APYPTF) command or Remove PTF (RMVPTF)
|
||
|
command and the exit program follows. Your exit program must have the following
|
||
|
input parameters.</p>
|
||
|
|
||
|
<dl>
|
||
|
<dt><strong>Product ID</strong></dt>
|
||
|
|
||
|
<dd>INPUT; CHAR(7)
|
||
|
|
||
|
<p>The software product that the PTF affects.</p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>PTF ID</strong></dt>
|
||
|
|
||
|
<dd>INPUT; CHAR(7)
|
||
|
|
||
|
<p>The identification number of the PTF.</p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>Product release level</strong></dt>
|
||
|
|
||
|
<dd>INPUT; CHAR(6)
|
||
|
|
||
|
<p>The release of the software product that the PTF is for in the format
|
||
|
VxRyMz. Valid values for x and y are 0 through 9, and valid values for z are 0
|
||
|
through 9 and A through Z.</p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>Product option ID</strong></dt>
|
||
|
|
||
|
<dd>INPUT; CHAR(4)
|
||
|
|
||
|
<p>The option of the software product that the PTF is for.</p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>Product load ID</strong></dt>
|
||
|
|
||
|
<dd>INPUT; CHAR(4)
|
||
|
|
||
|
<p>The load of the software product that the PTF is for.</p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>PTF library</strong></dt>
|
||
|
|
||
|
<dd>INPUT; CHAR(10)
|
||
|
|
||
|
<p>The name of the library in which the PTF objects were placed.</p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>User data</strong></dt>
|
||
|
|
||
|
<dd>INPUT; CHAR(50)
|
||
|
|
||
|
<p>Any user data specified by the PTF originator to be passed to the exit
|
||
|
program.</p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>Current PTF status</strong></dt>
|
||
|
|
||
|
<dd>INPUT; CHAR(1)
|
||
|
|
||
|
<p>The current status of the PTF.</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>0</em></td>
|
||
|
<td align="left" valign="top">Loaded but not applied</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>1</em></td>
|
||
|
<td align="left" valign="top">Applied temporarily</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>PTF operation</strong></dt>
|
||
|
|
||
|
<dd>INPUT; CHAR(1)
|
||
|
|
||
|
<p>The change being made to the status of the PTF.</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>0</em></td>
|
||
|
<td align="left" valign="top">Remove temporarily</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>1</em></td>
|
||
|
<td align="left" valign="top">Apply temporarily</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>2</em></td>
|
||
|
<td align="left" valign="top">Apply permanently</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>3</em></td>
|
||
|
<td align="left" valign="top">Remove permanently</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>4</em></td>
|
||
|
<td align="left" valign="top">Pre-remove temporarily</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>5</em></td>
|
||
|
<td align="left" valign="top">Pre-apply temporarily</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>6</em></td>
|
||
|
<td align="left" valign="top">Pre-apply permanently</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>7</em></td>
|
||
|
<td align="left" valign="top">Pre-remove permanently</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
|
||
|
<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">CPF3638 E</td>
|
||
|
<td align="left" valign="top">Exit program failed, but made no permanent
|
||
|
changes.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF3639 E</td>
|
||
|
<td align="left" valign="top">Exit program failed and permanent changes have
|
||
|
been made.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p>If one of these messages is sent, the apply PTF process fails and no
|
||
|
following PTFs will be applied or removed. This means that if you are
|
||
|
installing a cumulative PTF package when this failure occurs, the cumulative
|
||
|
package will not be applied.</p>
|
||
|
|
||
|
<p>If an exit program sends escape message CPF3638, any other exit programs
|
||
|
already called for that PTF are called again. This allows changes to be backed
|
||
|
out. During the back-out operation, if all the exit programs called by the PTF
|
||
|
run successfully, the PTF status does not change from what it was before the
|
||
|
PTF operation was attempted. For example, the PTF was not applied and the PTF
|
||
|
exit program failed while the PTF was being temporarily applied. The status of
|
||
|
the PTF would then remain not applied. During the blackout, the current PTF
|
||
|
status is set to the original status of the PTF. In the example above, the exit
|
||
|
programs are called with a current PTF status of 0 (loaded but not applied) and
|
||
|
a PTF operation of either:</p>
|
||
|
|
||
|
<ul>
|
||
|
<li>0 (remove temporarily)</li>
|
||
|
|
||
|
<li>4 (pre-remove temporarily)</li>
|
||
|
</ul>
|
||
|
|
||
|
<p>This message should only be issued if any changes made by the exit program
|
||
|
were backed out.</p>
|
||
|
|
||
|
<p>When message CPF3639 is signaled, the PTF is marked damaged. This indicates
|
||
|
that the PTF has been partially applied. Any objects contained in the PTF have
|
||
|
already been replaced. Some of the exit programs may have completed
|
||
|
successfully.</p>
|
||
|
|
||
|
<p>If an exit program signals any other escape messages, unpredictable results
|
||
|
can be expected. Exit programs must monitor for all exceptions. Other error
|
||
|
messages should be left in the job log for problem determination or should be
|
||
|
sent as informational or diagnostic messages. Message CPF3569 can be used to
|
||
|
indicate that a special handling program failed.</p>
|
||
|
|
||
|
<p>You can also send a completion message (CPC1214) if the exit program runs
|
||
|
successfully.</p>
|
||
|
|
||
|
<p>For more information, see <a href="../apiref/apiexcrepro.htm">Creating a
|
||
|
Program Temporary Fix exit program</a> in the API examples.</p>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<hr>
|
||
|
Exit program introduced: V2R2
|
||
|
|
||
|
<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="sw1.htm">Software Product APIs</a> |
|
||
|
<a href="aplist.htm">APIs by category</a></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</body>
|
||
|
</html>
|