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

918 lines
26 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">
<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>
&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%">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>
&nbsp;&nbsp;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>
&nbsp;&nbsp;Service Program Name: QJOURNAL<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 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">&amp;1 of &amp;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 &amp;2 in library &amp;3 not found.</td>
</tr>
<tr>
<td valign="top">CPF9802 E</td>
<td valign="top">Not authorized to object &amp;2 in &amp;3.</td>
</tr>
<tr>
<td valign="top">CPF9803 E</td>
<td valign="top">Cannot allocate object &amp;2 in library &amp;3.</td>
</tr>
<tr>
<td valign="top">CPF9810 E</td>
<td valign="top">Library &amp;1 not found.</td>
</tr>
<tr>
<td valign="top">CPF9820 E</td>
<td valign="top">Not authorized to use library &amp;1.</td>
</tr>
<tr>
<td valign="top">CPF9830 E</td>
<td valign="top">Cannot assign library &amp;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 &lt;string.h&gt;
#include &lt;qjournal.h&gt;
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(&amp;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(&amp;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 *)&amp;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(&amp;fileIDEntryArray,0,sizeof(fileIDEntryArray));
fileIDEntryArray.Number_In_Array = 1;
memcpy(&amp;fileIDEntryArray.Entry,
fileID,
sizeof(fileIDEntryArray.Entry));
/* Set the journal options. */
memset(&amp;journalOptions,0,sizeof(journalOptions));
journalOptions.opts.Number_Of_Options = 1;
/* Set the subtree processing images key. */
optionP = (Qjo_Option_t *)&amp;journalOptions.opts.Option[0];
optionP-&gt;Length_Of_Record = QJO_KEY_MINIMUM_RECORD_LENGTH;
optionP-&gt;Key = QJO_KEY_SUBTREE;
optionP-&gt;Length_Of_Data = QJO_KEY_SUBTREE_LENGTH;
memcpy(optionP-&gt;Data,
QJO_SUBTREE_ALL,
QJO_KEY_SUBTREE_LENGTH);
/* Setup the error code structure to cause an exception
to be sent upon error. */
memset(&amp;errorCode,0,sizeof(errorCode));
errorCode.Bytes_Provided = 0;
QjoEndJournal(&amp;objectEntryArray,
&amp;fileIDEntryArray,
(Qlg_Path_Name_T *)NULL,
(Qjo_Journal_Options_t *)&amp;journalOptions,
&amp;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>