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

756 lines
23 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>Software Product Functions Exit Program</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 ========================================= -->
<!-- SOFTXPRG SCRIPT A converted by B2H R4.1 (346) (CMS) by KENTALA -->
<!-- at RCHVMW2 on 21 Oct 1998 at 18:03:38 -->
<!-- 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>Software Product Functions 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%">Function being performed</td>
<td align="left" valign="top" width="20%">Input</td>
<td align="left" valign="top" width="20%">Char(10)</td>
</tr>
<tr>
<td align="center" valign="top">2</td>
<td align="left" valign="top">Before or after indicator</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">Language ID</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(4)</td>
</tr>
<tr>
<td align="center" valign="top">4</td>
<td align="left" valign="top">Library that contains exit programs</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(10)</td>
</tr>
<tr>
<td align="center" valign="top">5</td>
<td align="left" valign="top">Library where product currently exists</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(10)</td>
</tr>
<tr>
<td align="center" valign="top">6</td>
<td align="left" valign="top">Library specified by creator of product</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">Library where product will exist</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(10)</td>
</tr>
<tr>
<td align="center" valign="top">8</td>
<td align="left" valign="top">Root folder that product currently uses</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(12)</td>
</tr>
<tr>
<td align="center" valign="top">9</td>
<td align="left" valign="top">Root folder specified by creator</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(12)</td>
</tr>
<tr>
<td align="center" valign="top">10</td>
<td align="left" valign="top">Root folder that product will use</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(12)</td>
</tr>
<tr>
<td align="center" valign="top">11</td>
<td align="left" valign="top">Release level of product</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(6)</td>
</tr>
<tr>
<td align="center" valign="top">12</td>
<td align="left" valign="top">Release level of product being restored</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(6)</td>
</tr>
<tr>
<td align="center" valign="top">13</td>
<td align="left" valign="top">Array of missing objects and their symbolic<br>
object types</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">14</td>
<td align="left" valign="top">Number of missing objects</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">Array of missing folders</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Array of Char(63)</td>
</tr>
<tr>
<td align="center" valign="top">16</td>
<td align="left" valign="top">Number of missing folders</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Binary(4)</td>
</tr>
<tr>
<td align="center" valign="top">17</td>
<td align="left" valign="top">Array of offsets to missing directory
information</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Array of Binary(4)</td>
</tr>
<tr>
<td align="center" valign="top">18</td>
<td align="left" valign="top">Number of missing directories</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Binary(4)</td>
</tr>
<tr>
<td align="center" valign="top">19</td>
<td align="left" valign="top">Number of product directories</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Binary(4)</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="left" valign="top">Array of offsets to directory information where
product currently exists</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Array(300) of Binary(4)</td>
</tr>
<tr>
<td align="center" valign="top">21</td>
<td align="left" valign="top">Array of offsets to directory information<br>
specified by creator of product</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Array(300) of Binary(4)</td>
</tr>
<tr>
<td align="center" valign="top">22</td>
<td align="left" valign="top">Array of offsets to directory information where
product will exist</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Array(300) of Binary(4)</td>
</tr>
</table>
<br>
</div>
<p>This exit program is specified when you create products that are restored,
saved, deleted, and checked with the following commands:</p>
<ul>
<li>Restore Licensed Program (RSTLICPGM)</li>
<li>Delete Licensed Program (DLTLICPGM)</li>
<li>Save Licensed Program (SAVLICPGM)</li>
<li>Check Product Option (CHKPRDOPT)</li>
</ul>
<p>More information about creating your own product and using exit programs is
available in the <a href="../books/sc415321.pdf" target="_blank">System
Manager Use</a><img src="wbpdf.gif" alt="Link to PDF"> book.</p>
<br>
<!-- Please NOTE: DO NOT DELETE THIS SECTION if this API has no authorities and locks. -->
<!-- Instead, use the commented out coding below to indicate NONE. -->
<h3>Authorities and Locks</h3>
<!-- Use this if there are no authorities and locks. -->
<p>None.</p>
<br>
<h3>Required Parameter Group</h3>
<p>Exit programs must be written to accept the following parameters:</p>
<dl>
<dt><strong>Function being performed</strong></dt>
<dd>INPUT; CHAR(10)
<p>The function being performed when this exit program is called. The values
are:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>*RSTCODE (restore code)</em></td>
<td align="left" valign="top">Restore program objects when the RSTLICPGM
command runs.</td>
</tr>
<tr>
<td align="left" valign="top"><em>*SAVCODE (save code)</em></td>
<td align="left" valign="top">Save program objects when the SAVLICPGM command
runs.</td>
</tr>
<tr>
<td align="left" valign="top"><em>*DLTCODE (delete code)</em></td>
<td align="left" valign="top">Delete program objects when the DLTLICPGM command
runs.</td>
</tr>
<tr>
<td align="left" valign="top"><em>*CHKCODE (check code)</em></td>
<td align="left" valign="top">Check program objects when the CHKPRDOPT command
runs.</td>
</tr>
<tr>
<td align="left" valign="top"><em>*RSTLNG (restore language)</em></td>
<td align="left" valign="top">Restore language objects when the RSTLICPGM
command runs.</td>
</tr>
<tr>
<td align="left" valign="top"><em>*SAVLNG (save language)</em></td>
<td align="left" valign="top">Save language objects when the SAVLICPGM command
runs.</td>
</tr>
<tr>
<td align="left" valign="top"><em>*DLTLNG (delete language)</em></td>
<td align="left" valign="top">Delete language objects when the DLTLICPGM
command runs.</td>
</tr>
<tr>
<td align="left" valign="top"><em>*CHKLNG (check language)</em></td>
<td align="left" valign="top">Check language objects when the CHKPRDOPT command
runs.</td>
</tr>
</table>
<br>
</dd>
<dt><strong>Before or after indicator</strong></dt>
<dd>INPUT; CHAR(10)
<p>Whether the exit program is being called before or after the actual
operation (restore process, save process, and so on). The values are:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>*BEFORE</em></td>
<td align="left" valign="top">The program is called before the actual
operation.</td>
</tr>
<tr>
<td align="left" valign="top"><em>*AFTER</em></td>
<td align="left" valign="top">The program is called after the actual
operation.</td>
</tr>
</table>
<br>
</dd>
<dt><strong>Language ID</strong></dt>
<dd>INPUT; CHAR(4)
<p>The 4-digit feature code identifier. For the *RSTCODE, *SAVCODE, *DLTCODE,
and *CHKCODE values of the function being performed parameter, this value is
blank because it only applies to the language functions.</p>
</dd>
<dt><strong>Library that contains exit programs</strong></dt>
<dd>INPUT; CHAR(10)
<p>The library where exit programs for the product are located while the
current function is being performed. You cannot assume this value will be
either the library where the product currently exists or will exist.</p>
</dd>
<dt><strong>Library where product currently exists</strong></dt>
<dd>INPUT; CHAR(10)
<p>If the product exists on the system when the exit program is called, this is
the library that contains the product. Otherwise, this value is blank.</p>
</dd>
<dt><strong>Library specified by creator of product</strong></dt>
<dd>INPUT; CHAR(10)
<p>The library that was specified on the Create Product Load (CRTPRDLOD)
command or the Create Product Load (QSZCRTPL) API when you created the
product.</p>
</dd>
<dt><strong>Library where product will exist</strong></dt>
<dd>INPUT; CHAR(10)
<p>The library of the product after the product is restored. This value only
applies when the function being performed is *RSTCODE and *RSTLNG. For other
functions, this value is blank.</p>
</dd>
<dt><strong>Root folder that product currently uses</strong></dt>
<dd>INPUT; CHAR(12)
<p>The root folder specified if the product is installed and has folders. It is
only specified when calling the exit program for the principal library.
Otherwise, this value is blank.</p>
</dd>
<dt><strong>Root folder specified by creator</strong></dt>
<dd>INPUT; CHAR(12)
<p>The root folder that was specified on the CRTPRDLOD command or the QSZCRTPL
API when the product was created. This only applies if the product has folders
and is only specified when calling the exit program for the principal
library.</p>
</dd>
<dt><strong>Root folder that product will use</strong></dt>
<dd>INPUT; CHAR(12)
<p>The root folder specified only if the product is being restored and has
folders. It is only specified when calling the exit program for the principal
library. Otherwise, this value is blank.</p>
</dd>
<dt><strong>Release level of product</strong></dt>
<dd>INPUT; CHAR(6)
<p>The version, release, and modification level of the product being restored,
saved, deleted, or checked in the form VxRxMx.</p>
</dd>
<dt><strong>Release level of product being restored</strong></dt>
<dd>INPUT; CHAR(6)
<p>The version, release, and modification level of the product being restored
in the form VxRxMx. It is only specified if the product is being restored;
otherwise, the value is blank.</p>
</dd>
<dt><strong>Array of missing objects and their symbolic object
types</strong></dt>
<dd>INPUT; ARRAY of CHAR(20)
<p>The list passed when the function being performed is *SAVCODE, *SAVLNG,
*CHKCODE, or *CHKLNG. For *SAVCODE and *SAVLNG, the list will only be passed
before the actual save operation. For *CHKCODE and *CHKLNG, the list will be
passed after the check operation. The first 10 characters contain the object
name, and the second 10 characters contain the object type.</p>
</dd>
<dt><strong>Number of missing objects</strong></dt>
<dd>INPUT; BINARY(4)
<p>The number of missing objects in the previous array. This number is 0 when
there are no objects in the list or when the function being performed is not
*SAVCODE, *SAVLNG, *CHKCODE, or *CHKLNG. The maximum number is 499.</p>
</dd>
<dt><strong>Array of missing folders</strong></dt>
<dd>INPUT; ARRAY of CHAR(63) for each folder name
<p>The list passed when the function being performed is *SAVCODE, *SAVLNG,
*CHKCODE, or *CHKLNG. For *SAVCODE and *SAVLNG, the list will only be passed
before the actual save operation. For *CHKCODE and *CHKLNG, the list will be
passed after the check operation. This only applies if the product has folders
and is only specified when calling the exit program for the principal
library.</p>
</dd>
<dt><strong>Number of missing folders</strong></dt>
<dd>INPUT; BINARY(4)
<p>The number of missing folders in the previous array. This number is 0 when
there are no folders in the list or when the function being performed is not
*SAVCODE, *SAVLNG, *CHKCODE, or *CHKLNG.</p>
</dd>
<dt><strong>Array of offsets to missing directory information</strong></dt>
<dd>INPUT; ARRAY of BINARY(4)
<p>The offsets from the beginning of this array that point to the missing
directory information. The offsets and missing directory information structures
are passed when the function being performed is *SAVCODE, *SAVLNG, *CHKCODE, or
*CHKLNG. For *SAVCODE and *SAVLNG, the list will only be passed before the
actual save operation. For *CHKCODE and *CHKLNG, the list will be passed after
the check operation. This only applies if the product has directories, and is
only specified when calling the exit program for the principal library. For a
description of the format, see <a href="#HDRFORMMDI">Format of Missing
Directory Information</a>.</p>
</dd>
<dt><strong>Number of missing directories</strong></dt>
<dd>INPUT; BINARY(4)
<p>The number of missing directories in the previous array. The maximum number
is 300. This number is 0 when there are no missing directories in the list or
when the function being performed is not *SAVCODE, *SAVLNG, *CHKCODE, or
*CHKLNG.</p>
</dd>
<dt><strong>Number of product directories</strong></dt>
<dd>INPUT; BINARY(4)
<p>The number of product directories in the next three arrays. This number is 0
when there are no product directories in any of the following lists. The
maximum number is 300.</p>
</dd>
<dt><strong>Array of offsets to directory information where product currently
exists</strong></dt>
<dd>INPUT; ARRAY(300) of BINARY(4)
<p>The offsets from the beginning of this array that point to the current
product directory information. When the function being performed is *RSTCODE,
*RSTLNG, *SAVCODE, or *SAVLNG, this information is passed both before and after
the actual restore or save operation. When the function being performed is
*DLTCODE or *DLTLNG, this information is passed before the delete operation.
When the function being performed is *CHKCODE or *CHKLNG, this information is
passed after the check operation. This array will contain zeros in the
following circumstances:</p>
<ul>
<li>There are no product directories.</li>
<li>The function being performed is *RSTCODE or *RSTLNG and the product is not
currently installed.</li>
</ul>
<p>For a description of the structure that contains the product directory
information, see <a href="#HDRFORMPDI">Format of Product Directory
Information</a>.</p>
</dd>
<dt><strong>Array of offsets to directory information specified by creator of
product</strong></dt>
<dd>INPUT; ARRAY(300) of BINARY(4)
<p>The offsets from the beginning of this array that point to the directory
information specified when the product was created. When the function being
performed is *RSTCODE, *RSTLNG, *SAVCODE, or *SAVLNG, this information is
passed both before and after the actual restore or save operation. When the
function being performed is *DLTCODE or *DLTLNG, this information is passed
before the delete operation. When the function being performed is *CHKCODE or
*CHKLNG, this information is passed after the check operation. This array will
contain zeros if there are no product directories. For a description of the
structure that contains the product directory information, see <a href=
"#HDRFORMPDI">Format of Product Directory Information</a>.</p>
</dd>
<dt><strong>Array of offsets to directory information where product will
exist</strong></dt>
<dd>INPUT; ARRAY(300) of BINARY(4)
<p>The offsets from the beginning of this array that point to the directory
information where the product will exist after the restore operation. When the
function being performed is *RSTCODE or *RSTLNG, this information is passed
both before and after the actual restore operation. The information is not
passed for other functions. This array will contain zeros if there are no
product directories. For a description of the structure that contains the
product directory information, see <a href="#HDRFORMPDI">Format of Product
Directory Information</a>.</p>
</dd>
</dl>
<br>
<h3><a name="HDRFORMMDI">Format of Missing Directory Information</a></h3>
<p>The following table shows the format of the missing directory
information.</p>
<table border="1" 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%">Full length of the missing
directory</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">Home length of the missing directory</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">Missing directory's CCSID</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">Missing directory's index</td>
</tr>
<tr>
<td align="center" valign="top">16</td>
<td align="center" valign="top">10</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Reserved space</td>
</tr>
<tr>
<td align="center" valign="top">26</td>
<td align="center" valign="top">1A</td>
<td align="left" valign="top">CHAR(480)</td>
<td align="left" valign="top">Missing directory name</td>
</tr>
</table>
<br>
<br>
<h3><a name="Header_4">Field Descriptions</a></h3>
<p><strong>Full length of the missing directory.</strong> The total length of
the missing directory path name.</p>
<p><strong>Home length of the missing directory.</strong> The root (changeable)
part length of the missing directory path name.</p>
<p><strong>Missing directory name.</strong> The missing directory path name. The CCSID of this value is
contained in the Missing Directory's CCSID field. The maximum missing directory
name length is 240 characters (480 bytes).</p>
<p><strong>Missing directory's CCSID.</strong> The coded character set
identifier of the missing directory.</p>
<p><strong>Missing directory's index.</strong> A reference index into the array
of offsets to directory information specified by the creator of the
product.</p>
<p><strong>Reserved space.</strong> Internal reserved space.</p>
<br>
<h3><a name="HDRFORMPDI">Format of Product Directory Information</a></h3>
<p>The following table shows the format for the product directory information
structures.</p>
<table border="1" 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%">Full length of the product
directory</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">Home length of the product directory</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">Product directory's CCSID</td>
</tr>
<tr>
<td align="center" valign="top">12</td>
<td align="center" valign="top">C</td>
<td align="left" valign="top">CHAR(14)</td>
<td align="left" valign="top">Reserved space</td>
</tr>
<tr>
<td align="center" valign="top">26</td>
<td align="center" valign="top">1A</td>
<td align="left" valign="top">CHAR(480)</td>
<td align="left" valign="top">Product directory name</td>
</tr>
</table>
<br>
<br>
<h3>Field Descriptions</h3>
<p><strong>Full length of the product directory.</strong> The total length of
the product directory path name.</p>
<p><strong>Home length of the product directory.</strong> The root (changeable)
part length of the product directory path name.</p>
<p><strong>Product directory name.</strong> The product directory path name. The CCSID of this value is
contained in the Product directory's CCSID field. The maximum product directory
name length is 240 characters (480 bytes).</p>
<p><strong>Product directory's CCSID.</strong> The coded character set
identifier of the product directory.</p>
<p><strong>Reserved space.</strong> Internal reserved space.</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">CPD3DC8 E</td>
<td align="left" valign="top">&amp;5 &amp;6 in &amp;7 not found for product
&amp;1 option &amp;2 release &amp;4.</td>
</tr>
<tr>
<td align="left" valign="top">CPD3DE7 E</td>
<td align="left" valign="top">Folder &amp;6 not found for product &amp;1 option
&amp;2 release &amp;4.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3D95 E</td>
<td align="left" valign="top">Exit program processing failed.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3D98 E</td>
<td align="left" valign="top">Exit program processing found error in
product.</td>
</tr>
</table>
<br>
<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>