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

434 lines
11 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>Register Activation Group Exit Procedure (CEE4RAGE) 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. -->
<!-- Change History: -->
<!-- YYMMDD USERID Change description -->
<!-- ILE2A SCRIPT A converted by B2H R4.1 (346) (CMS) by NLJONES at -->
<!-- RCHVMX on 25 Feb 1999 at 10:45:20 -->
<!-- Edited by Kersten Oct 2001 -->
<!-- 030127 AARONA: V5R3 Support 64-bit marks, XPF DCR 99214 -->
<!-- End Header Records -->
<link rel="stylesheet" type="text/css" href="../rzahg/ic.css">
</head>
<body>
<!--Java sync-link-->
<script type="text/javascript" language="Javascript" src="../rzahg/synch.js">
</script>
<a name="Top_Of_Page"></a>
<h2>Register Activation Group Exit Procedure (CEE4RAGE) API</h2>
<div class="box" style="width: 60%;">
<br>
&nbsp;&nbsp;Required Parameter:<br>
<!-- iddvc RMBR -->
<br>
<table width="100%">
<tr>
<td align="center" valign="TOP" width="10%">1</td>
<td align="LEFT" valign="TOP" width="30%">procedure</td>
<td align="LEFT" valign="TOP" width="30%">Input</td>
<td align="LEFT" valign="TOP" width="30%">RAGE_ENTRY</td>
</tr>
</table>
<br>
&nbsp;&nbsp;Omissible Parameter:<br>
<!-- iddvc RMBR -->
<br>
<table width="100%">
<tr>
<td align="center" valign="TOP" width="10%">2</td>
<td align="LEFT" valign="TOP" width="30%">fc</td>
<td align="LEFT" valign="TOP" width="30%">Output</td>
<td align="LEFT" valign="TOP" width="30%">FEEDBACK</td>
</tr>
</table>
<br>
&nbsp;&nbsp;Service Program Name: QLEAWI<br>
<!-- iddvc RMBR -->
<br>
&nbsp;&nbsp;Default Public Authority: *USE<br>
<!-- iddvc RMBR -->
<br>
&nbsp;&nbsp;Threadsafe: Yes<br>
<!-- iddvc RMBR -->
<br>
</div>
<p>The Register Activation Group Exit Procedure (CEE4RAGE) API is used to
register procedures that are called when an activation group ends. Activation
group exit procedures, registered by CEE4RAGE, are called after HLL user exit
procedures, but before any system level activation group resource clean up
takes place. The procedures are called in the reverse order of their
registration. If a procedure fails, subsequent procedures will not be
called.</p>
<p>There is no practical limit to the number of procedures that can be
registered. If the same procedure is registered multiple times, it is called
multiple times.</p>
<p><strong>Note:</strong> This API cannot be called from code running in the
default activation group.</p>
<p><strong>Note:</strong> The CEE4RAGE API and the <a href="CEE4RAGE2.htm">Register Activation Group Exit Procedure</a> (CEE4RAGE2) API perform the same function. The CEE4RAGE API takes as its first parameter a procedure that takes a 32 bit activation group mark as a parameter. The CEE4RAGE2 API takes as its first parameter a procedure that takes a 64 bit activation group mark as a parameter.</p>
<br>
<h3>Authorities and Locks</h3>
<p>None.</p>
<br>
<h3>Required Parameter</h3>
<dl>
<dt><strong>procedure (input)</strong></dt>
<dd>An entry variable or constant for the procedure that is to be called at
activation group termination.</dd>
</dl>
<br>
<h3>Omissible Parameter</h3>
<dl>
<dt><strong>fc (output)</strong></dt>
<dd>A 12-byte feedback code.</dd>
</dl>
<br>
<h3>Feedback Codes and Conditions</h3>
<table cellpadding="3">
<!-- cols="15 85" -->
<tr>
<td align="LEFT" valign="TOP">CEE0000</td>
<td align="LEFT" valign="TOP">The API completed successfully</td>
</tr>
<tr>
<td align="LEFT" valign="TOP">Severity: 00</td>
<td align="LEFT" valign="TOP">&nbsp;</td>
</tr>
<tr>
<td>CEE0257</td>
<td align="LEFT" valign="TOP">The procedure provided for &amp;1 is not
valid</td>
</tr>
<tr>
<td align="LEFT" valign="TOP">Severity: 30</td>
<td align="LEFT" valign="TOP">&nbsp;</td>
</tr>
<tr>
<td align="LEFT" valign="TOP">CEE3101</td>
<td align="LEFT" valign="TOP">&amp;1 cannot be called in the default activation
group</td>
</tr>
<tr>
<td align="LEFT" valign="TOP">Severity: 30</td>
<td align="LEFT" valign="TOP">&nbsp;</td>
</tr>
<tr>
<td>CEE3103</td>
<td align="LEFT" valign="TOP">Cannot allocate storage in &amp;1</td>
</tr>
<tr>
<td align="LEFT" valign="TOP">Severity: 30</td>
<td align="LEFT" valign="TOP">&nbsp;</td>
</tr>
<tr>
<td>CEE3111</td>
<td align="LEFT" valign="TOP">&amp;1 cannot be called at this time</td>
</tr>
<tr>
<td align="LEFT" valign="TOP">Severity: 30</td>
<td align="LEFT" valign="TOP">&nbsp;</td>
</tr>
<tr>
<td>CEE9902</td>
<td align="LEFT" valign="TOP">Unexpected user error occurred in &amp;1</td>
</tr>
<tr>
<td align="LEFT" valign="TOP">Severity: 30</td>
<td align="LEFT" valign="TOP">&nbsp;</td>
</tr>
</table>
<br>
<h3>Usage Notes</h3>
<ul>
<li>
<p>The message CEE0257 occurs if <em>procedure</em> is not a procedure pointer,
or if the procedure identified by <em>procedure</em> is not in either the
current activation group or the default activation group.</p>
</li>
<li>
<p>Once the activation group exit procedures start to run, the CEE4RAGE API
cannot be called.</p>
</li>
</ul>
<br>
<h3>Interface to the Activation Group Exit Procedure</h3>
<p>An activation group exit procedure is called when the activation group is
ended. The procedure is coded as <strong>activation_group_exit</strong> with
the following parameters.</p>
<br>
<div class="box" style="width: 60%;">
<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="30%">ag_mark</td>
<td align="LEFT" valign="TOP" width="30%">Input</td>
<td align="LEFT" valign="TOP" width="30%">UINT4</td>
</tr>
<tr>
<td align="center" valign="TOP">2</td>
<td align="LEFT" valign="TOP">reason</td>
<td align="LEFT" valign="TOP">Input</td>
<td align="LEFT" valign="TOP">UINT4</td>
</tr>
<tr>
<td align="center" valign="TOP">3</td>
<td align="LEFT" valign="TOP">result_code</td>
<td align="LEFT" valign="TOP">I/O</td>
<td align="LEFT" valign="TOP">UINT4</td>
</tr>
<tr>
<td align="center" valign="TOP">4</td>
<td align="LEFT" valign="TOP">user_rc</td>
<td align="LEFT" valign="TOP">I/O</td>
<td align="LEFT" valign="TOP">UINT4</td>
</tr>
</table>
<br>
</div>
<!-- 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>
<dl>
<dt><strong>ag_mark (input)</strong></dt>
<dd>The activation group mark that uniquely identifies the activation group
within the job.</dd>
<dd>&nbsp;</dd>
<dt><strong>reason (input)</strong></dt>
<dd>The reason for the activation group being ended. See <a href=
"#TBLCNLR">Common Reason Codes for Ending Activation Groups and Call Stack
Entries</a> for a description of the reason codes.</dd>
<dd>&nbsp;</dd>
<dt><strong>result_code (I/O)</strong></dt>
<dd>The value passed as input is the action to be taken as specified by a
previous exit procedure. The value passed to the first exit procedure is 0. The
output value can specify an action to be taken. If the result code does not
match any of the following actions, the output value is ignored and the
previous action remains unchanged.</dd>
<dd>
<dl>
<dt><strong>No action</strong></dt>
<dd>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">Do not change the action.</td>
</tr>
</table>
</dd>
<dt><strong>Recover</strong></dt>
<dd>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>10</em></td>
<td align="left" valign="top">Do not perform any pending error requests. This
is used if a previous exit procedure specified a result code of 20 and a
subsequent procedure recovers from the error. The message CEE9901, indicating
an application error, is not sent.</td>
</tr>
</table>
</dd>
<dt><strong>Failure</strong></dt>
<dd>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>20</em></td>
<td align="left" valign="top">Send message CEE9901 to the caller of the control
boundary after the remaining exit procedures are called.</td>
</tr>
<tr>
<td align="left" valign="top"><em>21</em></td>
<td align="left" valign="top">Send message CEE9901 to the caller of the control
boundary. The remaining exit procedures registered by the CEE4RAGE API are not
called. This is used if an unrecoverable error occurs in the exit procedure
requesting this action.</td>
</tr>
</table>
</dd>
</dl>
<p><strong>Note:</strong> The application error message CEE9901 is sent after
the activation group resources of the system are taken down and the activation
group has ended.</p>
</dd>
<dd>&nbsp;</dd>
<dt><strong>user_rc (I/O)</strong></dt>
<dd>The value passed as input is the <em>user_rc</em> returned as output from
the previous exit procedure. The value passed to the first exit procedure is
0.</dd>
</dl>
<br>
<p><strong><a name="TBLCNLR">Common Reason Codes for Ending Activation Groups
and Call Stack Entries.</a></strong></p>
<table border cellpadding="3">
<!-- cols="15 85" -->
<tr>
<th align="LEFT" valign="TOP">Bit</th>
<th align="LEFT" valign="TOP">Description</th>
</tr>
<tr>
<td align="LEFT" valign="TOP">Bits 0</td>
<td align="LEFT" valign="TOP">Reserved</td>
</tr>
<tr>
<td align="LEFT" valign="TOP">Bits 1</td>
<td align="LEFT" valign="TOP">Call stack entry is canceled because an exception
message was sent.</td>
</tr>
<tr>
<td align="LEFT" valign="TOP">Bits 2-15</td>
<td align="LEFT" valign="TOP">Reserved</td>
</tr>
<tr>
<td align="LEFT" valign="TOP">Bit 16</td>
<td align="LEFT" valign="TOP">0 - normal end 1 - abnormal end</td>
</tr>
<tr>
<td align="LEFT" valign="TOP">Bit 17</td>
<td align="LEFT" valign="TOP">Activation Group is ending.</td>
</tr>
<tr>
<td align="LEFT" valign="TOP">Bit 18</td>
<td align="LEFT" valign="TOP">Initiated by the Reclaim Activation Group
(RCLACTGRP) command.</td>
</tr>
<tr>
<td align="LEFT" valign="TOP">Bit 19</td>
<td align="LEFT" valign="TOP">Initiated as a result of the job ending.</td>
</tr>
<tr>
<td align="LEFT" valign="TOP">Bit 20</td>
<td align="LEFT" valign="TOP">Initiated by an exit verb, for example exit() in
C, or the CEETREC API.</td>
</tr>
<tr>
<td align="LEFT" valign="TOP">Bit 21</td>
<td align="LEFT" valign="TOP">Initiated by an unhandled function check.</td>
</tr>
<tr>
<td align="LEFT" valign="TOP">Bit 22</td>
<td align="LEFT" valign="TOP">Call stack entry canceled because of an
out-of-scope jump, for example <em>longjmp()</em> in C.</td>
</tr>
<tr>
<td align="LEFT" valign="TOP">Bits 23-31</td>
<td align="LEFT" valign="TOP">Reserved (0)</td>
</tr>
</table>
<br>
<hr>
API introduced: V2R3
<hr>
<center>
<table cellpadding="2" cellspacing="2">
<tr align="center">
<td valign="middle" align="center"><a href="#Top_Of_Page">Top</a> | <a href=
"ile1a1.htm">ILE CEE APIs</a> | <a href="aplist.htm">APIs by category</a></td>
</tr>
</table>
</center>
</body>
</html>