1674 lines
50 KiB
HTML
1674 lines
50 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>Create Program Temporary Fix (QPZCRTFX) 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. -->
|
||
|
<!-- QPZCRTFX SCRIPT A converted by B2H R4.1 (346) (CMS) by KENTALA -->
|
||
|
<!-- at RCHVMW2 on 7 Oct 1998 at 18:16:11 -->
|
||
|
<!-- Change History: -->
|
||
|
<!-- YYMMDD USERID Change description -->
|
||
|
<!-- File cleanup completed Feb 2002 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>Create Program Temporary Fix (QPZCRTFX) API</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="45%">PTF information</td>
|
||
|
<td align="left" valign="top" width="20%">Input</td>
|
||
|
<td align="left" valign="top" width="25%">Char(50)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">2</td>
|
||
|
<td align="left" valign="top">Development library name</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Char(10)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">3</td>
|
||
|
<td align="left" valign="top">Objects</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Array (*) of Char (20)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">4</td>
|
||
|
<td align="left" valign="top">Number of objects</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">Documents</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Array (*) of Char(73)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">6</td>
|
||
|
<td align="left" valign="top">Number of documents</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Binary(4)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">7</td>
|
||
|
<td align="left" valign="top">Requisite PTFs</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Array(*) of Char(24)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">8</td>
|
||
|
<td align="left" valign="top">Number of requisite PTFs</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Binary(4)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">9</td>
|
||
|
<td align="left" valign="top">Exit programs</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Array(*) of Char(84)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">10</td>
|
||
|
<td align="left" valign="top">Number of exit programs</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Binary(4)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">11</td>
|
||
|
<td align="left" valign="top">Problem IDs</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Array(*) of Char(10)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">12</td>
|
||
|
<td align="left" valign="top">Number of problem IDs</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Binary(4)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">13</td>
|
||
|
<td align="left" valign="top">Cover letters</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Array(*) of Char(44)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">14</td>
|
||
|
<td align="left" valign="top">Number of cover letters</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Binary(4)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">15</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>
|
||
|
Optional Parameter Group 1:<br>
|
||
|
<!-- iddvc RMBR -->
|
||
|
<br>
|
||
|
<table width="100%">
|
||
|
<tr>
|
||
|
<td align="center" valign="top" width="10%">16</td>
|
||
|
<td align="left" valign="top" width="45%">Directory information</td>
|
||
|
<td align="left" valign="top" width="20%">Input</td>
|
||
|
<td align="left" valign="top" width="25%">Char(*)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">17</td>
|
||
|
<td align="left" valign="top">Number of directories</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Binary(4)</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
Optional Parameter Group 2:<br>
|
||
|
<!-- iddvc RMBR -->
|
||
|
<br>
|
||
|
<table width="100%">
|
||
|
<tr>
|
||
|
<td align="center" valign="top" width="10%">18</td>
|
||
|
<td align="left" valign="top" width="45%">Additional parameter information</td>
|
||
|
<td align="left" valign="top" width="20%">Input</td>
|
||
|
<td align="left" valign="top" width="25%">Char(*)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">19</td>
|
||
|
<td align="left" valign="top">Additional parameter information format name</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Char(8)</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
Default Public Authority: *EXCLUDE<br>
|
||
|
<!-- iddvc RMBR -->
|
||
|
<br>
|
||
|
Threadsafe: No<br>
|
||
|
<!-- iddvc RMBR -->
|
||
|
<br>
|
||
|
</div>
|
||
|
|
||
|
<p>This API should only be used by organizations to create program temporary
|
||
|
fixes (PTFs) for products that they develop.</p>
|
||
|
|
||
|
<p>The Create Program Temporary Fix (QPZCRTFX) API creates a PTF save file and
|
||
|
optionally creates cover letters in the general purpose library (QGPL). The
|
||
|
save file contains a PTF control object and any number of fix objects. The save
|
||
|
file name is the PTF identifier preceded by the letter Q. If a file with the
|
||
|
same name already exists in QGPL, a unique name is generated by the system.
|
||
|
This name is a timestamp preceded by the letter Q. After creating the PTF, you
|
||
|
can use the Display PTF (DSPPTF) command to view the PTF attributes.</p>
|
||
|
|
||
|
<p>PTFs can only be created for products that are installed.</p>
|
||
|
|
||
|
<p>PTFs must be created by a profile that is known to exist on all systems.
|
||
|
This allows a PTF to be loaded on any system that has the product
|
||
|
installed.</p>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3>Authorities and Locks</h3>
|
||
|
|
||
|
<dl>
|
||
|
<dt><em>API Public Authority</em></dt>
|
||
|
|
||
|
<dd>*EXCLUDE<br>
|
||
|
<br>
|
||
|
</dd>
|
||
|
|
||
|
<dt><em>Create library (CRTLIB) command</em></dt>
|
||
|
|
||
|
<dd>*USE authority to the command and all authorities required by the
|
||
|
command.<br>
|
||
|
<br>
|
||
|
</dd>
|
||
|
|
||
|
<dt><em>Create save file (CRTSAVF) command</em></dt>
|
||
|
|
||
|
<dd>*USE authority to the command and all authorities required by the
|
||
|
command.</dd>
|
||
|
</dl>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<p>The following authorities are required when specifying the indicated input
|
||
|
parameter:</p>
|
||
|
|
||
|
<dl>
|
||
|
<dt><em>Cover Letter Parameter</em></dt>
|
||
|
|
||
|
<dd>*USE authority to input cover letter file</dd>
|
||
|
|
||
|
<dd>*EXECUTE authority to input cover letter library</dd>
|
||
|
|
||
|
<dd>*OBJOPR, *OBJMGR, *ADD, *DLT authority to the QAPZCOVER file in library
|
||
|
QGPL<br>
|
||
|
<br>
|
||
|
</dd>
|
||
|
|
||
|
<dt><em>Object Parameter</em></dt>
|
||
|
|
||
|
<dd>*CHANGE authority to the object</dd>
|
||
|
|
||
|
<dd>*EXECUTE authority to the development library<br>
|
||
|
<br>
|
||
|
</dd>
|
||
|
|
||
|
<dt><em>Exit program parameter</em></dt>
|
||
|
|
||
|
<dd>*CHANGE authority to the exit program</dd>
|
||
|
|
||
|
<dd>*EXECUTE authority to the exit program library<br>
|
||
|
<br>
|
||
|
</dd>
|
||
|
|
||
|
<dt><em>Document parameter</em></dt>
|
||
|
|
||
|
<dd>*USE authority to the SAVDLO command and all authorities required by the
|
||
|
command.<br>
|
||
|
<br>
|
||
|
</dd>
|
||
|
|
||
|
<dt><em>Directory information parameter</em></dt>
|
||
|
|
||
|
<dd>*USE authority to the SAV command and all authorities required by the
|
||
|
command.</dd>
|
||
|
|
||
|
<dd>*USE authority to the CPY command and all authorities required by the
|
||
|
command.</dd>
|
||
|
|
||
|
<dd>*USE authority to the CRTDIR command and all authorities required by the
|
||
|
command.</dd>
|
||
|
</dl>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3>Required Parameter Group</h3>
|
||
|
|
||
|
<dl>
|
||
|
<dt><strong>PTF information</strong></dt>
|
||
|
|
||
|
<dd>INPUT; CHAR(50)
|
||
|
|
||
|
<p>Attributes of the PTF to be created. See <a href="#HDRPTFINFO">PTF
|
||
|
Information Format</a> for more information about this field.</p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>Development library name</strong></dt>
|
||
|
|
||
|
<dd>INPUT; CHAR(10)
|
||
|
|
||
|
<p>The library in which the fix is located. This can be any library.</p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>Objects</strong></dt>
|
||
|
|
||
|
<dd>INPUT; ARRAY(*) of CHAR(20)
|
||
|
|
||
|
<p>The name and type of each object to be included in the PTF. The first 10
|
||
|
characters contain the name, and the second 10 characters contain the external
|
||
|
type of the object.</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="15 85" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>Object name</em></td>
|
||
|
<td align="left" valign="top">The name of the object.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>Object type</em></td>
|
||
|
<td align="left" valign="top">The external type of the object. This must be
|
||
|
preceded by an asterisk (*). For more information, refer to the <a href=
|
||
|
"../books/sc415321.pdf">System Manager Use</a> <img src="wbpdf.gif" alt=
|
||
|
"Link to PDF"> book.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>Number of objects</strong></dt>
|
||
|
|
||
|
<dd>INPUT; BINARY(4)
|
||
|
|
||
|
<p>The number of objects listed in the objects parameter. <img src="delta.gif" alt="Start of change">This number must be
|
||
|
in the range of 0 through 300.<img src="deltaend.gif" alt="End of change"></p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>Documents</strong></dt>
|
||
|
|
||
|
<dd>INPUT; ARRAY(*) of CHAR(73)
|
||
|
|
||
|
<p>The name of the documents that are to be included in the PTF.</p>
|
||
|
|
||
|
<p>The create PTF function copies the document from a subfolder using the name
|
||
|
specified, followed by <samp>/QP</samp>. For example, if a PTF is being created
|
||
|
for a product folder called PRODUCT, the fix objects must be developed in a
|
||
|
subfolder named PRODUCT/QP. The document is installed into the product folder
|
||
|
PRODUCT during the apply PTF operation. The QP subfolder allows you to develop
|
||
|
a PTF without changing the product.</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="15 85" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>Document name</em></td>
|
||
|
<td align="left" valign="top">The name of the document including the path
|
||
|
name.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>Number of documents</strong></dt>
|
||
|
|
||
|
<dd>INPUT; BINARY(4)
|
||
|
|
||
|
<p>The number of documents listed in the documents parameter. <img src="delta.gif" alt="Start of change">This number must
|
||
|
be in the range of 0 through 300.<img src="deltaend.gif" alt="End of change"></p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>Requisite PTFs</strong></dt>
|
||
|
|
||
|
<dd>INPUT; ARRAY(*) of CHAR(24)
|
||
|
|
||
|
<p>The list of requisite PTFs. A <strong>requisite relationship</strong> exists
|
||
|
when one PTF requires that another PTF also be applied. It is a
|
||
|
<strong>prerequisite relationship</strong> if the other PTF does not require
|
||
|
the first. It is a <strong>corequisite relationship</strong> if the other PTF
|
||
|
does require the first. Prerequisite PTFs must exist within the same product. A
|
||
|
prerequisite PTF must already exist on the system or the create operation will
|
||
|
fail. Corequisite PTFs must exist within the same product, option, load id, and
|
||
|
release.</p>
|
||
|
|
||
|
<p>For more information on this structure, see <a href="#HDRREQSS">Requisite
|
||
|
PTF Format</a>.</p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>Number of requisite PTFs</strong></dt>
|
||
|
|
||
|
<dd>INPUT; BINARY(4)
|
||
|
|
||
|
<p>The number of PTFs listed in the requisite PTFs parameter. <img src="delta.gif" alt="Start of change">This number must
|
||
|
be in the range of 0 through 300.<img src="deltaend.gif" alt="End of change"></p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>Exit programs</strong></dt>
|
||
|
|
||
|
<dd>INPUT; ARRAY(*) of CHAR(84)
|
||
|
|
||
|
<p>The PTF exit programs called when a PTF is temporarily applied, permanently
|
||
|
applied, temporarily removed, or permanently removed. Exit programs eliminate
|
||
|
the need for you to manually carry out special instructions to install the PTF.
|
||
|
The run option field of this parameter determines when the exit program is
|
||
|
called.</p>
|
||
|
|
||
|
<p>Shipping the same exit program in two PTFs causes one PTF to supersede the
|
||
|
other.</p>
|
||
|
|
||
|
<p>For more information on this structure, see <a href="#HDREGRESS">Exit
|
||
|
Programs Format</a> and <a href="ptfxprg.htm">Program Temporary Fix Exit
|
||
|
Program</a>.</p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>Number of exit programs</strong></dt>
|
||
|
|
||
|
<dd>INPUT; BINARY(4)
|
||
|
|
||
|
<p>The number of exit programs listed in the exit programs parameter. <img src="delta.gif" alt="Start of change">This
|
||
|
number must be in the range of 0 through 50.<img src="deltaend.gif" alt="End of change"></p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>Problem IDs</strong></dt>
|
||
|
|
||
|
<dd>INPUT; ARRAY(*) of CHAR(10)
|
||
|
|
||
|
<p>A list of the problem IDs for problems that this PTF fixes. By listing the
|
||
|
problem IDs, the symptom strings associated with those problems will be
|
||
|
included in the PTFs.</p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>Number of problem IDs</strong></dt>
|
||
|
|
||
|
<dd>INPUT; BINARY(4)
|
||
|
|
||
|
<p>The number of problem IDs listed in the problem IDs parameter. <img src="delta.gif" alt="Start of change">This number
|
||
|
must be in the range of 0 through 300.<img src="deltaend.gif" alt="End of change"></p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>Cover letters</strong></dt>
|
||
|
|
||
|
<dd>INPUT; ARRAY(*) of CHAR(44)
|
||
|
|
||
|
<p>A cover letter can be created for each of the national language versions
|
||
|
(NLV) that IBM supports. A member that contains source for each PTF cover
|
||
|
letter must be supplied as input to the API. The cover letter file can be a
|
||
|
source file with a maximum record length of 92 or a physical file with record
|
||
|
length of 80. The cover letter must be in the file before this API is called.
|
||
|
Only one cover letter per NLV is allowed.</p>
|
||
|
|
||
|
<p>For more information on this structure see <a href="#HDRCOVER">Cover Letter
|
||
|
Format</a>.</p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>Number of cover letters</strong></dt>
|
||
|
|
||
|
<dd>INPUT; BINARY(4)
|
||
|
|
||
|
<p>The number of cover letters listed in the cover letter parameter. <img src="delta.gif" alt="Start of change">This
|
||
|
number must be in the range of 0 through 50.<img src="deltaend.gif" alt="End of change"></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>Optional Parameter Group 1</h3>
|
||
|
|
||
|
<dl>
|
||
|
<dt><strong>Directory information</strong></dt>
|
||
|
|
||
|
<dd>INPUT; Array(*) of CHAR(*)
|
||
|
|
||
|
<p>Identifies the information for directory objects that are included in the
|
||
|
PTF. See <a href="#HDRDIRINFO">Directory Information Format</a> for more
|
||
|
information about this field.</p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>Number of directories</strong></dt>
|
||
|
|
||
|
<dd>INPUT; BINARY(4)
|
||
|
|
||
|
<p>The number of directories listed in the directory information parameter.
|
||
|
This number must be in the range of 0 through 30.</p>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3>Optional Parameter Group 2</h3>
|
||
|
|
||
|
<dl>
|
||
|
<dt><strong>Additional parameter information</strong></dt>
|
||
|
|
||
|
<dd>INPUT; CHAR(*)
|
||
|
|
||
|
<p>The additional information to use when creating this PTF.</p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>Additional parameter information format name</strong></dt>
|
||
|
|
||
|
<dd>INPUT; CHAR(8)
|
||
|
|
||
|
<p>The format of the data specified in the additional parameter information.
|
||
|
The possible format name is:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="15 85" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>PTFC0100</em></td>
|
||
|
<td align="left" valign="top">The format contains information to create a PTF
|
||
|
that contains job preconditions and object preconditions. For details, see <a
|
||
|
href="#HDRPTFC100">PTFC0100 Format</a>.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3><a name="HDRPTFINFO">PTF Information Format</a></h3>
|
||
|
|
||
|
<p>For detailed descriptions of each field, see <a href="#HDRPTFRDE">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%">CHAR(7)</td>
|
||
|
<td align="left" valign="top" width="60%">PTF ID</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">7</td>
|
||
|
<td align="center" valign="top">7</td>
|
||
|
<td align="left" valign="top">CHAR(7)</td>
|
||
|
<td align="left" valign="top">Product ID</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">14</td>
|
||
|
<td align="center" valign="top">E</td>
|
||
|
<td align="left" valign="top">CHAR(6)</td>
|
||
|
<td align="left" valign="top">Release level</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">20</td>
|
||
|
<td align="center" valign="top">14</td>
|
||
|
<td align="left" valign="top">CHAR(4)</td>
|
||
|
<td align="left" valign="top">Product option</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">24</td>
|
||
|
<td align="center" valign="top">18</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Primary object library name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">34</td>
|
||
|
<td align="center" valign="top">22</td>
|
||
|
<td align="left" valign="top">CHAR(4)</td>
|
||
|
<td align="left" valign="top">Load ID</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">38</td>
|
||
|
<td align="center" valign="top">26</td>
|
||
|
<td align="left" valign="top">CHAR(6)</td>
|
||
|
<td align="left" valign="top">Target release</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">44</td>
|
||
|
<td align="center" valign="top">2C</td>
|
||
|
<td align="left" valign="top">CHAR(6)</td>
|
||
|
<td align="left" valign="top">Reserved</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3><a name="HDRREQSS">Requisite PTF Format</a></h3>
|
||
|
|
||
|
<p>Each entry in the array for the requisite PTFs parameter has the following
|
||
|
format. For detailed descriptions of each field, see <a href="#HDRPTFRDE">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%">CHAR(7)</td>
|
||
|
<td align="left" valign="top" width="60%">PTF ID</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">7</td>
|
||
|
<td align="center" valign="top">7</td>
|
||
|
<td align="left" valign="top">CHAR(16)</td>
|
||
|
<td align="left" valign="top">Reserved</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">23</td>
|
||
|
<td align="center" valign="top">17</td>
|
||
|
<td align="left" valign="top">CHAR(1)</td>
|
||
|
<td align="left" valign="top">Requisite type</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3><a name="HDREGRESS">Exit Programs Format</a></h3>
|
||
|
|
||
|
<p>Each entry in the array for the exit programs parameter has the following
|
||
|
format. For detailed descriptions of each field, see <a href="#HDRPTFRDE">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%"> </td>
|
||
|
<td align="center" valign="top" width="10%"> </td>
|
||
|
<td align="left" valign="top" width="20%">CHAR(10)</td>
|
||
|
<td align="left" valign="top" width="60%">Exit program name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Exit program library name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="left" valign="top">CHAR(7)</td>
|
||
|
<td align="left" valign="top">Run option</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="left" valign="top">CHAR(7)</td>
|
||
|
<td align="left" valign="top">Exit program type</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="left" valign="top">CHAR(50)</td>
|
||
|
<td align="left" valign="top">User data</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3><a name="HDRCOVER">Cover Letter Format</a></h3>
|
||
|
|
||
|
<p>Each entry in the array for the cover letter parameter has the following
|
||
|
format. The information must be presented in the order listed below. The exact
|
||
|
offsets for each entry are not given. For detailed descriptions of each field,
|
||
|
see <a href="#HDRPTFRDE">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%"> </td>
|
||
|
<td align="center" valign="top" width="10%"> </td>
|
||
|
<td align="left" valign="top" width="20%">CHAR(10)</td>
|
||
|
<td align="left" valign="top" width="60%">Cover letter file name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Cover letter library name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Cover letter member name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="left" valign="top">CHAR(4)</td>
|
||
|
<td align="left" valign="top">NLV</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Reserved</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3><a name="HDRDIRINFO">Directory Information Format</a></h3>
|
||
|
|
||
|
<p>Each record in the array for the directory information parameter has the
|
||
|
following format. The information must be presented in the order listed below.
|
||
|
The exact offsets for each entry are not given. For detailed descriptions of
|
||
|
each field, see <a href="#HDRPTFRDE">Field Descriptions</a>.</p>
|
||
|
|
||
|
<p>The following restrictions exist when you are assigning directory names:</p>
|
||
|
|
||
|
<ul>
|
||
|
<li>You cannot specify /QSYS.LIB or /QDLS directories.</li>
|
||
|
|
||
|
<li>You must specify unique path names.</li>
|
||
|
|
||
|
<li>Do not begin or end the path name with a forward slash.</li>
|
||
|
|
||
|
<li>Do not use a blank in the directory path name.</li>
|
||
|
|
||
|
<li>Do not use any of the character combinations of "." or ".." in the
|
||
|
directory path name.</li>
|
||
|
</ul>
|
||
|
|
||
|
<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%"> </td>
|
||
|
<td align="center" valign="top" width="10%"> </td>
|
||
|
<td align="left" valign="top" width="20%">Array of CHAR(*)</td>
|
||
|
<td align="left" valign="top" width="60%">Directory information record</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Offset to the next directory information
|
||
|
record</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Offset to the development directory name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Length of the development directory name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Offset to the product directory name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Length of the product directory name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Offset to the first directory object information
|
||
|
record</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Number of directory objects</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">Development directory name</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">Product directory name</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3><a name="HDRDIROBJI">Directory Object Information Record Format</a></h3>
|
||
|
|
||
|
<p>Each record in the array for the directory object information parameter has
|
||
|
the following format. The information must be presented in the order listed
|
||
|
below. The exact offsets for each entry are not given. For detailed
|
||
|
descriptions of each field, see <a href="#HDRPTFRDE">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%"> </td>
|
||
|
<td align="center" valign="top" width="10%"> </td>
|
||
|
<td align="left" valign="top" width="20%">Array of CHAR(*)</td>
|
||
|
<td align="left" valign="top" width="60%">Directory object information
|
||
|
record</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Length of directory object name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Displacement to next directory object information
|
||
|
record</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">Directory object name</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3><a name="HDRPTFC100">PTFC0100 Format</a></h3>
|
||
|
|
||
|
<p>This information defines the format for the additional parameter information
|
||
|
when the additional parameter information format name is PTFC0100. For detailed
|
||
|
descriptions of each field, see <a href="#HDRPTFRDE">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%">Offset to first job precondition
|
||
|
record</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">Number of job precondition records</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 of each job precondition record</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">Offset to first object precondition record</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">Number of object precondition records</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">Length of each object precondition record</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3><a name="HDRJOBCND">Job Precondition Record</a></h3>
|
||
|
|
||
|
<p>An array containing the names of the jobs or subsystems that must not be
|
||
|
active when the PTF is being immediately applied or removed temporarily. When
|
||
|
this PTF is applied or removed and this job or subsystem is active, the PTF
|
||
|
will not be allowed to be processed.</p>
|
||
|
|
||
|
<p><strong>Note:</strong> PTF processing will not prevent the job or subsystem
|
||
|
from becoming active after this check is made, but before the PTF is actually
|
||
|
processed.</p>
|
||
|
|
||
|
<p>Each record in the job preconditions array has the following format. The
|
||
|
information must be presented in the order listed below. The exact offsets for
|
||
|
each entry are not given. For detailed descriptions of each field, see <a href=
|
||
|
"#HDRPTFRDE">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%"> </td>
|
||
|
<td align="center" valign="top" width="10%"> </td>
|
||
|
<td align="left" valign="top" width="20%">CHAR(1)</td>
|
||
|
<td align="left" valign="top" width="60%">Precondition type</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Precondition name</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">Reserved</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3><a name="HDROBJCND">Object Precondition Record</a></h3>
|
||
|
|
||
|
<p>An array containing the names of the objects that must not be allocated when
|
||
|
the PTF is being immediately applied or removed temporarily. When this PTF is
|
||
|
applied or removed and this object has active or waiting locks, the PTF will
|
||
|
not be allowed to be processed.</p>
|
||
|
|
||
|
<p><strong>Note:</strong> PTF processing will not prevent the object from being
|
||
|
allocated after this check is made, but before the PTF is actually
|
||
|
processed.</p>
|
||
|
|
||
|
<p>Each entry in the object preconditions array has the following format. The
|
||
|
information must be presented in the order listed below. The exact offsets for
|
||
|
each entry are not given. For detailed descriptions of each field, see <a href=
|
||
|
"#HDRPTFRDE">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%"> </td>
|
||
|
<td align="center" valign="top" width="10%"> </td>
|
||
|
<td align="left" valign="top" width="20%">CHAR(10)</td>
|
||
|
<td align="left" valign="top" width="60%">Precondition object name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Precondition library name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Precondition object type</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">Reserved</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3><a name="HDRPTFRDE">Field Descriptions</a></h3>
|
||
|
|
||
|
<p><strong>Cover letter file name.</strong> The name of the file where the
|
||
|
cover letter can be located.</p>
|
||
|
|
||
|
<p><strong>Cover letter library name.</strong> The name of the library where
|
||
|
the cover letter file can be located.</p>
|
||
|
|
||
|
<p><strong>Cover letter member name.</strong> The member name that contains the
|
||
|
cover letter.</p>
|
||
|
|
||
|
<p><strong>Development directory name.</strong> The name of the directory where
|
||
|
the directory objects that will be in the PTF reside. The possible special
|
||
|
value is:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="15 85" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*PRDDIR</em></td>
|
||
|
<td align="left" valign="top">The development directory name is the same as the
|
||
|
product directory name.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Directory information record.</strong> The information about each
|
||
|
directory for this PTF.</p>
|
||
|
|
||
|
<p><strong>Directory object information record.</strong> The information about
|
||
|
the objects for this directory.</p>
|
||
|
|
||
|
<p><strong>Directory object name.</strong> The name of the directory object to
|
||
|
include in the PTF.</p>
|
||
|
|
||
|
<p><strong>Exit program library name.</strong> The library where the exit
|
||
|
program can be found. If the exit program is part of the PTF, this is the
|
||
|
library in which it exists currently. If the exit program is part of the
|
||
|
product, this is the primary library where the exit program exists.</p>
|
||
|
|
||
|
<p><strong>Exit program name.</strong> The name of the exit program.</p>
|
||
|
|
||
|
<p><strong>Exit program type.</strong> Whether the exit program is to be
|
||
|
included in this PTF. The possible values are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="15 85" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*PTF</em></td>
|
||
|
<td align="left" valign="top">The exit program is to be included in the PTF.
|
||
|
The exit program must exist in the library specified in the exit program
|
||
|
library field.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*OBJLST</em></td>
|
||
|
<td align="left" valign="top">The exit program is part of the product and
|
||
|
should not be included in the PTF. The exit program must exist in one of the
|
||
|
following:
|
||
|
|
||
|
<ul>
|
||
|
<li>The object list for the product, option, and load of the PTF being
|
||
|
created.</li>
|
||
|
|
||
|
<li>The principal library for the base option (*BASE) of the product.</li>
|
||
|
</ul>
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Length of each job precondition record.</strong> The length of the
|
||
|
job precondition record. The length must be set to 11.</p>
|
||
|
|
||
|
<p><strong>Length of each object precondition record.</strong> The length of
|
||
|
the object precondition record. The length must be set to 30.</p>
|
||
|
|
||
|
<p><strong>Length of the development directory name.</strong> The length of the
|
||
|
development directory name. The length of a development directory cannot exceed
|
||
|
240 characters.</p>
|
||
|
|
||
|
<p><strong>Length of the directory object name.</strong> The length of the
|
||
|
directory object name. The length of a directory object exceed 255
|
||
|
characters.</p>
|
||
|
|
||
|
<p><strong>Length of the product directory name.</strong> The length of the
|
||
|
product directory name. The length of a product directory cannot exceed 240
|
||
|
characters.</p>
|
||
|
|
||
|
<p><strong>Load ID.</strong> The load ID of the product load for the PTF. This
|
||
|
will be a language load if the PTF is for textual data, or it will be the code
|
||
|
load.</p>
|
||
|
|
||
|
<p><strong>Number of directory objects.</strong> The number of objects that
|
||
|
exist in the array of directory object information records. This number must be
|
||
|
in the range of 1 through 100.</p>
|
||
|
|
||
|
<p><strong>Number of job precondition records.</strong> The number of job
|
||
|
preconditions that exist. This number must be in the range of 0 through 300.</p>
|
||
|
|
||
|
<p><strong>Number of object precondition records.</strong> The number of object
|
||
|
preconditions that exist. This number must be in the range of 0 through 300.</p>
|
||
|
|
||
|
<p><strong>NLV.</strong> The NLV of the cover letter. This must be a valid
|
||
|
system NLV.</p>
|
||
|
|
||
|
<p><strong>Offset to the development directory name.</strong> The byte offset
|
||
|
from the beginning of the directory information parameter to the beginning of
|
||
|
the name of the development directory.</p>
|
||
|
|
||
|
<p><strong>Offset to the first directory object information record.</strong>
|
||
|
The byte offset from the beginning of the directory information parameter to
|
||
|
the first directory object information record.</p>
|
||
|
|
||
|
<p><strong>Offset to the first job precondition record.</strong> The byte
|
||
|
offset from the beginning of the additional information parameter to the
|
||
|
beginning of the first job precondition record.</p>
|
||
|
|
||
|
<p><strong>Offset to the first object precondition record.</strong> The byte
|
||
|
offset from the beginning of the additional information parameter to the
|
||
|
beginning of the first object precondition record.</p>
|
||
|
|
||
|
<p><strong>Offset to the next directory information record.</strong> The byte
|
||
|
offset from the beginning of the directory information parameter to the
|
||
|
beginning of the next directory information record.</p>
|
||
|
|
||
|
<p><strong>Offset to the product directory name.</strong> The byte offset from
|
||
|
the beginning of the directory information parameter to the beginning of the
|
||
|
name of the product directory.</p>
|
||
|
|
||
|
<p><strong>Precondition library name.</strong> The name of the library where
|
||
|
the object specified in the precondition object name field resides.</p>
|
||
|
|
||
|
<p><strong>Precondition name.</strong> The name of the job or subsystem that
|
||
|
must not be active when this PTF is temporarily applied or removed immediately.
|
||
|
A specific name or a generic name can be specified. This field must be blanks
|
||
|
when the precondition type is 3 or 4.</p>
|
||
|
|
||
|
<p><strong>Precondition object name.</strong> The name of the object that must
|
||
|
not be allocated when this PTF is applied temporarily or removed immediately. A
|
||
|
specific name or a generic name may be specified.</p>
|
||
|
|
||
|
<p><strong>Precondition object type.</strong> The type of the object specified
|
||
|
in the precondition object name field.</p>
|
||
|
|
||
|
<p><strong>Precondition type.</strong> The type of the precondition specified
|
||
|
in the precondition name. The possible values are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>1</em></td>
|
||
|
<td align="left" valign="top">The precondition name indicates a job.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>2</em></td>
|
||
|
<td align="left" valign="top">The precondition name indicates a subsystem.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>3</em></td>
|
||
|
<td align="left" valign="top">The system must be in restricted state for this
|
||
|
PTF to be immediately applied or removed. The precondition name field must be
|
||
|
blanks when this value is specified.</td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>4</em></td>
|
||
|
<td align="left" valign="top">No Java virtual machines can be active on the
|
||
|
system in order to temporarily apply or temporarily remove this PTF
|
||
|
immediately. Any new Java virtual machines will be prevented from
|
||
|
being started during the apply or remove processing. The precondition name
|
||
|
field must be blanks when this value is specified.
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Primary object library name.</strong> The library in which the
|
||
|
objects are to be placed when the PTF is applied. If necessary, the PTF apply
|
||
|
operation maps the primary library that is specified when the PTF was created
|
||
|
in the actual installed library. Two cases where this is important are:</p>
|
||
|
|
||
|
<ul>
|
||
|
<li>The product load has been installed into a secondary language library.</li>
|
||
|
|
||
|
<li>Dynamic library renaming was used when the product was installed.</li>
|
||
|
</ul>
|
||
|
|
||
|
<p><strong>Product directory name.</strong> The name of the directory defined
|
||
|
by the product that is the default directory where the objects will reside when
|
||
|
the PTF is applied. The length of a product directory cannot exceed 240
|
||
|
characters.</p>
|
||
|
|
||
|
<p><strong>Product ID.</strong> The product for which the PTF is being created.
|
||
|
This product must be installed on the system.</p>
|
||
|
|
||
|
<p><strong>Product option.</strong> The option of the product for which the PTF
|
||
|
is being created. All objects in the PTF must be for the same option and the
|
||
|
same library within the option.</p>
|
||
|
|
||
|
<p><strong>PTF ID.</strong> The ID by which the PTF is to be known. The
|
||
|
identifier must be 7 characters. The first character must be numeric. The
|
||
|
second and third characters must be alphabetic. The same identifier can be used
|
||
|
only once for each product and release level.</p>
|
||
|
|
||
|
<p><strong>Release level.</strong> The version, release, and modification level
|
||
|
of the product in the format V<em>x</em>R<em>y</em>M<em>z</em>. Valid values
|
||
|
for <em>x</em> and <em>y</em> are 0 through 9, and valid values for <em>z</em>
|
||
|
are 0 through 9 or A through Z.</p>
|
||
|
|
||
|
<p><strong>Requisite type.</strong> The type of requisite relationship. If this
|
||
|
is blank, a prerequisite relationship is assumed. 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 requisite PTF is a prerequisite of this PTF.
|
||
|
The requisite PTF is required by this PTF, but it does not require this PTF. It
|
||
|
cannot specify this PTF as a prerequisite. It must be applied before or with
|
||
|
this PTF. If it is applied with this PTF, the system applies it first.<br>
|
||
|
<br>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>2</em></td>
|
||
|
<td align="left" valign="top">The requisite PTF is a corequisite of this PTF;
|
||
|
it is required by this PTF, and it requires this PTF. It must specify this PTF
|
||
|
as a corequisite. Corequisite PTFs must be applied together. When they are
|
||
|
applied together, the system may apply either of them first.<br>
|
||
|
<br>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>(blank)</em></td>
|
||
|
<td align="left" valign="top">A value of 1 is assumed. The requisite PTF is a
|
||
|
prerequisite of this PTF. The requisite PTF is required by this PTF, but it
|
||
|
does not require this PTF.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Reserved.</strong> An error will be signaled if this field does not
|
||
|
contain blanks.</p>
|
||
|
|
||
|
<p><strong>Run option.</strong> When the exit program is to be run. The
|
||
|
possible values are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="15 85" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*BOTH</em></td>
|
||
|
<td align="left" valign="top">The exit program will be run at the end of apply
|
||
|
and remove processing.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*APPLY</em></td>
|
||
|
<td align="left" valign="top">The exit program will be run at the end of apply
|
||
|
processing.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*REMOVE</em></td>
|
||
|
<td align="left" valign="top">The exit program will be run at the end of remove
|
||
|
processing.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*PREAPY</em></td>
|
||
|
<td align="left" valign="top">The exit program will be run before the PTF is
|
||
|
applied and at the end of apply processing.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*PRERMV</em></td>
|
||
|
<td align="left" valign="top">The exit program will be run before the PTF is
|
||
|
removed and at the end of remove processing.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*PREBTH</em></td>
|
||
|
<td align="left" valign="top">The exit program will be run before the PTF is
|
||
|
removed and at the end of remove processing. It is also run before the PTF is
|
||
|
applied and at the end of apply processing.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Target release.</strong> The earliest release of the
|
||
|
operating system on which you intend to load and apply the PTF. This must be
|
||
|
left-justified. If this is blank, the current release is assumed. The possible
|
||
|
special values follow:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="15 85" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*CUR</em></td>
|
||
|
<td align="left" valign="top">The PTF is to be loaded, applied to, and used on
|
||
|
the release of the operating system currently running on your system. The PTF
|
||
|
also can be applied on a system with any later release of the operating system
|
||
|
installed.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*PRV</em></td>
|
||
|
<td align="left" valign="top">The PTF is to be loaded, applied to, and used on
|
||
|
the previous release with modification level 0 of the operating system. The PTF
|
||
|
also can be applied on a system with any later release of the operating system
|
||
|
installed.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" nowrap><em>Target release</em></td>
|
||
|
<td align="left" valign="top">The release of the operating system on which you
|
||
|
intend to load and apply the PTF. The release level is specified in the format
|
||
|
V<em>x</em>R<em>y</em>M<em>z</em>, where V<em>x</em> is the version,
|
||
|
R<em>y</em> is the release, and M<em>z</em> is the modification level. Valid
|
||
|
values depend on the current version, release, and modification level, and they
|
||
|
change with each new release.
|
||
|
|
||
|
<p><strong>Note:</strong> This PTF can be loaded and applied on any release
|
||
|
after the specified target release.</p>
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>User data.</strong> Any data you want to pass to the exit
|
||
|
program.</p>
|
||
|
|
||
|
<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">CPF24B4 E</td>
|
||
|
<td align="left" valign="top">Severe error while addressing parameter
|
||
|
list.</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">CPF3C29 E</td>
|
||
|
<td align="left" valign="top">Object name &1 is not valid.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF3C31 E</td>
|
||
|
<td align="left" valign="top">Object type &1 is not valid.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF3C90 E</td>
|
||
|
<td align="left" valign="top">Literal value cannot be changed.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF35BC E</td>
|
||
|
<td align="left" valign="top">Object type &1 not supported.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF35CC E</td>
|
||
|
<td align="left" valign="top">Library required for building PTFs already
|
||
|
exists.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF35DA E</td>
|
||
|
<td align="left" valign="top">Folder &1 not valid.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF35DB E</td>
|
||
|
<td align="left" valign="top">Duplicate documents specified.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF35DC E</td>
|
||
|
<td align="left" valign="top">Primary library not found.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF35DD E</td>
|
||
|
<td align="left" valign="top">Problem &1 does not exist.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF35DF E</td>
|
||
|
<td align="left" valign="top">Value for target release not valid.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF35D3 E</td>
|
||
|
<td align="left" valign="top">Cover letter not copied.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF35D4 E</td>
|
||
|
<td align="left" valign="top">Cover letter file record length too long.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF35D5 E</td>
|
||
|
<td align="left" valign="top">Cover letter NLV not valid.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF35D6 E</td>
|
||
|
<td align="left" valign="top">Duplicate exit programs specified.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF35D8 E</td>
|
||
|
<td align="left" valign="top">Exit program &1 not valid.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF35D9 E</td>
|
||
|
<td align="left" valign="top">Duplicate objects specified.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF3505 E</td>
|
||
|
<td align="left" valign="top">Corequisite PTF &1-&2 &3 contains
|
||
|
common objects.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF3507 E</td>
|
||
|
<td align="left" valign="top">Corequisite PTF &1-&2 &3 not
|
||
|
specified.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF3509 E</td>
|
||
|
<td align="left" valign="top">Specified corequisite PTF &1-&2 &3
|
||
|
not valid.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF357A E</td>
|
||
|
<td align="left" valign="top">Parameter value not valid.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF357B E</td>
|
||
|
<td align="left" valign="top">Product not found.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF357D E</td>
|
||
|
<td align="left" valign="top">Document or folder name not correct.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF3570 E</td>
|
||
|
<td align="left" valign="top">No PTF IDs available in range.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF3571 E</td>
|
||
|
<td align="left" valign="top">PTF ID &1 not within valid range.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF3572 E</td>
|
||
|
<td align="left" valign="top">PTF &2-&1 &3 already exists.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF3573 E</td>
|
||
|
<td align="left" valign="top">Resources required for product &1 are not
|
||
|
available.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF3574 E</td>
|
||
|
<td align="left" valign="top">PTF ID not valid.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF358A E</td>
|
||
|
<td align="left" valign="top">Release not valid.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF358B E</td>
|
||
|
<td align="left" valign="top">PTF not created.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF358C E</td>
|
||
|
<td align="left" valign="top">Create PTF not allowed for product &1.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF358D E</td>
|
||
|
<td align="left" valign="top">Run option not valid.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF358E E</td>
|
||
|
<td align="left" valign="top">Exit program type not valid.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF359C E</td>
|
||
|
<td align="left" valign="top">Requisite type not valid.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF35EC E</td>
|
||
|
<td align="left" valign="top">Duplicate requisites specified.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF3901 E</td>
|
||
|
<td align="left" valign="top">PTF &1-&2 &3 not created.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF9872 E</td>
|
||
|
<td align="left" valign="top">Program or service program &1 in library
|
||
|
&2 ended. Reason code &3.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<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=
|
||
|
"sw1.htm">Software Product APIs</a> | <a href="aplist.htm">APIs by
|
||
|
category</a></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</body>
|
||
|
</html>
|
||
|
|