918 lines
26 KiB
HTML
918 lines
26 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>End Journal (QjoEndJournal) 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. -->
|
||
|
<!-- QJOEJOBJ SCR A converted by B2H R4.1 (346) (CMS) by V2CDIJAB at -->
|
||
|
<!-- RCHVMW2 on 6 Nov 2000 at 09:47:50 -->
|
||
|
<!-- Change history -->
|
||
|
<!-- 030531 v5r3 mel fixed problem with change flags -->
|
||
|
<!--File Edited by Kersten Oct 2001 -->
|
||
|
<!--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>End Journal (QjoEndJournal) API</h2>
|
||
|
|
||
|
<div class="box" style="width: 65%;">
|
||
|
<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="50%">Object entry</td>
|
||
|
<td align="left" valign="top" width="20%">Input</td>
|
||
|
<td align="left" valign="top" width="20%">Char(*)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">2</td>
|
||
|
<td align="left" valign="top">File ID entry</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Char(*)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
Omissible Parameter Group:<br>
|
||
|
<!-- iddvc RMBR -->
|
||
|
<br>
|
||
|
<table width="100%">
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top" width="10%">3</td>
|
||
|
<td align="left" valign="top" width="50%">Journal</td>
|
||
|
<td align="left" valign="top" width="20%">Input</td>
|
||
|
<td align="left" valign="top" width="20%">Char(*)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">4</td>
|
||
|
<td align="left" valign="top">End journal options</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Char(*)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">5</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>
|
||
|
Service Program Name: QJOURNAL<br>
|
||
|
<!-- iddvc RMBR -->
|
||
|
<br>
|
||
|
Default Public Authority: *USE<br>
|
||
|
<!-- iddvc RMBR -->
|
||
|
<br>
|
||
|
Threadsafe: Yes<br>
|
||
|
<!-- iddvc RMBR -->
|
||
|
<br>
|
||
|
</div>
|
||
|
|
||
|
<p>The End Journal (QjoEndJournal) API is used to end journaling changes (made
|
||
|
to an object or list of objects) to a specific journal. All objects of object
|
||
|
type *DIR, *STMF, *SYMLNK, *DTAARA or *DTAQ that currently are being journaled
|
||
|
to a specific journal also may have journaling stopped. For objects of type
|
||
|
*STMF, *DIR or *SYMLNK, only objects in the Root ('/'), QOpensys, and
|
||
|
user-defined file systems are supported.</p>
|
||
|
|
||
|
<p><strong>Note:</strong> For other ways to end journaling, see the following
|
||
|
commands in the <a href="../rbam6/rbam6clmain.htm">Control Language
|
||
|
(CL)</a> information:</p>
|
||
|
|
||
|
<ul>
|
||
|
<li>Integrated File System objects - <a href="../cl/endjrn.htm">End Journal
|
||
|
(ENDJRN)</a></li>
|
||
|
|
||
|
<li>Access Paths - <a href="../cl/endjrnap.htm">End Journal Access Path
|
||
|
(ENDJRNAP)</a></li>
|
||
|
|
||
|
<li>Data Areas and Data Queues -
|
||
|
<a href="../cl/endjrnobj.htm">End Journal Object (ENDJRNOBJ)</a></li>
|
||
|
|
||
|
<li>Physical Files - <a href="../cl/endjrnpf.htm">End Journal Physical File
|
||
|
(ENDJRNPF)</a></li>
|
||
|
</ul>
|
||
|
|
||
|
<p><strong>Restrictions:</strong></p>
|
||
|
|
||
|
<ol>
|
||
|
<li>Objects specified on the API cannot be in use for any reason at the time
|
||
|
the API is running.</li>
|
||
|
|
||
|
<li>If a journal name and a list of object names are specified, all objects
|
||
|
currently must be journaled to the indicated journal.</li>
|
||
|
|
||
|
<li>At least one of parameter object entry or file ID entry must not be
|
||
|
NULL.</li>
|
||
|
|
||
|
<li>The specified journal must be a local journal.</li>
|
||
|
</ol>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3>Authorities and Locks</h3>
|
||
|
|
||
|
<dl>
|
||
|
<dt><em>Journal Authority</em></dt>
|
||
|
|
||
|
<dd>*OBJOPR, *OBJMGT<br>
|
||
|
<br>
|
||
|
</dd>
|
||
|
|
||
|
<dt><em>Non-IFS Object Authority (if specified)</em></dt>
|
||
|
|
||
|
<dd>*OBJOPR, *READ, *OBJMGT<br>
|
||
|
<br>
|
||
|
</dd>
|
||
|
|
||
|
<dt><em>IFS Object Authority (if specified)</em></dt>
|
||
|
|
||
|
<dd>*R, *OBJMGT (also *X if object is a directory and *ALL is specified for the
|
||
|
directory subtree key)<br>
|
||
|
<br>
|
||
|
</dd>
|
||
|
|
||
|
<dt><em>Directory Authority (for each directory preceding the last component in
|
||
|
the path name)</em></dt>
|
||
|
|
||
|
<dd>*X<br>
|
||
|
<br>
|
||
|
</dd>
|
||
|
|
||
|
<dt><em>Journal Lock</em></dt>
|
||
|
|
||
|
<dd>*EXCLRD<br>
|
||
|
<br>
|
||
|
</dd>
|
||
|
|
||
|
<dt><em>Non-IFS Object Lock (if specified)</em></dt>
|
||
|
|
||
|
<dd>*EXCL<br>
|
||
|
<br>
|
||
|
</dd>
|
||
|
|
||
|
<dt><em>IFS Object Lock (if specified)</em></dt>
|
||
|
|
||
|
<dd>O_RDONLY | O_SHARE_NONE</dd>
|
||
|
</dl>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3>Required Parameters</h3>
|
||
|
|
||
|
<dl>
|
||
|
<dt><strong>Object entry</strong></dt>
|
||
|
|
||
|
<dd>INPUT; CHAR(*)
|
||
|
|
||
|
<p>The path name of the object for which changes are no longer to be journaled.
|
||
|
If the object path contains *ALL, all objects supported by this API that
|
||
|
currently are being journaled to the indicated journal are to stop having their
|
||
|
changes journaled. If the object path is *ALL, then the file ID entry must be
|
||
|
NULL.</p>
|
||
|
|
||
|
<p>If this parameter is NULL, the file ID entry parameter must not be NULL.</p>
|
||
|
|
||
|
<p>The object entry must be in the following format.</p>
|
||
|
|
||
|
<p><strong>Object Entry Format</strong></p>
|
||
|
|
||
|
<table border width="60%">
|
||
|
<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%">Number in array</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">4</td>
|
||
|
<td align="center" valign="top">4</td>
|
||
|
<td align="left" valign="top">CHAR(12)</td>
|
||
|
<td align="left" valign="top">Reserved</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" colspan="4"><strong>Note:</strong> These fields
|
||
|
repeat for each object path name.</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">Length of this path name entry</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">20</td>
|
||
|
<td align="center" valign="top">14</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Include or omit</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">30</td>
|
||
|
<td align="center" valign="top">1E</td>
|
||
|
<td align="left" valign="top">CHAR(2)</td>
|
||
|
<td align="left" valign="top">Reserved</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">32</td>
|
||
|
<td align="center" valign="top">20</td>
|
||
|
<td align="left" valign="top">CHAR(*)</td>
|
||
|
<td align="left" valign="top">Object path name</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<p><strong>Number in array.</strong> The number of objects in the object entry
|
||
|
list. The possible values are 1 through 300.</p>
|
||
|
|
||
|
<p><strong>Length of this path name entry.</strong> The length of the current
|
||
|
path name entry that can be used as the displacement from the start of this
|
||
|
path name entry to the next path name entry. The length must be a minimum of 32
|
||
|
bytes and must be a multiple of 16.</p>
|
||
|
|
||
|
<p><strong>Include or omit.</strong> Whether the path name is included or
|
||
|
omitted from the end journal operation. If the object path is *ALL, then the
|
||
|
include or omit paramter is ignored.</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="15 85" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*INCLUDE</em></td>
|
||
|
<td align="left" valign="top">Objects that match the object name path are to
|
||
|
end journaling, unless overridden by an *OMIT specification.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*OMIT</em></td>
|
||
|
<td align="left" valign="top">Objects that match the object name path are not
|
||
|
to end journaling. This overrides any *INCLUDE specification and is intended to
|
||
|
be used to omit a subset of a previously selected path.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<p><strong>Object path name.</strong> The object path name for which changes
|
||
|
are no longer to be journaled. All relative path names are relative to the
|
||
|
current directory at the time of the call to QjoEndJournal.</p>
|
||
|
|
||
|
<p>In the last component of the path name, an asterisk (*) or a question mark
|
||
|
(?) can be used to search for patterns of names. The * tells the system to
|
||
|
search for names that have any number of characters in the position of the *
|
||
|
character. The ? tells the system to search for names that have a single
|
||
|
character in the position of the ? character. Symbolic links within the path
|
||
|
name will not be followed. If the path name begins with the tilde (~)
|
||
|
character, then the path is assumed to be relative to the appropriate home
|
||
|
directory.</p>
|
||
|
|
||
|
<p>If a pointer is specified in the object path name, it must be 16-byte
|
||
|
aligned. If not, unpredictable results may occur.</p>
|
||
|
|
||
|
<p>For more information on the path name format, see <a href="../apiref/pns.htm">Path
|
||
|
name format</a>.</p>
|
||
|
|
||
|
<p><strong>Reserved.</strong> A reserved field that must be set to hexadecimal
|
||
|
zeros.</p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>File ID entry</strong></dt>
|
||
|
|
||
|
<dd>INPUT; CHAR(*)
|
||
|
|
||
|
<p>File identifiers (FID) for which changes are no longer to be journaled.</p>
|
||
|
|
||
|
<p>If the pointer to this parameter is NULL, the object entry parameter must
|
||
|
not be NULL.</p>
|
||
|
|
||
|
<p>The structure of this parameter follows.</p>
|
||
|
|
||
|
<p><strong>Object Identifier Format</strong></p>
|
||
|
|
||
|
<table border width="60%">
|
||
|
<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%">Number in array</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">4</td>
|
||
|
<td align="center" valign="top">4</td>
|
||
|
<td align="left" valign="top">CHAR(12)</td>
|
||
|
<td align="left" valign="top">Reserved</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" colspan="4"><strong>Note:</strong> These fields
|
||
|
repeat for each file identifier.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">4</td>
|
||
|
<td align="center" valign="top">4</td>
|
||
|
<td align="left" valign="top">CHAR(16)</td>
|
||
|
<td align="left" valign="top">File Identifier</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<p><strong>Number in array.</strong> The number of objects in the file
|
||
|
identifier list. The possible values are 1 through 300.</p>
|
||
|
|
||
|
<p><strong>File identifier.</strong> The unique 16-byte file identifier (FID)
|
||
|
associated with integrated file system-related objects.</p>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3>Omissible Parameters</h3>
|
||
|
|
||
|
<dl>
|
||
|
<dt><strong>Journal</strong></dt>
|
||
|
|
||
|
<dd>INPUT; CHAR(*)
|
||
|
|
||
|
<p>The path name of the journal to which changes currently are being journaled.
|
||
|
All relative path names are relative to the current directory at the time of
|
||
|
the call to QjoEndJournal.</p>
|
||
|
|
||
|
<p>If the journal path name entry contains *OBJ, the path name of the journal
|
||
|
is determined by the system from the specified object path name or object file
|
||
|
identifier.</p>
|
||
|
|
||
|
<p>If the journal parameter is NULL, *OBJ is assumed.</p>
|
||
|
|
||
|
<p>If a pointer is specified in the path name of the journal, it must be
|
||
|
16-byte aligned. If not, unpredictable results may occur.</p>
|
||
|
|
||
|
<p>For more information on the journal path name format, see <a href=
|
||
|
"../apiref/pns.htm">Path name format</a>.</p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong>End journal options</strong></dt>
|
||
|
|
||
|
<dd>INPUT; CHAR(*)
|
||
|
|
||
|
<p>The end journal options, if any, to use for the selection of objects to end
|
||
|
journaling changes. If this parameter is not specified, objects will have
|
||
|
journaling ended using the default actions described in the field descriptions
|
||
|
of the valid keys. See <a href="#HDREJRNEKY">Keys</a> for the list of valid
|
||
|
keys.</p>
|
||
|
|
||
|
<p>This parameter must be specified, but may be a NULL pointer.</p>
|
||
|
|
||
|
<p>You may specify a key more than once. If duplicate keys are specified, the
|
||
|
last specified value for that key is used.</p>
|
||
|
|
||
|
<p>Each option must be 16-byte aligned. If not, unpredictable results may
|
||
|
occur.</p>
|
||
|
|
||
|
<p>The information must be in the following format.</p>
|
||
|
|
||
|
<p><strong>Journal Options Format</strong></p>
|
||
|
|
||
|
<table border width="60%">
|
||
|
<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%">Number of option records</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">4</td>
|
||
|
<td align="center" valign="top">4</td>
|
||
|
<td align="left" valign="top">CHAR(12)</td>
|
||
|
<td align="left" valign="top">Reserved</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" colspan="4"><strong>Note:</strong> These fields
|
||
|
repeat for each option 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">Length of option record</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">Key</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">24</td>
|
||
|
<td align="center" valign="top">18</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Length of data</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">28</td>
|
||
|
<td align="center" valign="top">1C</td>
|
||
|
<td align="left" valign="top">CHAR(4)</td>
|
||
|
<td align="left" valign="top">Reserved</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">32</td>
|
||
|
<td align="center" valign="top">20</td>
|
||
|
<td align="left" valign="top">CHAR(*)</td>
|
||
|
<td align="left" valign="top">Data</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<p><strong>Number of option records.</strong> The total number of all option
|
||
|
records. If this field is zero, an error will be returned.</p>
|
||
|
|
||
|
<p><strong>Length of option record.</strong></p>
|
||
|
|
||
|
<p>The length of the option record. This length is used to calculate the
|
||
|
starting position of the next option record. If you specify a length of option
|
||
|
record that is not equal to the key field's required option record length, an
|
||
|
error message is returned.</p>
|
||
|
|
||
|
<p><strong>Key.</strong> Specific action for end journal. See <a href=
|
||
|
"#HDREJRNEKY">Keys</a> for the list of valid keys.</p>
|
||
|
|
||
|
<p><strong>Length of data.</strong></p>
|
||
|
|
||
|
<p>The length of the option record. This length is used to calculate the ending
|
||
|
position of the data for this option.</p>
|
||
|
|
||
|
<p>If you specify a length of data that is not equal to the key field's
|
||
|
required data length, an error message is returned.</p>
|
||
|
|
||
|
<p><strong>Reserved.</strong> A reserved field that must be set to hexadecimal
|
||
|
zeros.</p>
|
||
|
|
||
|
<p><strong>Data.</strong> The data that is used to determine the journal
|
||
|
option. All values are validity checked.</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>. If this
|
||
|
parameter is omitted, diagnostic and escape messages are issued to the
|
||
|
application.</p>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
|
||
|
<h3><a name="HDREJRNEKY">Keys</a></h3>
|
||
|
|
||
|
<p>The following table lists the valid keys for the key field area of the
|
||
|
journal options record. For detailed descriptions of the keys, see the <a href=
|
||
|
"#HDREJRNE2">Field Descriptions</a>.</p>
|
||
|
|
||
|
<p>Some messages for this API refer to parameters and values for the <a href=
|
||
|
"../cl/endjrn.htm">End Journal</a> (ENDJRN) command. The following table also
|
||
|
can be used to locate the key names that correspond to the ENDJRN command
|
||
|
parameters.</p>
|
||
|
|
||
|
<table border width="80%">
|
||
|
<tr>
|
||
|
<th align="center" valign="bottom">Key</th>
|
||
|
<th align="left" valign="bottom">Input Type</th>
|
||
|
<th align="left" valign="bottom">Field</th>
|
||
|
<th align="center" valign="bottom">Length of<br>
|
||
|
Option<br>
|
||
|
Record</th>
|
||
|
<th align="center" valign="bottom">Length<br>
|
||
|
of Data</th>
|
||
|
<th align="left" valign="bottom">ENDJRN Command Parameter</th>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top" width="10%">1</td>
|
||
|
<td align="left" valign="top" width="20%">CHAR(5)</td>
|
||
|
<td align="left" valign="top" width="20%">Directory Subtree</td>
|
||
|
<td align="center" valign="top" width="15%">32</td>
|
||
|
<td align="center" valign="top" width="15%">5</td>
|
||
|
<td align="left" valign="top" width="20%">SUBTREE</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">2</td>
|
||
|
<td align="left" valign="top">CHAR(48)</td>
|
||
|
<td align="left" valign="top">Name Pattern</td>
|
||
|
<td align="center" valign="top">64</td>
|
||
|
<td align="center" valign="top">48</td>
|
||
|
<td align="left" valign="top">PATTERN</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3><a name="HDREJRNE2">Field Descriptions</a></h3>
|
||
|
|
||
|
<p><strong>Directory subtree.</strong> Whether the directory subtrees are
|
||
|
included in the end journal operation. If this parameter is not specified, the
|
||
|
default is *NONE.</p>
|
||
|
|
||
|
<p>This parameter is ignored if the object entry parameter is not specified or
|
||
|
if the object is not a directory.</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="15 85" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*NONE</em></td>
|
||
|
<td align="left" valign="top">Only the objects that match the selection
|
||
|
criteria are processed. The objects within selected directories are not
|
||
|
processed implicitly.<br>
|
||
|
<br>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*ALL</em></td>
|
||
|
<td align="left" valign="top">All objects that meet the selection criteria are
|
||
|
processed in addition to the entire subtree of each directory that matches the
|
||
|
selection criteria. The subtree includes all subdirectories and the objects
|
||
|
within those subdirectories.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<p><strong>Name pattern.</strong> The patterns to be used to include or omit
|
||
|
objects for processing. The default will be to include all patterns that
|
||
|
match.</p>
|
||
|
|
||
|
<p>Additional information about path name patterns is in the
|
||
|
<a href="../ifs/rzaaxkickoff.htm">Integrated file system</a> information
|
||
|
in the Files and file systems topic.</p>
|
||
|
|
||
|
<p><strong>Note:</strong> This parameter is ignored if the object entry
|
||
|
parameter is not specified.</p>
|
||
|
|
||
|
<p><strong>Name Pattern Format</strong></p>
|
||
|
|
||
|
<table border width="60%">
|
||
|
<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%">Number in array</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">8</td>
|
||
|
<td align="center" valign="top">8</td>
|
||
|
<td align="left" valign="top">CHAR(12)</td>
|
||
|
<td align="left" valign="top">Reserved</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" colspan="4"><strong>Note:</strong> These fields
|
||
|
repeat for each name pattern.</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">Length of this pattern entry</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">20</td>
|
||
|
<td align="center" valign="top">14</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Include or omit</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">30</td>
|
||
|
<td align="center" valign="top">1E</td>
|
||
|
<td align="left" valign="top">CHAR(2)</td>
|
||
|
<td align="left" valign="top">Reserved</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">32</td>
|
||
|
<td align="center" valign="top">20</td>
|
||
|
<td align="left" valign="top">PTR(16)</td>
|
||
|
<td align="left" valign="top">Pointer to pattern path structure</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
<p><strong>Number in array.</strong> The number of patterns in the pattern
|
||
|
list. The possible values are 1 through 20.</p>
|
||
|
|
||
|
<p><strong>Reserved.</strong> A reserved field that must be set to hexadecimal
|
||
|
zeros.</p>
|
||
|
|
||
|
<p><strong>Length of this pattern entry.</strong> The length of this pattern
|
||
|
entry. It is used to calculate the position of the next pattern entry. This
|
||
|
field must be set to 32.</p>
|
||
|
|
||
|
<p><strong>Include or omit.</strong> Whether the name pattern is included or
|
||
|
omitted from the operation.</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="15 85" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="15%"><em>*INCLUDE</em></td>
|
||
|
<td align="left" valign="top" width="85%">Objects that match the object name
|
||
|
pattern are processed, unless overridden by an *OMIT specification.<br>
|
||
|
<br>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*OMIT</em></td>
|
||
|
<td align="left" valign="top">Objects that match the object name pattern are
|
||
|
not processed. This overrides an *INCLUDE specification and is intended to be
|
||
|
used to omit a subset of a previously selected pattern.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<p><strong>Pointer to pattern path structure.</strong> A pointer to a path
|
||
|
structure.</p>
|
||
|
|
||
|
<p>This pointer must be 16-byte aligned. If not, unpredictable results may
|
||
|
occur.</p>
|
||
|
|
||
|
<p>For more information on the pattern path name format, see <a href=
|
||
|
"../apiref/pns.htm">Path name format</a>.</p>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3>Error Messages</h3>
|
||
|
|
||
|
<p>The following messages may be sent from this API:</p>
|
||
|
|
||
|
<table width="100%" cellpadding="5">
|
||
|
<tr>
|
||
|
<th align="left" valign="top">Message ID</th>
|
||
|
<th align="left" valign="top">Error Message Text</th>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td width="15%" valign="top">CPFA0D4 E</td>
|
||
|
<td width="85%" valign="top">File system error occurred.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td valign="top">CPF700B E</td>
|
||
|
<td valign="top">&1 of &2 objects ended journaling.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td valign="top">CPF705A E</td>
|
||
|
<td valign="top">Operation failed due to remote journal.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td valign="top">CPF9801 E</td>
|
||
|
<td valign="top">Object &2 in library &3 not found.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td valign="top">CPF9802 E</td>
|
||
|
<td valign="top">Not authorized to object &2 in &3.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td valign="top">CPF9803 E</td>
|
||
|
<td valign="top">Cannot allocate object &2 in library &3.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td valign="top">CPF9810 E</td>
|
||
|
<td valign="top">Library &1 not found.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td valign="top">CPF9820 E</td>
|
||
|
<td valign="top">Not authorized to use library &1.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td valign="top">CPF9830 E</td>
|
||
|
<td valign="top">Cannot assign library &1.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3>Example</h3>
|
||
|
<p>See <a href="../apiref/aboutapis.htm#codedisclaimer">Code disclaimer information</a>
|
||
|
for information pertaining to code examples.</p>
|
||
|
<p>The following example ends journaling a directory object and all objects
|
||
|
within that directory subtree. Additionally, it ends journaling on another
|
||
|
object identified by its file ID.</p>
|
||
|
|
||
|
<pre>
|
||
|
#include <string.h>
|
||
|
#include <qjournal.h>
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
Qjo_Object_Entry_Array_t objectEntryArray;
|
||
|
Qjo_File_ID_Entry_Array_t fileIDEntryArray;
|
||
|
|
||
|
struct PathNameStruct
|
||
|
{
|
||
|
Qlg_Path_Name_T header;
|
||
|
char p[50];
|
||
|
};
|
||
|
|
||
|
struct PathNameStruct path;
|
||
|
struct PathNameStruct journalPath;
|
||
|
|
||
|
char pathName[] = "/CustomerData";
|
||
|
|
||
|
Qp0lFID_t fileID;
|
||
|
|
||
|
struct JournalOptionsStruct
|
||
|
{
|
||
|
Qjo_Journal_Options_t opts;
|
||
|
char spaceForAdditionalOptions[200];
|
||
|
};
|
||
|
|
||
|
struct JournalOptionsStruct journalOptions;
|
||
|
Qjo_Option_t *optionP;
|
||
|
|
||
|
Qus_EC_t errorCode;
|
||
|
|
||
|
|
||
|
/* Setup the object's path name structure. */
|
||
|
memset(&path name, 0, sizeof(path));
|
||
|
path.header.CCSID = 37;
|
||
|
memcpy(path.header.Country_ID,"US",2);
|
||
|
memcpy(path.header.Language_ID,"ENU",3);
|
||
|
path.header.Path_Type = QLG_CHAR_SINGLE;
|
||
|
path.header.Path_Length = strlen(pathName);
|
||
|
path.header.Path_Name_Delimiter[0] = '/';
|
||
|
memcpy(path.p, pathName, path.header.Path_Length);
|
||
|
|
||
|
/* Setup the object entry array. */
|
||
|
memset(&objectEntryArray,0,sizeof(objectEntryArray));
|
||
|
objectEntryArray.Number_In_Array = 1;
|
||
|
|
||
|
objectEntryArray.Entry[0].Length_Of_Object_Entry =
|
||
|
sizeof(objectEntryArray.Entry[0]);
|
||
|
memcpy(objectEntryArray.Entry[0].Include_Or_Omit,
|
||
|
QJO_INC_ENT_INCLUDE,
|
||
|
sizeof(objectEntryArray.Entry[0].Include_Or_Omit));
|
||
|
objectEntryArray.Entry[0].Path_Name =
|
||
|
(Qlg_Path_Name_T *)&path;
|
||
|
|
||
|
/* Get an object's file ID.
|
||
|
This example is not including the retrieval of the
|
||
|
file ID for an object. The user can see the
|
||
|
Qp0lGetAttr API for information on retrieving an
|
||
|
object's file ID. This example will proceed as if the
|
||
|
fileID variable is set to a valid file ID. */
|
||
|
|
||
|
/* Setup the file ID entry array. */
|
||
|
memset(&fileIDEntryArray,0,sizeof(fileIDEntryArray));
|
||
|
fileIDEntryArray.Number_In_Array = 1;
|
||
|
memcpy(&fileIDEntryArray.Entry,
|
||
|
fileID,
|
||
|
sizeof(fileIDEntryArray.Entry));
|
||
|
|
||
|
/* Set the journal options. */
|
||
|
memset(&journalOptions,0,sizeof(journalOptions));
|
||
|
journalOptions.opts.Number_Of_Options = 1;
|
||
|
|
||
|
/* Set the subtree processing images key. */
|
||
|
optionP = (Qjo_Option_t *)&journalOptions.opts.Option[0];
|
||
|
|
||
|
optionP->Length_Of_Record = QJO_KEY_MINIMUM_RECORD_LENGTH;
|
||
|
optionP->Key = QJO_KEY_SUBTREE;
|
||
|
optionP->Length_Of_Data = QJO_KEY_SUBTREE_LENGTH;
|
||
|
memcpy(optionP->Data,
|
||
|
QJO_SUBTREE_ALL,
|
||
|
QJO_KEY_SUBTREE_LENGTH);
|
||
|
|
||
|
/* Setup the error code structure to cause an exception
|
||
|
to be sent upon error. */
|
||
|
memset(&errorCode,0,sizeof(errorCode));
|
||
|
errorCode.Bytes_Provided = 0;
|
||
|
|
||
|
QjoEndJournal(&objectEntryArray,
|
||
|
&fileIDEntryArray,
|
||
|
(Qlg_Path_Name_T *)NULL,
|
||
|
(Qjo_Journal_Options_t *)&journalOptions,
|
||
|
&errorCode);
|
||
|
}
|
||
|
</pre>
|
||
|
<br>
|
||
|
<hr>
|
||
|
API introduced: V5R1
|
||
|
|
||
|
<hr>
|
||
|
<table cellpadding="2" cellspacing="2" align="center">
|
||
|
<tr align="center">
|
||
|
<td valign="middle" align="center"><a href="#Top_Of_Page">Top</a> | <a href=
|
||
|
"jc1.htm">Journal and Commit APIs</a> | <a href="aplist.htm">APIs by
|
||
|
category</a></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</body>
|
||
|
</html>
|
||
|
|