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

337 lines
9.8 KiB
HTML
Raw Normal View History

2024-04-02 14:02:31 +00:00
<!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>
&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%">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>