ibm-information-center/dist/eclipse/plugins/i5OS.ic.cl_5.4.0.1/updpgm.htm

526 lines
22 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">
<title>Update Program (UPDPGM)</title>
<link rel="stylesheet" type="text/css" href="../rzahg/ic.css">
</head>
<body bgcolor="white">
<script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script>
<a name="UPDPGM.Top_Of_Page"></a>
<h2>Update Program (UPDPGM)</h2>
<table width="100%">
<tr>
<td valign="top" align="left"><b>Where allowed to run: </b>All environments (*ALL)<br>
<b>Threadsafe: </b>No
</td>
<td valign="top" align="right">
<a href="#UPDPGM.PARAMETERS.TABLE">Parameters</a><br>
<a href="#UPDPGM.COMMAND.EXAMPLES">Examples</a><br>
<a href="#UPDPGM.ERROR.MESSAGES">Error messages</a></td>
</tr>
</table>
<div> <a name="UPDPGM"></a>
<p>The Update Program (UPDPGM) command can be used to replace modules of an Integrated Language Environment (ILE) bound program with other modules on the system, without requiring you to change or recompile the bound program. Modules being replaced must be module objects (*MODULE) on the system.
</p>
<p>Other jobs running the bound program can run while the program is being updated with this command. The currently running bound program is moved to library QRPLOBJ and an updated version of the bound program is inserted into the library of the bound program. Current activations of the program will continue running, using the version of the program in the QRPLOBJ library.
</p>
<p><b>Restrictions:</b>
</p>
<ul>
<li>You must have use (*USE) and add (*ADD) authorities to the library of the bound program.
</li>
<li>You must have *USE, object management (*OBJMGT), and object existence (*OBJEXIST) authorities to the bound program.
</li>
<li>You must be the owner of the bound program, or a member of a group who is the owner of the bound program, or be a user with all object (*ALLOBJ) special authority.
</li>
<li>You must have *USE authority to the following:
<ul>
<li>*MODULE objects specified on the <b>Module (MODULE)</b> parameter, and execute (*EXECUTE) authority to the library that the module resides in.
</li>
<li>*SRVPGM objects specified on the <b>Bind service program (BNDSRVPGM)</b> parameter.
</li>
<li>*BNDDIR objects specified on the <b>Binding directory (BNDDIR)</b> parameter, and *EXECUTE authority to the library, and all objects used to resolve external symbols for these *BNDDIR objects, and their libraries.
</li>
</ul>
</li>
</ul>
</div>
<table width="100%">
<tr><td align="right"><a href="#UPDPGM.Top_Of_Page">Top</a></td></tr>
</table>
<hr size="2" width="100%">
<div>
<h3><a name="UPDPGM.PARAMETERS.TABLE">Parameters</a></h3>
<table border="1" cellpadding="4" cellspacing="0">
<!-- col1="10" col2="15" col3="30" col4="10" -->
<tr>
<th bgcolor="aqua" valign="bottom" align="left">Keyword</th>
<th bgcolor="aqua" valign="bottom" align="left">Description</th>
<th bgcolor="aqua" valign="bottom" align="left">Choices</th>
<th bgcolor="aqua" valign="bottom" align="left">Notes</th>
</tr>
<tr>
<td valign="top" rowspan="3"><a href="#UPDPGM.PGM"><b>PGM</b></a></td>
<td valign="top">Program</td>
<td valign="top"><i>Qualified object name</i></td>
<td valign="top" rowspan="3">Required, Positional 1</td>
</tr>
<tr>
<td valign="top">Qualifier 1: Program</td>
<td valign="top"><i>Name</i></td>
</tr><tr>
<td valign="top">Qualifier 2: Library</td>
<td valign="top"><i>Name</i>, <b><u>*USRLIBL</u></b>, *CURLIB</td>
</tr><tr>
<td valign="top" rowspan="3"><a href="#UPDPGM.MODULE"><b>MODULE</b></a></td>
<td valign="top">Module</td>
<td valign="top">Single values: *NONE<br>Other values (up to 300 repetitions): <i>Qualified object name</i></td>
<td valign="top" rowspan="3">Required, Positional 2</td>
</tr>
<tr>
<td valign="top">Qualifier 1: Module</td>
<td valign="top"><i>Generic name, name</i>, *ALL</td>
</tr><tr>
<td valign="top">Qualifier 2: Library</td>
<td valign="top"><i>Name</i>, <b><u>*LIBL</u></b>, *CURLIB, *USRLIBL</td>
</tr><tr>
<td valign="top" rowspan="2"><a href="#UPDPGM.RPLLIB"><b>RPLLIB</b></a></td>
<td valign="top">Replacement library</td>
<td valign="top">Single values: <b><u>*ONLY</u></b>, *FIRST, *MODULE<br>Other values: <i>Qualifier list</i></td>
<td valign="top" rowspan="2">Optional</td>
</tr>
<tr>
<td valign="top">Qualifier 1: Replacement library</td>
<td valign="top"><i>Name</i></td>
</tr><tr>
<td valign="top" rowspan="3"><a href="#UPDPGM.BNDSRVPGM"><b>BNDSRVPGM</b></a></td>
<td valign="top">Bind service program</td>
<td valign="top">Single values: <b><u>*NONE</u></b><br>Other values (up to 300 repetitions): <i>Qualified object name</i></td>
<td valign="top" rowspan="3">Optional</td>
</tr>
<tr>
<td valign="top">Qualifier 1: Bind service program</td>
<td valign="top"><i>Generic name, name</i>, *ALL</td>
</tr><tr>
<td valign="top">Qualifier 2: Library</td>
<td valign="top"><i>Name</i>, <b><u>*LIBL</u></b></td>
</tr><tr>
<td valign="top" rowspan="2"><a href="#UPDPGM.SRVPGMLIB"><b>SRVPGMLIB</b></a></td>
<td valign="top">Bound *SRVPGM library name</td>
<td valign="top">Single values: <b><u>*SAME</u></b>, *LIBL<br>Other values: <i>Qualifier list</i></td>
<td valign="top" rowspan="2">Optional</td>
</tr>
<tr>
<td valign="top">Qualifier 1: Bound *SRVPGM library name</td>
<td valign="top"><i>Name</i></td>
</tr><tr>
<td valign="top" rowspan="3"><a href="#UPDPGM.BNDDIR"><b>BNDDIR</b></a></td>
<td valign="top">Binding directory</td>
<td valign="top">Single values: <b><u>*NONE</u></b><br>Other values (up to 300 repetitions): <i>Qualified object name</i></td>
<td valign="top" rowspan="3">Optional</td>
</tr>
<tr>
<td valign="top">Qualifier 1: Binding directory</td>
<td valign="top"><i>Name</i></td>
</tr><tr>
<td valign="top">Qualifier 2: Library</td>
<td valign="top"><i>Name</i>, <b><u>*LIBL</u></b>, *CURLIB, *USRLIBL</td>
</tr><tr>
<td valign="top"><a href="#UPDPGM.ACTGRP"><b>ACTGRP</b></a></td>
<td valign="top">Activation group</td>
<td valign="top"><i>Name</i>, <b><u>*SAME</u></b></td>
<td valign="top">Optional</td>
</tr>
<tr>
<td valign="top"><a href="#UPDPGM.OPTION"><b>OPTION</b></a></td>
<td valign="top">Creation options</td>
<td valign="top">Values (up to 6 repetitions): *GEN, *NOGEN, *DUPPROC, *NODUPPROC, *DUPVAR, *NODUPVAR, *WARN, *NOWARN, *TRIM, *NOTRIM, *RSLVREF, *UNRSLVREF</td>
<td valign="top">Optional</td>
</tr>
<tr>
<td valign="top"><a href="#UPDPGM.DETAIL"><b>DETAIL</b></a></td>
<td valign="top">Listing detail</td>
<td valign="top"><b><u>*NONE</u></b>, *BASIC, *EXTENDED, *FULL</td>
<td valign="top">Optional</td>
</tr>
</table>
<table width="100%">
<tr><td align="right"><a href="#UPDPGM.Top_Of_Page">Top</a></td></tr>
</table>
</div>
<div> <a name="UPDPGM.PGM"></a>
<h3>Program (PGM)</h3>
<p>Specifies the bound program that is to be updated.
</p>
<p>This is a required parameter.
</p>
<p><b>Qualifier 1: Program</b>
</p>
<dl>
<dt><b><i>name</i></b></dt>
<dd>Specify the name of the bound program that is to be updated.
</dd>
</dl>
<p><b>Qualifier 2: Library</b>
</p>
<dl>
<dt><b><u>*USRLIBL</u></b></dt>
<dd>Only the libraries in the user portion of the job's library list are searched.
</dd>
<dt><b>*CURLIB</b></dt>
<dd>The current library for the job is searched. If no library is specified as the current library for the job, the QGPL library is used.
</dd>
<dt><b><i>name</i></b></dt>
<dd>Specify the name of the library where the bound program is located.
</dd>
</dl>
</div>
<table width="100%">
<tr><td align="right"><a href="#UPDPGM.Top_Of_Page">Top</a></td></tr>
</table>
<div> <a name="UPDPGM.MODULE"></a>
<h3>Module (MODULE)</h3>
<p>Specifies the names of the existing *MODULE objects that are to replace the modules of the same name in the bound program. If two or more modules of the bound program have the same name, the <b>Replacement library (RPLLIB)</b> parameter indicates which is to be replaced.
</p>
<p>If the library of the module being replaced is different from the library of the replacing module, the module's library after the update will remain the library the module was in when the program was first created. If the RPLLIB parameter is required to determine which module to replace, the value to be entered in the RPLLIB parameter for this module will not change due to the update. Up to 300 names can be specified.
</p>
<p>This is a required parameter.
</p>
<p><b>Single values</b>
</p>
<dl>
<dt><b>*NONE</b></dt>
<dd>No modules are specified.
</dd>
</dl>
<p><b>Qualifier 1: Module</b>
</p>
<dl>
<dt><b>*ALL</b></dt>
<dd>All modules of the same name, to which the user has authority, replace the modules of the bound program.
</dd>
<dt><b><i>generic-name</i></b></dt>
<dd>Specify the generic name of the modules that replace the modules of the bound program. A generic name is a character string of one or more characters followed by an asterisk (*); for example, ABC*. All modules with names that begin with the generic name, and for which the user has authority, replace the modules of the bound program.
</dd>
<dt><b><i>name</i></b></dt>
<dd>Specify the name of the module that replaces a module of the bound program.
</dd>
</dl>
<p><b>Qualifier 2: Library</b>
</p>
<dl>
<dt><b><u>*LIBL</u></b></dt>
<dd>All libraries in the library list for the current thread are searched until the first match is found.
</dd>
</dl>
<dl>
<dt><b>*CURLIB</b></dt>
<dd>The current library for the job is searched. If no library is specified as the current library for the job, the QGPL library is used.
</dd>
<dt><b>*USRLIBL</b></dt>
<dd>Only the libraries in the user portion of the job's library list are searched.
</dd>
<dt><b><i>name</i></b></dt>
<dd>Specify the name of the library to be searched.
</dd>
</dl>
<p>Specify the name of the module that replaces a module of the bound program.
</p>
</div>
<table width="100%">
<tr><td align="right"><a href="#UPDPGM.Top_Of_Page">Top</a></td></tr>
</table>
<div> <a name="UPDPGM.RPLLIB"></a>
<h3>Replacement library (RPLLIB)</h3>
<p>Specifies the method used to select the module to be replaced when two or more modules of the bound program have the name specified on the MODULE parameter.
</p>
<dl>
<dt><b><u>*ONLY</u></b></dt>
<dd>The bound program contains only one module of the specified name and it is replaced. If two or more modules of the bound program have the specified name, an exception is signaled and the bound program is not updated.
</dd>
<dt><b>*FIRST</b></dt>
<dd>The first module of the specified name in the module list of the bound program is replaced.
</dd>
<dt><b>*MODULE</b></dt>
<dd>The module that originated from the same library as the specified module is replaced. If no module of the specified name originally came from the same library as the replacing module, no module is replaced and an exception is signaled.
</dd>
<dt><b><i>name</i></b></dt>
<dd>Specify the name of the originating library of the module to be selected for replacement. If no module of the specified name originated in the specified library, no module is replaced.
</dd>
</dl>
</div>
<table width="100%">
<tr><td align="right"><a href="#UPDPGM.Top_Of_Page">Top</a></td></tr>
</table>
<div> <a name="UPDPGM.BNDSRVPGM"></a>
<h3>Bind service program (BNDSRVPGM)</h3>
<p>Specifies the service program to examine for exports if import requests to resolve external symbols cannot be met by the modules and service programs of the updated bound program. If the specified service program can resolve external symbols, it is added to the service programs that are bound to the bound program. Up to 300 names can be specified.
</p>
<p><b>Single values</b>
</p>
<dl>
<dt><b><u>*NONE</u></b></dt>
<dd>No service programs are examined during symbol resolution.
</dd>
</dl>
<p><b>Qualifier 1: Bind service program</b>
</p>
<dl>
<dt><b>*ALL</b></dt>
<dd>All service programs are examined during symbol resolution.
</dd>
<dt><b><i>generic-name</i></b></dt>
<dd>Specify the generic name of the service programs to examine during symbol resolution. A generic name is a character string of one or more characters followed by an asterisk (*); for example, ABC*. All service programs with names that begin with the generic name, and for which the user has authority, are examined during symbol resolution.
</dd>
<dt><b><i>name</i></b></dt>
<dd>Specify the name of the service program to examine during symbol resolution.
</dd>
</dl>
<p><b>Qualifier 2: Library</b>
</p>
<dl>
<dt><b><u>*LIBL</u></b></dt>
<dd>All libraries in the library list for the current thread are searched until the first match is found.
</dd>
</dl>
<dl>
<dt><b><i>name</i></b></dt>
<dd>Specify the name of the library to be searched. QTEMP is not a valid library name for this parameter.
</dd>
</dl>
</div>
<table width="100%">
<tr><td align="right"><a href="#UPDPGM.Top_Of_Page">Top</a></td></tr>
</table>
<div> <a name="UPDPGM.SRVPGMLIB"></a>
<h3>Bound *SRVPGM library name (SRVPGMLIB)</h3>
<p>Specifies the library name used to resolve to currently bound service programs. A value other than *SAME for this parameter can be specified if the program attribute ALWLIBUPD is *YES.
</p>
<dl>
<dt><b><u>*SAME</u></b></dt>
<dd>Use the library name where the service program (*SRVPGM) is currently bound from.
</dd>
<dt><b>*LIBL</b></dt>
<dd>All libraries in the job's library list are searched until the first match is found for each bound *SRVPGM. The first occurrence of a *SRVPGM is used to resolve to currently bound service programs and *LIBL is saved to be used at run time. If no match is found in the job's library list, the *SRVPGM currently bound to the program is used. You must have *USE authority to the *SRVPGM objects in the library specified and *EXECUTE authority to the library itself.
<p>
<b>Note: </b>The service programs that came from the implicit binding directories (system-supplied service programs) are not changed.
</p>
</dd>
<dt><b><i>name</i></b></dt>
<dd>Specify the name of the library to be used first to resolve to all currently bound service programs. If a bound *SRVPGM does exist in the library specified on SRVPGMLIB parameter, that *SRVPGM from that library is used instead of the currently bound *SRVPGM and the library name specified on the SRVPGMLIB parameter is saved to be used at run time. If a *SRVPGM does not exist in the library specified on the SRVPGMLIB parameter, the *SRVPGM currently bound to the program is used. You must have *USE authority to the *SRVPGM objects in the library specified and *EXECUTE authority to the library itself.
</dd>
</dl>
</div>
<table width="100%">
<tr><td align="right"><a href="#UPDPGM.Top_Of_Page">Top</a></td></tr>
</table>
<div> <a name="UPDPGM.BNDDIR"></a>
<h3>Binding directory (BNDDIR)</h3>
<p>Specifies the binding directory to examine for exports if import requests to resolve external symbols cannot be met by (1) the modules and service programs of the updated bound program or by (2) the service program specified on the BNDSRVPGM parameter. If a module or service program listed in the specified binding directory can resolve external symbols, it is added to the modules or service programs that are bound to the bound program. Up to 300 names can be specified.
</p>
<p><b>Single values</b>
</p>
<dl>
<dt><b><u>*NONE</u></b></dt>
<dd>No binding directories are specified.
</dd>
</dl>
<p><b>Qualifier 1: Binding directory</b>
</p>
<dl>
<dt><b><i>name</i></b></dt>
<dd>Specify the name of the binding directory to be used during symbol resolution.
</dd>
</dl>
<p><b>Qualifier 2: Library</b>
</p>
<dl>
<dt><b><u>*LIBL</u></b></dt>
<dd>All libraries in the library list for the current thread are searched until the first match is found.
</dd>
</dl>
<dl>
<dt><b>*CURLIB</b></dt>
<dd>The current library for the job is searched. If no library is specified as the current library for the job, the QGPL library is used.
</dd>
<dt><b>*USRLIBL</b></dt>
<dd>Only the libraries in the user portion of the job's library list are searched.
</dd>
<dt><b><i>name</i></b></dt>
<dd>Specify the name of the library to be searched.
</dd>
</dl>
</div>
<table width="100%">
<tr><td align="right"><a href="#UPDPGM.Top_Of_Page">Top</a></td></tr>
</table>
<div> <a name="UPDPGM.ACTGRP"></a>
<h3>Activation group (ACTGRP)</h3>
<p>Specifies the activation group to be used for the updated program.
</p>
<dl>
<dt><b><u>*SAME</u></b></dt>
<dd>The activation group is not changed. Specify this value if the program was given *CALLER or *NEW activation group at the time it was created.
</dd>
<dt><b><i>name</i></b></dt>
<dd>Specify the name of the activation group that is associated with this called program. If the program was given a named activation group at the time it was created, the name of that activation group can be changed to another named activation group.
<p>
<b>Note: </b>Changing the activation group name can affect the behavior of the program (or service program). Refer to the ILE Concepts book, SC41-5606 for detailed information on the behavior of named activation groups.
</p>
</dd>
</dl>
</div>
<table width="100%">
<tr><td align="right"><a href="#UPDPGM.Top_Of_Page">Top</a></td></tr>
</table>
<div> <a name="UPDPGM.OPTION"></a>
<h3>Creation options (OPTION)</h3>
<p>Specifies the options to be used when the bound program is updated.
</p>
<p>You can specify up to 6 values for this parameter.
</p>
<p><b>Creating Program Objects</b>
</p>
<dl>
<dt><b><u>*GEN</u></b></dt>
<dd>An updated program object is created.
</dd>
<dt><b>*NOGEN</b></dt>
<dd>An updated program object is not created.
</dd>
</dl>
<p><b>Duplicate Procedure Names</b>
</p>
<dl>
<dt><b><u>*DUPPROC</u></b></dt>
<dd>During symbol resolution, the procedures that are exported from the modules and service programs need not be unique. The first procedure of the specified module and service programs that matches the import request is exported.
</dd>
<dt><b>*NODUPPROC</b></dt>
<dd>During symbol resolution, each procedure that is exported from the modules and service programs must be unique.
</dd>
</dl>
<p><b>Duplicate Variable Names</b>
</p>
<dl>
<dt><b><u>*DUPVAR</u></b></dt>
<dd>During symbol resolution, the variables that are exported from the modules and service programs need not be unique. The first variable of the specified modules and service programs that matches the import request is exported.
</dd>
<dt><b>*NODUPVAR</b></dt>
<dd>During symbol resolution, each variable that is exported from the modules and service programs must be unique.
</dd>
</dl>
<p><b>Issuing Diagnostic Messages</b>
</p>
<dl>
<dt><b><u>*WARN</u></b></dt>
<dd>The appropriate diagnostic messages are signaled. Also, if you specify duplicate procedures or variables (*DUPPROC or *DUPVAR) and duplicates are found, a diagnostic message is issued indicating what duplicates were found.
</dd>
<dt><b>*NOWARN</b></dt>
<dd>No information or diagnostic messages are issued.
</dd>
</dl>
<p><b>Trimming Marooned Module</b>
</p>
<p>A <b>marooned module</b> is a module of the bound program being updated. This module was originally bound into the bound program from a binding directory to resolve one or more imports. Imports are not resolved for this program update.
</p>
<dl>
<dt><b><u>*NOTRIM</u></b></dt>
<dd>Marooned modules are not removed from the bound program.
<p>
<b>Note: </b>Programs may grow significantly over time when *NOTRIM is specified.
</p>
</dd>
<dt><b>*TRIM</b></dt>
<dd>Marooned modules are removed from the bound program.
<p>
<b>Note: </b>If marooned modules are removed from the bound program for this program update, the exports that the modules contain are not available for other program updates.
</p>
</dd>
</dl>
<p><b>Resolving References (Imports)</b>
</p>
<dl>
<dt><b><u>*RSLVREF</u></b></dt>
<dd>All imports must be resolved to exports for the bound program to be updated.
</dd>
<dt><b>*UNRSLVREF</b></dt>
<dd>All imports do not need to resolve to exports for the bound program to be updated.
<p>
<b>Note: </b>If this command contains an import that does not resolve, an exception will be generated when the command is run.
</p>
</dd>
</dl>
</div>
<table width="100%">
<tr><td align="right"><a href="#UPDPGM.Top_Of_Page">Top</a></td></tr>
</table>
<div> <a name="UPDPGM.DETAIL"></a>
<h3>Listing detail (DETAIL)</h3>
<p>Specifies the level of detail of the binder listing to be printed. The printer file *LIBL/QSYSPRT is used to create the listing.
</p>
<dl>
<dt><b><u>*NONE</u></b></dt>
<dd>No binder listing is printed.
</dd>
<dt><b>*BASIC</b></dt>
<dd>The brief summary table, the options passed to this command, and some processing statistics are printed.
</dd>
<dt><b>*EXTENDED</b></dt>
<dd>The extended summary table and the binding information listing are printed, in addition to the information provided in the *BASIC listing (the brief summary table, the options passed to this command, and some processing statistics).
</dd>
<dt><b>*FULL</b></dt>
<dd>The cross-reference listing is printed, in addition to the information provided in the *EXTENDED listing (the extended summary table, the binding information listing, the brief summary table, the options passed to this command, and some processing statistics).
</dd>
</dl>
</div>
<table width="100%">
<tr><td align="right"><a href="#UPDPGM.Top_Of_Page">Top</a></td></tr>
</table>
<hr size="2" width="100%">
<div><h3><a name="UPDPGM.COMMAND.EXAMPLES">Examples</a> </h3>
<p>
<pre>
UPDPGM PGM(STAR) MODULE(SKY/NOVA) RPLLIB(*FIRST)
</pre>
</p>
<p>This command replaces the first module named NOVA existing in the program object STAR with the module NOVA in the library SKY.
</p>
</div>
<table width="100%">
<tr><td align="right"><a href="#UPDPGM.Top_Of_Page">Top</a></td></tr>
</table>
<hr size="2" width="100%">
<div><h3><a name="UPDPGM.ERROR.MESSAGES">Error messages</a> </h3>
<p><b><u>*ESCAPE Messages</u></b>
</p>
<dl>
<dt><b>CPF223D</b></dt>
<dd>Not authorized to update &amp;1 in &amp;2 type *&amp;3.
</dd>
<dt><b>CPF223E</b></dt>
<dd>Authority check for use adopted authority attribute failed.
</dd>
<dt><b>CPF5CA7</b></dt>
<dd>SRVPGMLIB must be *SAME when ALWLIBUPD is *NO.
</dd>
<dt><b>CPF5CE0</b></dt>
<dd>Program &amp;1 not updated.
</dd>
<dt><b>CPF5CE2</b></dt>
<dd>Unexpected error occurred during program or service program update.
</dd>
<dt><b>CPF5D1B</b></dt>
<dd>Update of program &amp;1 in library &amp;2 not allowed.
</dd>
</dl>
</div>
<table width="100%">
<tr><td align="right"><a href="#UPDPGM.Top_Of_Page">Top</a></td></tr>
</table>
</body>
</html>