3629 lines
118 KiB
HTML
3629 lines
118 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>Qp0lGetAttr()--Get Attributes</title>
|
||
|
<!-- Begin Header Records ========================================== -->
|
||
|
<!-- **************************************************************** -->
|
||
|
<!-- ** WARNING *** READ ME WHENEVER YOU MAKE CHANGES *** WARNING ** -->
|
||
|
<!-- **************************************************************** -->
|
||
|
<!-- 1)If you make any changes to add the getting of new attributes -->
|
||
|
<!-- to this API, please contact Mike Mundy of XPF P0W so that he -->
|
||
|
<!-- can make similar changes to his 'attr' Qshell utility. -->
|
||
|
<!-- 2)Also, you need to consider if these changes should also be -->
|
||
|
<!-- made to the data retrieved using PRTDIRINF/RTVDIRINF (XPF EZ) -->
|
||
|
<!-- **************************************************************** -->
|
||
|
<!-- ** WARNING *** READ ME WHENEVER YOU MAKE CHANGES *** WARNING ** -->
|
||
|
<!-- **************************************************************** -->
|
||
|
<!-- Unix2 SCRIPT J converted by B2H R4.1 (346) (CMS) by V2KEA304 -->
|
||
|
<!-- at RCHVMW2 on 17 Feb 1999 at 11:05:09 -->
|
||
|
<!-- Change log: -->
|
||
|
<!-- 010402 Jkugel: Added new value to QP0L_ATTR_SIGNED -->
|
||
|
<!-- 010402 JTROUS: Modify to return S_ISGID, S_ISUID V5R2, 98686 -->
|
||
|
<!-- 010424 JTROUS: Added new value to QP0L_DIR_FORMAT,98761,v5r2a -->
|
||
|
<!-- 010430 JTROUS Creation Date, 98807, 2x Memory, V5R2b -->
|
||
|
<!-- 010619 JKUGEL: New attribute QP0L_ATTR_SYS_SIGNED. D98749 -->
|
||
|
<!-- 011022 JTROUS Changes from API Review 1, V5R2 -->
|
||
|
<!-- 011130 JTROUS Changes for DCR 99093, Return Audit Info, v5r2c -->
|
||
|
<!-- 020131 JTROUS Changes from API Review 3, V5R2 -->
|
||
|
<!-- 020306 This file has undergone html cleanup on 3/06/02 by JET -->
|
||
|
<!-- 020307 JTROUS Changes for Virus scanner, 98860, V5R3 -->
|
||
|
<!-- 020407 JTROUS Changes for non-savable, 99365, V5R3a -->
|
||
|
<!-- 020618 EMIG: updated for NFS threadsafety, V5R3 -->
|
||
|
<!-- 020718 MFENLON: updated for QFileSvr.400 threadsafety, V5R3 -->
|
||
|
<!-- 020829 RTHEIS : S_ISVTX mode bit, V5R3 -->
|
||
|
<!-- 021015 JETAYLOR: Fixed link to QsrSave.htm -->
|
||
|
<!-- 021107 JTROUS Add desc to blksize,allocsize,doc 8 bytes align V5R3a -->
|
||
|
<!-- 021126 FAIMAN: Fix of type 1 vs type 2 STMF differences. V5R3c -->
|
||
|
<!-- 021211 JTROUS Fix error in Journal_SUBTREE -->
|
||
|
<!-- 021227 Rosckes: Support for new journal information -->
|
||
|
<!-- 030206 JTROUS : Fix from DCG review of Ragged SWA work -->
|
||
|
<!-- 030429 JTROUS : Fixes from Mike Mundy comments -->
|
||
|
<!-- 030520 JTROUS : Updates to non-savable description -->
|
||
|
<!-- 031016 JTROUS : Updates to *TYPE2 STMF descriptions, v5r3 -->
|
||
|
<!-- 031118 JTROUS : Update offset for QP0L_ATTR_AUTH, v5r3, format -->
|
||
|
<!-- 031201 JTROUS : Add Create Object Auditing, Misc changes V5R4 -->
|
||
|
<!-- 040106 JTROUS : Add *NOTAVL to auditing values, V5R4a -->
|
||
|
<!-- 040324 TIMCLARK: Add QP0L_ATTR_SYSTEM_USE, v5r4 -->
|
||
|
<!-- 040827 JTROUS : Add NFS not on AUDIT value always *NON, v5r4 -->
|
||
|
<!-- 050117 JTROUS : Errno updates (not change flagged) -->
|
||
|
<!-- 050119 JTROUS Fix wording on scanning pendconv restriction, V5r4 -->
|
||
|
<!-- 050322 JTROUS Fix wording on *TYPE2 file, disk storage, not main,-->
|
||
|
<!-- not change flagged,V5r4 -->
|
||
|
<!-- 050415 JTROUS V5R4 Review 1 changes, no change flags -->
|
||
|
<!-- 050815 JTROUS Fix *TYPE1 file format size limit, V5R4 -->
|
||
|
<!-- 050831 JTROUS Add to MAINSTGOPT extra details, V5R4 -->
|
||
|
<!-- **************************************************************** -->
|
||
|
<!-- 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. -->
|
||
|
<!-- 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 language="Javascript" src="../rzahg/synch.js" type="text/javascript">
|
||
|
</script>
|
||
|
|
||
|
<h2>Qp0lGetAttr()--Get Attributes</h2>
|
||
|
|
||
|
<div class="box" style="width: 80%;">
|
||
|
<br>
|
||
|
Syntax<br>
|
||
|
|
||
|
|
||
|
<pre>
|
||
|
#include <Qp0lstdi.h>
|
||
|
int Qp0lGetAttr
|
||
|
(Qlg_Path_Name_T *<em>Path_Name</em>,
|
||
|
Qp0l_AttrTypes_List_t *<em>Attr_Array_ptr</em>,
|
||
|
char *<em>Buffer_ptr</em>,
|
||
|
uint <em>Buffer_Size_Provided</em>,
|
||
|
uint *<em>Buffer_Size_Needed_ptr</em>,
|
||
|
uint *<em>Num_Bytes_Returned_ptr</em>,
|
||
|
uint <em>Follow_Symlnk, ...</em>);
|
||
|
</pre>
|
||
|
|
||
|
<br>
|
||
|
Service Program Name: QP0LLIB2<br>
|
||
|
<!-- iddvc RMBR -->
|
||
|
<br>
|
||
|
Default Public Authority: *USE<br>
|
||
|
<!-- iddvc RMBR -->
|
||
|
<br>
|
||
|
Threadsafe: Conditional; see <a href="#usage_notes">Usage Notes</a>.<br>
|
||
|
<!-- iddvc RMBR -->
|
||
|
<br>
|
||
|
</div>
|
||
|
|
||
|
<p>The <strong>Qp0lGetAttr()</strong> function gets one or more attributes, on
|
||
|
a single call, for the object that is referred to by the input <em>
|
||
|
Path_Name</em>. The object must exist, the user must have authority to it, and
|
||
|
the requested attributes must be supported by the specific file system
|
||
|
or object type.
|
||
|
For each requested attribute that is not supported by the file system
|
||
|
or object type, <strong>
|
||
|
Qp0lGetAttr()</strong> returns zero in the Size of attribute data field,
|
||
|
pointed to by the <em>Buffer_ptr</em> parameter, for that attribute.</p>
|
||
|
|
||
|
<p><strong>Qp0lGetAttr()</strong> either returns the attributes of the symbolic
|
||
|
link, or returns the attributes of the object that the symbolic link names.
|
||
|
This depends upon the value of the <em>Follow_Symlnk</em> parameter.</p>
|
||
|
|
||
|
<p><strong>Qp0lGetAttr()</strong> returns all times in seconds since the Epoch
|
||
|
so that they are consistent with UNIX-type APIs. The Epoch is the time 0 hours,
|
||
|
0 minutes, 0 seconds, January 1, 1970, Coordinated Universal Time. If the
|
||
|
i5/OS date is set prior to 1970, all time values are zero.</p>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3>Parameters</h3>
|
||
|
|
||
|
<dl>
|
||
|
<dt><strong><em>Path_Name</em></strong></dt>
|
||
|
|
||
|
<dd>(Input) The path name of the object for which attribute information is
|
||
|
returned. This path name is in the Qlg_Path_Name_T format. For more information
|
||
|
on this structure, see <a href="../apiref/pns.htm">Path name format</a>.<br>
|
||
|
<br>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong><em><a name="attr_array_ptr">Attr_Array_ptr</a></em></strong></dt>
|
||
|
|
||
|
<dd>(Input) A pointer to a structure listing the requested attributes returned
|
||
|
for the object identified by the <em>Path_Name</em> parameter. Each entry in
|
||
|
the array identifies an attribute, by a constant value, that <strong>
|
||
|
Qp0lGetAttr()</strong> returns. The number of requested attributes field must
|
||
|
equal the total number of constants. If the <strong>Attr_Array_ptr</strong> is
|
||
|
NULL or if the Number of requested attributes field is zero, <strong>
|
||
|
Qp0lGetAttr()</strong> returns all the attributes that the API supports that
|
||
|
are available for the object. The format of this parameter follows.<br>
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<table border width="80%">
|
||
|
<tr>
|
||
|
<th align="left" valign="bottom" colspan="4"><em><a name="Table_1-1">Attribute
|
||
|
array pointer</a></em></th>
|
||
|
</tr>
|
||
|
|
||
|
<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 requested attributes</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">4</td>
|
||
|
<td align="center" valign="top">4</td>
|
||
|
<td align="left" valign="top">ARRAY(*) of BINARY(4)</td>
|
||
|
<td align="left" valign="top">Array of attribute constants</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Array of attribute constants.</strong> A list of predefined
|
||
|
constants, each identifying a requested attribute. <strong>
|
||
|
Qp0lGetattr()</strong> also returns one of these constants in the Attribute
|
||
|
identification field, pointed to by the <em>Buffer_ptr</em> parameter. The
|
||
|
constant must be used to identify the returned attribute because the attributes
|
||
|
are returned in any order. Note that the Size of attribute data field, pointed
|
||
|
to by the <em>Buffer_ptr</em> parameter, contains the total size of data that
|
||
|
<strong>Qp0lGetattr()</strong> returns for the constants in this array. Valid
|
||
|
values, and sizes of the returned attributes, follow:</p>
|
||
|
|
||
|
<dl>
|
||
|
<dt><em>0</em></dt>
|
||
|
<dd>QP0L_ATTR_OBJTYPE: (CHAR(10)) The object type.
|
||
|
See <a href="../rbam6/rbam6clmain.htm">Control Language (CL)</a> information in
|
||
|
the iSeries Information center for descriptions of all iSeries object
|
||
|
types.<br><br></dd>
|
||
|
<dt><em>1</em></dt>
|
||
|
<dd>QP0L_ATTR_DATA_SIZE: (UNSIGNED BINARY(4)) The
|
||
|
size in bytes of the data in this object.
|
||
|
The size varies by object type and file system.
|
||
|
This size does not include object
|
||
|
headers or the size of extended attributes associated with the object. If this
|
||
|
attribute is requested and the size cannot be represented in a BINARY(4) data
|
||
|
type, <strong>Qp0lGetAttr()</strong> fails with <em>errno</em> [EOVERFLOW].
|
||
|
Refer to QP0L_ATTR_DATA_SIZE_64 for objects whose data sizes are greater than
|
||
|
BINARY(4).<br><br></dd>
|
||
|
<dt><em>2</em></dt>
|
||
|
<dd>QP0L_ATTR_ALLOC_SIZE: (UNSIGNED BINARY(4)) The
|
||
|
number of bytes that have been allocated for this object.
|
||
|
The allocated size varies by object type and file system. For example, the
|
||
|
allocated size includes the object data size as shown in QP0L_ATTR_DATA_SIZE
|
||
|
or QP0L_ATTR_DATA_SIZE_64 as well as any
|
||
|
logically sized extents to accommodate anticipated future requirements for
|
||
|
the object data. It may or may not include additional bytes for attribute
|
||
|
information.
|
||
|
If this size cannot
|
||
|
be represented in a BINARY(4) data type, <strong>Qp0lGetAttr()</strong> fails
|
||
|
with <em>errno</em> [EOVERFLOW]. Refer to QP0L_ATTR_ALLOC_SIZE_64 for objects
|
||
|
whose allocated sizes are greater than BINARY(4).<br><br></dd>
|
||
|
<dt><em>3</em></dt>
|
||
|
<dd>QP0L_ATTR_EXTENDED_ATTR_SIZE: (UNSIGNED
|
||
|
BINARY(4)) The total number of extended attribute bytes.<br><br></dd>
|
||
|
<dt><em>4</em></dt>
|
||
|
<dd>QP0L_ATTR_CREATE_TIME: (UNSIGNED BINARY(4)) The
|
||
|
time the object was created.<br><br></dd>
|
||
|
<dt><em>5</em></dt>
|
||
|
<dd>QP0L_ATTR_ACCESS_TIME: (UNSIGNED BINARY(4)) The
|
||
|
time that the object's data was last accessed.<br><br></dd>
|
||
|
<dt><em>6</em></dt>
|
||
|
<dd>QP0L_ATTR_CHANGE_TIME: (UNSIGNED BINARY(4)) The
|
||
|
time that the object's data or attributes were last changed.<br><br></dd>
|
||
|
<dt><em>7</em></dt>
|
||
|
<dd>QP0L_ATTR_MODIFY_TIME: (UNSIGNED BINARY(4)) The
|
||
|
time that the object's data was last changed.<br><br></dd>
|
||
|
<dt><em>8</em></dt>
|
||
|
<dd>QP0L_ATTR_STG_FREE: (CHAR(1)) Whether the
|
||
|
object's data has been moved offline, freeing its online storage. Valid values
|
||
|
are:
|
||
|
<br>
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_SYS_NOT_STG_FREE: The object's data is not
|
||
|
offline.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_SYS_STG_FREE: The object's data is
|
||
|
offline.</td>
|
||
|
</tr>
|
||
|
</table><br><br></dd>
|
||
|
<dt><em>9</em></dt>
|
||
|
<dd>QP0L_ATTR_CHECKED_OUT: Whether an object is
|
||
|
checked out or not. When an object is checked out, other users can read and
|
||
|
copy the object. Only the user who has the object checked out can change the
|
||
|
object. The checkout format is defined in the Qp0lstdi.h header file as data
|
||
|
type Qp0l_Checkout_t, and is described in the following table.<br>
|
||
|
|
||
|
<table border width="80%">
|
||
|
<tr>
|
||
|
<th align="left" valign="bottom" colspan="4"><em><a name="Table_1-2">Checkout
|
||
|
Format</a></em></th>
|
||
|
</tr>
|
||
|
|
||
|
<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%">CHAR(1)</td>
|
||
|
<td align="left" valign="top" width="60%">Flag indicating whether an object is
|
||
|
checked out</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">1</td>
|
||
|
<td align="center" valign="top">1</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">User to whom checked out</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">11</td>
|
||
|
<td align="center" valign="top">B</td>
|
||
|
<td align="left" valign="top">CHAR(1)</td>
|
||
|
<td align="left" valign="top">Reserved</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">Time checked out</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Flag.</strong> An indicator as to whether an object is checked out.
|
||
|
Valid values are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_NOT_CHECKED_OUT: The object is not checked
|
||
|
out.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_CHECKED_OUT: The object is checked out.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Reserved.</strong> A reserved field. This field must be set to
|
||
|
binary zero.</p>
|
||
|
|
||
|
<p><strong>Time checked out.</strong> The time the object was checked out. This
|
||
|
field represents the number of seconds since the Epoch.</p>
|
||
|
|
||
|
<p><strong>User to whom checked out.</strong> The user who has the object
|
||
|
checked out. This field is blank if it is not checked out.</p></dd>
|
||
|
<dt><em>10</em></dt>
|
||
|
<dd>QP0L_ATTR_LOCAL_REMOTE: (CHAR(1)) Whether an
|
||
|
object is stored locally or stored on a remote system. The decision of whether
|
||
|
a file is local or remote varies according to the respective file system rules.
|
||
|
Objects in file systems that do not carry either a local or remote indicator
|
||
|
are treated as remote. Valid values are:
|
||
|
<table cellpadding="5">
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_LOCAL_OBJ: The object's data is stored
|
||
|
locally.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'02'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_REMOTE_OBJ: The object's data is on a remote
|
||
|
system.</td>
|
||
|
</tr>
|
||
|
</table><br><br></dd>
|
||
|
<dt><em>11</em></dt>
|
||
|
<dd>QP0L_ATTR_AUTH: The public and private
|
||
|
authorities associated with the object.
|
||
|
|
||
|
<p>When the QP0L_ATTR_AUTH attribute is requested, the attribute data is
|
||
|
returned in the buffer in the following format. This format is defined in
|
||
|
header file Qp0lstdi.h as data type Qp0l_Authority_General_t.</p>
|
||
|
|
||
|
<table border width="80%">
|
||
|
<tr>
|
||
|
<th align="left" valign="bottom" colspan="4"><em><a name="Table_1-3">General
|
||
|
Authority Format</a></em></th>
|
||
|
</tr>
|
||
|
|
||
|
<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%">CHAR(10)</td>
|
||
|
<td align="left" valign="top" width="60%">Object owner</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">10</td>
|
||
|
<td align="center" valign="top">0A</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Primary group</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">Authorization list name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">30</td>
|
||
|
<td align="center" valign="top">1E</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Reserved</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">40</td>
|
||
|
<td align="center" valign="top">28</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Offset to array of users</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">44</td>
|
||
|
<td align="center" valign="top">2C</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Number of users</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">48</td>
|
||
|
<td align="center" valign="top">30</td>
|
||
|
<td align="left" valign="top">BINARY(4)</td>
|
||
|
<td align="left" valign="top">Size of user entry field entry</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">52</td>
|
||
|
<td align="center" valign="top">34</td>
|
||
|
<td align="left" valign="top">CHAR(12)</td>
|
||
|
<td align="left" valign="top">Reserved</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="center" valign="top"> </td>
|
||
|
<td align="left" valign="top">ARRAY(*)</td>
|
||
|
<td align="left" valign="top">Array of users</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Array of users.</strong> The names and authorities of the users who
|
||
|
are authorized to use the object.</p>
|
||
|
|
||
|
<p><strong>Authorization list name.</strong> The name of the authorization list
|
||
|
that is used to secure the named object. The value *NONE indicates that no
|
||
|
authorization list is used in determining authority to the object.</p>
|
||
|
|
||
|
<p><strong>Number of users.</strong> The number of users that are authorized to
|
||
|
the object. This is the number of users returned in the array of users.</p>
|
||
|
|
||
|
<p>The QFileSvr.400 file system returns zero for the Number of users and zero
|
||
|
for the Offset to array of users. If a primary group is specified, the Network
|
||
|
File System (NFS) returns one for the Number of users.</p>
|
||
|
|
||
|
<p><strong>Object owner.</strong> The name of the user profile that is the
|
||
|
owner of the object or the following special value:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="15 85" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*NOUSRPRF</em></td>
|
||
|
<td align="left" valign="top">This special value is used by the Network File
|
||
|
System to indicate that there is no user profile on the local iSeries server
|
||
|
with a user ID (UID) matching the UID of the remote object.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Offset to array of users.</strong> The offset to the names and
|
||
|
authorities of the users who are authorized to use the object. This offset is
|
||
|
relative to the
|
||
|
start of
|
||
|
the buffer
|
||
|
pointed to by the <em>Buffer_ptr</em> parameter.</p>
|
||
|
|
||
|
<p><strong>Primary group.</strong> The name of the user profile that is the
|
||
|
primary group of the object or the following special values:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="15 85" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*NONE</em></td>
|
||
|
<td align="left" valign="top">The object does not have a primary group.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*NOUSRPRF</em></td>
|
||
|
<td align="left" valign="top">This special value is used by the Network File
|
||
|
System to indicate that there is no user profile on the local server with a
|
||
|
group ID (GID) matching the GID of the remote object.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Reserved.</strong> A reserved field. This field must be set to
|
||
|
binary zero.</p>
|
||
|
|
||
|
<p><strong>Size of user entry field entry.</strong> The number of bytes
|
||
|
returned for each user.</p>
|
||
|
|
||
|
<p>When the QP0L_ATTR_AUTH attribute is requested, the array of users is
|
||
|
returned in the buffer in the following format. This format is defined in
|
||
|
header file Qp0lstdi.h as data type Qp0l_Authority_Users_t.</p>
|
||
|
|
||
|
<table border width="80%">
|
||
|
<tr>
|
||
|
<th align="left" valign="bottom" colspan="4"><em><a name="Table_1-4">Data and
|
||
|
Object Authority Format</a></em></th>
|
||
|
</tr>
|
||
|
|
||
|
<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%">CHAR(10)</td>
|
||
|
<td align="left" valign="top" width="60%">User name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">10</td>
|
||
|
<td align="center" valign="top">0A</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">User data authority</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" colspan="4">Object rights</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">20</td>
|
||
|
<td align="center" valign="top">14</td>
|
||
|
<td align="left" valign="top">CHAR(1)</td>
|
||
|
<td align="left" valign="top">Object management</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">21</td>
|
||
|
<td align="center" valign="top">15</td>
|
||
|
<td align="left" valign="top">CHAR(1)</td>
|
||
|
<td align="left" valign="top">Object existence</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">22</td>
|
||
|
<td align="center" valign="top">16</td>
|
||
|
<td align="left" valign="top">CHAR(1)</td>
|
||
|
<td align="left" valign="top">Object alter</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">23</td>
|
||
|
<td align="center" valign="top">17</td>
|
||
|
<td align="left" valign="top">CHAR(1)</td>
|
||
|
<td align="left" valign="top">Object reference</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">24</td>
|
||
|
<td align="center" valign="top">18</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Reserved</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" colspan="4">Data rights</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">34</td>
|
||
|
<td align="center" valign="top">22</td>
|
||
|
<td align="left" valign="top">CHAR(1)</td>
|
||
|
<td align="left" valign="top">Object operational</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">35</td>
|
||
|
<td align="center" valign="top">23</td>
|
||
|
<td align="left" valign="top">CHAR(1)</td>
|
||
|
<td align="left" valign="top">Read</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">36</td>
|
||
|
<td align="center" valign="top">24</td>
|
||
|
<td align="left" valign="top">CHAR(1)</td>
|
||
|
<td align="left" valign="top">Add</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">37</td>
|
||
|
<td align="center" valign="top">25</td>
|
||
|
<td align="left" valign="top">CHAR(1)</td>
|
||
|
<td align="left" valign="top">Update</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">38</td>
|
||
|
<td align="center" valign="top">26</td>
|
||
|
<td align="left" valign="top">CHAR(1)</td>
|
||
|
<td align="left" valign="top">Delete</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">39</td>
|
||
|
<td align="center" valign="top">27</td>
|
||
|
<td align="left" valign="top">CHAR(1)</td>
|
||
|
<td align="left" valign="top">Execute</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">40</td>
|
||
|
<td align="center" valign="top">28</td>
|
||
|
<td align="left" valign="top">CHAR(1)</td>
|
||
|
<td align="left" valign="top">Exclude</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">41</td>
|
||
|
<td align="center" valign="top">29</td>
|
||
|
<td align="left" valign="top">CHAR(7)</td>
|
||
|
<td align="left" valign="top">Reserved</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Add (*ADD).</strong> Authority to add entries to the object. Valid
|
||
|
values are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>0</em></td>
|
||
|
<td align="left" valign="top">The user does not have add data rights.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>1</em></td>
|
||
|
<td align="left" valign="top">The user does have add data rights.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Delete (*DELETE).</strong> Authority to remove entries from the
|
||
|
object. Valid values are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>0</em></td>
|
||
|
<td align="left" valign="top">The user does not have delete data rights.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>1</em></td>
|
||
|
<td align="left" valign="top">The user does have delete data rights.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Execute (*EXECUTE).</strong> Authority to run a program or search a
|
||
|
library or directory. Valid values are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>0</em></td>
|
||
|
<td align="left" valign="top">The user does not have execute data rights.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>1</em></td>
|
||
|
<td align="left" valign="top">The user does have execute data rights.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Exclude (*EXCLUDE).</strong> The user is prevented from accessing
|
||
|
the object. Valid values are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>0</em></td>
|
||
|
<td align="left" valign="top">The user does not have exclude data rights.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>1</em></td>
|
||
|
<td align="left" valign="top">The user does have exclude data rights.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Object alter (*OBJALTER).</strong> Authority to change the
|
||
|
attributes of an object, such as adding or removing triggers for a database
|
||
|
file. Valid values are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>0</em></td>
|
||
|
<td align="left" valign="top">The user does not have alter object rights.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>1</em></td>
|
||
|
<td align="left" valign="top">The user does have alter object rights.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Object existence (*OBJEXIST).</strong> Authority to control the
|
||
|
object's existence and ownership. Valid values are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>0</em></td>
|
||
|
<td align="left" valign="top">The user does not have object existence
|
||
|
rights.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>1</em></td>
|
||
|
<td align="left" valign="top">The user does have object existence rights.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Object management (*OBJMGT).</strong> Authority to specify security,
|
||
|
to move or rename the object, and to add members if the object is a database
|
||
|
file. Valid values are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>0</em></td>
|
||
|
<td align="left" valign="top">The user does not have object management
|
||
|
rights.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>1</em></td>
|
||
|
<td align="left" valign="top">The user does have object management rights.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Object operational (*OBJOPR).</strong> Authority to look at the
|
||
|
object's attributes and to use the object as specified by the data authorities
|
||
|
that the user has to the object. Valid values are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>0</em></td>
|
||
|
<td align="left" valign="top">The user does not have object operational
|
||
|
rights.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>1</em></td>
|
||
|
<td align="left" valign="top">The user does have object operational
|
||
|
rights.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Object reference (*OBJREF).</strong> Authority to specify the object
|
||
|
as the first level in a referential constraint. Valid values are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>0</em></td>
|
||
|
<td align="left" valign="top">The user does not have object reference
|
||
|
rights.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>1</em></td>
|
||
|
<td align="left" valign="top">The user does have object reference rights.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Read (*READ).</strong> Authority to access the contents of the
|
||
|
object. Valid values are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>0</em></td>
|
||
|
<td align="left" valign="top">The user does not have read data rights.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>1</em></td>
|
||
|
<td align="left" valign="top">The user does have read data rights.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Reserved.</strong> A reserved field. This field must be set to
|
||
|
binary zero.</p>
|
||
|
|
||
|
<p><strong>Update (*UPDATE).</strong> Authority to change the content of
|
||
|
existing entries in the object. Valid values are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>0</em></td>
|
||
|
<td align="left" valign="top">The user does not have update data rights.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>1</em></td>
|
||
|
<td align="left" valign="top">The user does have update data rights.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>User data authority.</strong> The operation, use, or access that the
|
||
|
user has to an object. Valid values follow:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="15 85" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*RWX</em></td>
|
||
|
<td align="left" valign="top">Allows all operations on the object except those
|
||
|
that are limited to the owner or controlled by the object rights.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*RW</em></td>
|
||
|
<td align="left" valign="top">Allows access to the object attributes and allows
|
||
|
the object to be changed. The user cannot use the object.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*WX</em></td>
|
||
|
<td align="left" valign="top">Allows use of the object and allows the object to
|
||
|
be changed. The user cannot access the object attributes.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*R</em></td>
|
||
|
<td align="left" valign="top">Allows access to the object attributes.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*W</em></td>
|
||
|
<td align="left" valign="top">Allows the object to be changed.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*X</em></td>
|
||
|
<td align="left" valign="top">Allows the use of the object.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*EXCLUDE</em></td>
|
||
|
<td align="left" valign="top">All operations on the object are prohibited.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*NONE</em></td>
|
||
|
<td align="left" valign="top">Displayed by the system when the user does not
|
||
|
have any data authorities.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>USER DEF</em></td>
|
||
|
<td align="left" valign="top">Displayed by the system when the specific data
|
||
|
authorities do not match any of the predefined data authority levels
|
||
|
above.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>User name.</strong> The name of a user authorized to use the object.
|
||
|
This may be the name of the user profile or one of the following special
|
||
|
values:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="15 85" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*NOUSRPRF</em></td>
|
||
|
<td align="left" valign="top">The authorities of either the owner or the
|
||
|
primary group of the object for which the profile name could not be determined.
|
||
|
This value is used by the Network File System only. It indicates that the user
|
||
|
ID (UID) or the group ID (GID) for the remote object does not match any profile
|
||
|
on the local iSeries server with that UID or GID.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*NTWIRF</em></td>
|
||
|
<td align="left" valign="top">The authorities of the NetWare Inherited Rights
|
||
|
Filter for the object. This value is only used by the QNetWare file
|
||
|
system.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*NTWEFF</em></td>
|
||
|
<td align="left" valign="top">The NetWare effective rights to the object. This
|
||
|
value is only used by the QNetWare file system.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*PUBLIC</em></td>
|
||
|
<td align="left" valign="top">The authorities of users who are not specifically
|
||
|
named and who are not in the object's authorization list.</td>
|
||
|
</tr>
|
||
|
</table><br><br></dd>
|
||
|
<dt><em>12</em></dt>
|
||
|
<dd>QP0L_ATTR_FILE_ID: (CHAR(16)) An identifier
|
||
|
associated with the referred to object. A file ID can be used with <a href=
|
||
|
"getpthff.htm">Qp0lGetPathFromFileID()</a> to retrieve an object's path name.
|
||
|
The file ID is defined in header file Qp0lstdi.h as data type Qp0lFID_t.</dd>
|
||
|
<dt><em>13</em></dt>
|
||
|
<dd>QP0L_ATTR_ASP: (BINARY(2)) The auxiliary storage
|
||
|
pool in which the object is stored.<br><br></dd>
|
||
|
<dt><em>14</em></dt>
|
||
|
<dd>QP0L_ATTR_DATA_SIZE_64: (UNSIGNED BINARY(8)) The
|
||
|
size in bytes of the data in this object.
|
||
|
The size varies by object type and file system.
|
||
|
This size does not include object
|
||
|
headers or the size of extended attributes associated with the object.
|
||
|
QP0L_ATTR_DATA_SIZE may be used for objects whose data size can be represented
|
||
|
in a BINARY(4) data type.</dd>
|
||
|
<dt><em>15</em></dt>
|
||
|
<dd>QP0L_ATTR_ALLOC_SIZE_64: (UNSIGNED BINARY(8)) The
|
||
|
number of bytes that have been allocated for this object.
|
||
|
The allocated size varies by object type and file system. For example, the
|
||
|
allocated size includes the object data size as shown in QP0L_ATTR_DATA_SIZE
|
||
|
or QP0L_ATTR_DATA_SIZE_64 as well as any
|
||
|
logically sized extents to accommodate anticipated future requirements for
|
||
|
the object data. It may or may not include additional bytes for attribute
|
||
|
information.
|
||
|
QP0L_ATTR_ALLOC_SIZE
|
||
|
may be used for objects whose allocated size can be represented in a BINARY(4)
|
||
|
data type.</dd>
|
||
|
<dt><em>16</em></dt>
|
||
|
<dd>QP0L_ATTR_USAGE_INFORMATION: Fields indicating
|
||
|
how often an object is used. Usage has different meanings according to the
|
||
|
specific file system and according to the individual object types supported
|
||
|
within a file system. Usage can indicate the opening or closing of a file or
|
||
|
can refer to adding links, renaming, restoring, or checking out an object. The
|
||
|
usage information format is defined in the Qp0lstdi.h header file as data type
|
||
|
Qp0l_Usage_t and is shown in the following table.<br>
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<table border width="80%">
|
||
|
<tr>
|
||
|
<th align="left" valign="bottom" colspan="4"><em><a name="Table_1-5">
|
||
|
Qp0l_Usage_t</a></em></th>
|
||
|
</tr>
|
||
|
|
||
|
<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%">Reset date</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">Last used date</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">Days used count</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">12</td>
|
||
|
<td align="center" valign="top">C</td>
|
||
|
<td align="left" valign="top">CHAR(4)</td>
|
||
|
<td align="left" valign="top">Reserved</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Days used count.</strong> The number of days an object has been
|
||
|
used. Usage has different meanings according to the specific file system and
|
||
|
according to the individual object types supported within a file system. Usage
|
||
|
can indicate the opening or closing of a file or can refer to adding links,
|
||
|
renaming, restoring, or checking out an object. This count is incremented once
|
||
|
each day that an object is used and is reset to zero by calling the <strong>
|
||
|
Qp0lSetAttr()</strong> API.</p>
|
||
|
|
||
|
<p><strong>Last used date.</strong> The number of seconds since the Epoch that
|
||
|
corresponds to the date the object was last used. This field is zero when the
|
||
|
object is created. If usage data is not maintained for the i5/OS type or the
|
||
|
file system to which an object belongs, this field is zero.</p>
|
||
|
|
||
|
<p><strong>Reserved.</strong> A reserved field set to binary zeros.</p>
|
||
|
|
||
|
<p><strong>Reset date.</strong> The number of seconds since the Epoch that
|
||
|
corresponds to the date the days used count was last reset to zero (0). This
|
||
|
date is set to the current date when the <strong>Qp0lSetAttr()</strong> API is
|
||
|
called to reset the Days used count to zero.</p>
|
||
|
<br><br></dd>
|
||
|
<dt><em>17</em></dt>
|
||
|
<dd>QP0L_ATTR_PC_READ_ONLY: (CHAR(1)) Whether the
|
||
|
object can be written to or deleted, have its extended attributes changed or
|
||
|
deleted, or have its size changed. Valid values are:
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_PC_NOT_READONLY: The object can be
|
||
|
changed.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top">QP0L_PC_READONLY: The object cannot be
|
||
|
changed.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br><br></dd>
|
||
|
<dt><em>18</em></dt>
|
||
|
<dd>QP0L_ATTR_PC_HIDDEN: (CHAR(1)) Whether the object
|
||
|
can be displayed using an ordinary directory listing.
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_PC_NOT_HIDDEN: The object is not
|
||
|
hidden.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top">QP0L_PC_HIDDEN: The object is hidden.</td>
|
||
|
</tr>
|
||
|
</table><br><br></dd>
|
||
|
<dt><em>19</em></dt>
|
||
|
<dd>QP0L_ATTR_PC_SYSTEM: (CHAR(1)) Whether the object
|
||
|
is a system file and is excluded from normal directory searches.
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_PC_NOT_SYSTEM: The object is not a system
|
||
|
file.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top">QP0L_PC_SYSTEM: The object is a system file.</td>
|
||
|
</tr>
|
||
|
</table><br><br></dd>
|
||
|
<dt><em>20</em></dt>
|
||
|
<dd>QP0L_ATTR_PC_ARCHIVE: (CHAR(1)) Whether the
|
||
|
object has changed since the last time the file was examined.
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_PC_NOT_CHANGED: The object has not
|
||
|
changed.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top">QP0L_PC_CHANGED: The object has changed.</td>
|
||
|
</tr>
|
||
|
</table><br><br></dd>
|
||
|
<dt><em>21</em></dt>
|
||
|
<dd>QP0L_ATTR_SYSTEM_ARCHIVE: (CHAR(1)) Whether the
|
||
|
object has changed and needs to be saved. It is set on when an object's change
|
||
|
time is updated, and set off when the object has been saved.
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_SYSTEM_NOT_CHANGED: The object has not
|
||
|
changed and does not need to be saved.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top">QP0L_SYSTEM_CHANGED: The object has changed and
|
||
|
does need to be saved.</td>
|
||
|
</tr>
|
||
|
</table><br><br></dd>
|
||
|
<dt><em>22</em></dt>
|
||
|
<dd>QP0L_ATTR_CODEPAGE: (BINARY(4)) The code page
|
||
|
derived from the coded character set identifier (CCSID) used for the data in
|
||
|
the file or the extended attributes of the directory. If the returned value of
|
||
|
this field is zero (0), there is more than one code page associated with the
|
||
|
st_ccsid. If the st_ccsid is not a supported system CCSID, the st_codepage is
|
||
|
set equal to the st_ccsid.<br><br></dd>
|
||
|
<dt><em>23</em></dt>
|
||
|
<dd>QP0L_ATTR_FILE_FORMAT: (CHAR(1)) The format of
|
||
|
the stream file (*STMF). Valid values are:
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_FILE_FORMAT_TYPE1: The object has the same
|
||
|
format as *STMF objects created on releases prior to Version 4 Release 4.
|
||
|
It has a minimum object
|
||
|
size of 4096 bytes and a maximum object size of approximately
|
||
|
<img src="delta.gif" alt="Start of change">
|
||
|
128
|
||
|
<img src="deltaend.gif" alt="End of change">
|
||
|
gigabytes.
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top">QP0L_FILE_FORMAT_TYPE2:
|
||
|
A QP0L_FILE_FORMAT_TYPE2 (*TYPE2) *STMF has high
|
||
|
performance file access and was new in Version 4 Release 4 of i5/OS (OS/400).
|
||
|
It has a minimum object size of 4096 bytes and a maximum object size of
|
||
|
approximately one terabyte in the "root" (/), QOpenSys and user-defined
|
||
|
file systems. Otherwise, the maximum is approximately 256 gigabytes.
|
||
|
A *TYPE2 *STMF is capable of memory mapping as well as the ability
|
||
|
to specify an attribute to optimize disk storage allocation.
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table><br><br></dd>
|
||
|
<dt><em>24</em></dt>
|
||
|
<dd>QP0L_ATTR_UDFS_DEFAULT_FORMAT: (CHAR(1)) The
|
||
|
default file format of stream files (*STMF) created in the user-defined file
|
||
|
system. Valid values are:
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_UDFS_DEFAULT_TYPE1: The stream file (*STMF)
|
||
|
has the same format as *STMFs created on releases prior to Version 4 Release 4
|
||
|
of i5/OS (OS/400). It has a minimum object
|
||
|
size of 4096 bytes and a maximum object size of approximately 256 gigabytes.
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top">QP0L_UDFS_DEFAULT_TYPE2:
|
||
|
A *TYPE2 *STMF has high
|
||
|
performance file access and was new in Version 4 Release 4 of i5/OS (OS/400).
|
||
|
It has a minimum object size of 4096 bytes and a maximum object size of
|
||
|
approximately one terabyte in the "root" (/), QOpenSys and user-defined
|
||
|
file systems. Otherwise, the maximum is approximately 256 gigabytes.
|
||
|
A *TYPE2 *STMF is capable of memory mapping as well as the ability
|
||
|
to specify an attribute to optimize disk storage allocation.
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table><br><br></dd>
|
||
|
<dt><em>25</em></dt>
|
||
|
<dd>QP0L_ATTR_JOURNAL_INFORMATION: Basic Journaling
|
||
|
information for this object. The journaling information format is defined in
|
||
|
the Qp0lstdi.h header file as data type Qp0l_Journal_Info_t and is shown in the
|
||
|
following table:<br>
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<table border width="80%">
|
||
|
<tr>
|
||
|
<th align="left" valign="bottom" colspan="4"><em><a name="Table_1-6">
|
||
|
Qp0l_Journal_Info_t</a></em></th>
|
||
|
</tr>
|
||
|
|
||
|
<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%">CHAR(1)</td>
|
||
|
<td align="left" valign="top" width="60%">Journaling status</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">1</td>
|
||
|
<td align="center" valign="top">1</td>
|
||
|
<td align="left" valign="top">CHAR(1)</td>
|
||
|
<td align="left" valign="top">Options</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">2</td>
|
||
|
<td align="center" valign="top">2</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Journal identifier (JID)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">12</td>
|
||
|
<td align="center" valign="top">0C</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Current or last journal name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">22</td>
|
||
|
<td align="center" valign="top">16</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Current or last journal library name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">32</td>
|
||
|
<td align="center" valign="top">20</td>
|
||
|
<td align="left" valign="top">BINARY(4), UNSIGNED</td>
|
||
|
<td align="left" valign="top">Last journaling start time</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
<p>
|
||
|
For extended journaling information see QP0L_ATTR_JOURNAL_EXTENDED_INFORMATION.
|
||
|
</p>
|
||
|
<p><strong>Current or last journal library name.</strong> If the value of the
|
||
|
journaling status is QP0L_JOURNALED, then this field contains the name of the
|
||
|
library containing the currently used journal. If the value of the journaling
|
||
|
status is QP0L_NOT_JOURNALED, then this field contains the name of the library
|
||
|
containing the last used journal. All bytes in this field will be set to binary
|
||
|
zero if this object has never been journaled.</p>
|
||
|
|
||
|
<p><strong>Current or last journal name.</strong> If the value of the
|
||
|
journaling status is QP0L_JOURNALED, then this field contains the name of the
|
||
|
journal currently being used. If the value of the journaling status is
|
||
|
QP0L_NOT_JOURNALED, then this field contains the name of the journal last used
|
||
|
for this object. All bytes in this field will be set to binary zero if this
|
||
|
object has never been journaled.</p>
|
||
|
|
||
|
<p><strong>Journal identifier (JID).</strong> This field associates the object
|
||
|
being journaled with an identifier that can be used on various
|
||
|
journaling-related commands and APIs. </p>
|
||
|
|
||
|
<p><strong>Journaling status.</strong> Current journaling status of the object.
|
||
|
This field will be one of the following values:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_NOT_JOURNALED: The object is currently not
|
||
|
being journaled.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top">QP0L_JOURNALED: The object is currently being
|
||
|
journaled.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Last journaling start time.</strong> The number of seconds since the
|
||
|
Epoch that corresponds to the last date and time for which the object had
|
||
|
journaling started for it. This field will be set to binary zero if this object
|
||
|
has never been journaled.</p>
|
||
|
|
||
|
<p><strong>Options.</strong> This field describes the current journaling
|
||
|
options. This field is composed of several bit flags and contains one or more
|
||
|
of the following bit values:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'80'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_JOURNAL_SUBTREE: When this flag is returned,
|
||
|
this object is a directory with IFS journaling subtree semantics. New objects
|
||
|
created within this directory's subtree will inherit the journaling attributes
|
||
|
and options from this directory.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'08'</em></td>
|
||
|
<td align="left" valign="top">QP0L_JOURNAL_OPTIONAL_ENTRIES: When journaling is
|
||
|
active, entries that are considered optional are journaled. The list of
|
||
|
optional journal entries varies for each object type. See the
|
||
|
<a href="../ifs/rzaaxkickoff.htm">Integrated file system</a> information
|
||
|
in the Files and file systems topic
|
||
|
for information regarding these optional entries for various objects.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'20'</em></td>
|
||
|
<td align="left" valign="top">QP0L_JOURNAL_AFTER_IMAGES: When journaling is
|
||
|
active, the image of the object after a change is journaled.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'40'</em></td>
|
||
|
<td align="left" valign="top">QP0L_JOURNAL_BEFORE_IMAGES: When journaling is
|
||
|
active, the image of the object prior to a change is journaled.</td>
|
||
|
</tr>
|
||
|
</table><br><br></dd>
|
||
|
<dt><em>26</em></dt>
|
||
|
<dd>QP0L_ATTR_ALWCKPWRT: (CHAR(1)) Whether a stream
|
||
|
file (*STMF) can be shared with readers and writers during the
|
||
|
save-while-active checkpoint processing. Valid values are:
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_NOT_ALWCKPWRT: The object can be shared with
|
||
|
readers only.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top">QP0L_ALWCKPWRT: The object can be shared with
|
||
|
readers and writers.</td>
|
||
|
</tr>
|
||
|
</table><br><br></dd>
|
||
|
<dt><em>27</em></dt>
|
||
|
<dd>QP0L_ATTR_CCSID: (BINARY(4)) The CCSID of the
|
||
|
data and extended attributes of the object.<br><br></dd>
|
||
|
<dt><em>28</em></dt>
|
||
|
<dd>QP0L_ATTR_SIGNED: (CHAR(1)) Whether an object has
|
||
|
an i5/OS digital signature. This attribute is only returned for *STMF objects.
|
||
|
Valid values are:
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_NOT_SIGNED: The object does not have an
|
||
|
i5/OS digital signature.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top">QP0L_SIGNED: The object does have an i5/OS
|
||
|
digital signature.</td>
|
||
|
</tr>
|
||
|
</table><br><br></dd>
|
||
|
<dt><em>29</em></dt>
|
||
|
<dd>QP0L_ATTR_SYS_SIGNED: (CHAR(1)) Whether the
|
||
|
object was signed by a source that is trusted by the system. This attribute is
|
||
|
only returned for *STMF objects. Note: this attribute is not returned if the
|
||
|
QP0L_ATTR_SIGNED attribute has the value QP0L_NOT_SIGNED. Valid values are:
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_SYSTEM_SIGNED_NO: (CHAR(1)) None of the
|
||
|
signatures came from a source that is trusted by the system.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top">QP0L_SYSTEM_SIGNED_YES: The object was signed by
|
||
|
a source that is trusted by the system. If the object has multiple signatures,
|
||
|
at least one of the signatures came from a source that is trusted by the
|
||
|
system.</td>
|
||
|
</tr>
|
||
|
</table><br><br></dd>
|
||
|
<dt><em>30</em></dt>
|
||
|
<dd>QP0L_ATTR_MULT_SIGS: (CHAR(1)) Whether an object
|
||
|
has more than one i5/OS digital signature. This attribute is only returned for
|
||
|
*STMF objects. Note: this attribute is not returned if the QP0L_ATTR_SIGNED
|
||
|
attribute has the value QP0L_NOT_SIGNED. Valid values are:
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_MULT_SIGS_NO: The object has only one
|
||
|
digital signature.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top">QP0L_MULT_SIGS_YES: The object has more than one
|
||
|
digital signature. If the QP0L_ATTR_SYS_SIGNED attribute has the value
|
||
|
QP0L_SYS_SIGNED, at least one of the signatures is from a source trusted by the
|
||
|
system.</td>
|
||
|
</tr>
|
||
|
</table><br><br></dd>
|
||
|
<dt><em>31</em></dt>
|
||
|
<dd>QP0L_ATTR_DISK_STG_OPT (CHAR(1)) This option
|
||
|
should be used to determine how auxiliary storage is allocated by the system
|
||
|
for the specified object. This option can only be specified for stream files in
|
||
|
the "root" (/), QOpenSys and user-defined file systems. This option will be
|
||
|
ignored for *TYPE1 byte stream files. Valid values are:
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_STG_NORMAL: The auxiliary storage will be
|
||
|
allocated normally. That is, as additional auxiliary storage is required, it
|
||
|
will be allocated in logically sized extents to accommodate the current space
|
||
|
requirement, and anticipated future requirements, while minimizing the number
|
||
|
of disk I/O operations.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top">QP0L_STG_MINIMIZE: The auxiliary storage will be
|
||
|
allocated to minimize the space used by the object. That is, as additional
|
||
|
auxiliary storage is required, it will be allocated in small sized extents to
|
||
|
accommodate the current space requirement. Accessing an object composed of many
|
||
|
small extents may increase the number of disk I/O operations for that
|
||
|
object.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'02'</em></td>
|
||
|
<td align="left" valign="top">QP0L_STG_DYNAMIC: The system will dynamically
|
||
|
determine the optimum auxiliary storage allocation for the object, balancing
|
||
|
space used versus disk I/O operations. For example, if a file has many small
|
||
|
extents, yet is frequently being read and written, then future auxiliary
|
||
|
storage allocations will be larger extents to minimize the number of disk I/O
|
||
|
operations. Or, if a file is frequently truncated, then future auxiliary
|
||
|
storage allocations will be small extents to minimize the space used.
|
||
|
Additionally, information will be maintained on the stream file sizes for this
|
||
|
system and its activity. This file size information will also be used to help
|
||
|
determine the optimum auxiliary storage allocations for this object as it
|
||
|
relates to the other objects sizes.</td>
|
||
|
</tr>
|
||
|
</table><br><br></dd>
|
||
|
<dt><em>32</em></dt>
|
||
|
<dd>QP0L_ATTR_MAIN_STG_OPT: (CHAR(1)) This option
|
||
|
should be used to determine how main storage is allocated and used by the
|
||
|
system for the specified object. This option can only be specified for stream
|
||
|
files in the "root" (/), QOpenSys and user-defined file systems. Valid values
|
||
|
are:
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_STG_NORMAL: The main storage will be
|
||
|
allocated normally. That is, as much main storage as possible will be allocated
|
||
|
and used. This minimizes the number of disk I/O operations since the
|
||
|
information is cached in main storage.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top">QP0L_STG_MINIMIZE: The main storage will be
|
||
|
allocated to minimize the space used by the object. That is, as little main
|
||
|
storage as possible will be allocated and used. This minimizes main storage
|
||
|
usage while increasing the number of disk I/O operations since less information
|
||
|
is cached in main storage.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'02'</em></td>
|
||
|
<td align="left" valign="top">QP0L_STG_DYNAMIC: The system will dynamically
|
||
|
determine the optimum main storage allocation for the object depending on other
|
||
|
system activity and main storage contention. That is, when there is little main
|
||
|
storage contention, as much storage as possible will be allocated and used to
|
||
|
minimize the number of disk I/O operations. And when there is significant main
|
||
|
storage contention, less main storage will be allocated and used to minimize
|
||
|
the main storage contention. This option only has an effect when the storage
|
||
|
pool's paging option is *CALC. When the storage pool's paging option is *FIXED,
|
||
|
the behavior is the same as QP0L_STG_NORMAL. When the object is accessed through a
|
||
|
file server, this option has no effect. Instead, its behavior is the same as
|
||
|
QP0L_STG_NORMAL.</td>
|
||
|
</tr>
|
||
|
</table><br><br></dd>
|
||
|
<dt><em>33</em></dt>
|
||
|
<dd>QP0L_ATTR_DIR_FORMAT: (CHAR(1)) The format of the
|
||
|
specified directory object. Valid values are:
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_DIR_FORMAT_TYPE1: The directory of type *DIR
|
||
|
has the original directory format. The Convert Directory (CVTDIR) command may
|
||
|
be used to convert from the *TYPE1 format to the *TYPE2 format.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top">QP0L_DIR_FORMAT_TYPE2: The directory of type *DIR
|
||
|
is optimized for performance, size, and reliability compared to directories
|
||
|
having the *TYPE1 format.</td>
|
||
|
</tr>
|
||
|
</table><br><br></dd>
|
||
|
<dt><em>34</em></dt>
|
||
|
<dd>QP0L_ATTR_AUDIT: (CHAR(10)) The auditing value
|
||
|
associated with the object.
|
||
|
|
||
|
<p>Valid values are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="15 85" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*NONE</em></td>
|
||
|
<td align="left" valign="top">QP0L_AUD_NONE:
|
||
|
No auditing occurs for this object when it is
|
||
|
read or changed regardless of the user who is accessing the object.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*USRPRF</em></td>
|
||
|
<td align="left" valign="top">QP0L_AUD_USRPRF:
|
||
|
Audit this object only if the current user is
|
||
|
being audited. The current user is tested to determine if auditing should be
|
||
|
done for this object. The user profile can specify if only change access is
|
||
|
audited or if both read and change accesses are audited for this object.
|
||
|
<img src="delta.gif" alt="Start of change">
|
||
|
The OBJAUD parameter of the Change User Auditing (CHGUSRAUD) command
|
||
|
is used to change the auditing for a specific user.
|
||
|
<img src="deltaend.gif" alt="End of change">
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*CHANGE</em></td>
|
||
|
<td align="left" valign="top">QP0L_AUD_CHANGE:
|
||
|
Audit all change access to this object by all
|
||
|
users on the system.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*ALL</em></td>
|
||
|
<td align="left" valign="top">QP0L_AUD_ALL:
|
||
|
Audit all access to this object by all users on
|
||
|
the system. All access is defined as a read or change operation.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<img src="v5r4adelta.gif" alt="Start of change"><em>*NOTAVL</em></td>
|
||
|
<td align="left" valign="top">QP0L_AUD_NOTAVL:
|
||
|
The user performing the operation is not allowed to retrieve the
|
||
|
current auditing value.
|
||
|
<p>
|
||
|
<strong>Note:</strong>
|
||
|
The user must have all object (*ALLOBJ) or audit (*AUDIT)
|
||
|
special authority to retrieve the auditing value.
|
||
|
<img src="v5r4adeltaend.gif" alt="End of change"></p></td>
|
||
|
</tr>
|
||
|
|
||
|
</table><br><br></dd>
|
||
|
<dt>
|
||
|
<em>35</em></dt>
|
||
|
<dd>QP0L_ATTR_CRTOBJSCAN: (CHAR(1)) Whether the
|
||
|
objects created in a directory will be scanned when exit programs are
|
||
|
registered with any of the integrated file system scan-related exit points.
|
||
|
|
||
|
<p>The integrated file system scan-related exit points are:</p>
|
||
|
|
||
|
<ul>
|
||
|
<li><a href="ifscloseexit.htm">Integrated File System Scan on Close Exit
|
||
|
Programs</a></li>
|
||
|
|
||
|
<li><a href="ifsopenexit.htm">Integrated File System Scan on Open Exit
|
||
|
Programs</a>.</li>
|
||
|
</ul>
|
||
|
|
||
|
<p>This attribute can only have been specified for directories in the "root" (/),
|
||
|
QOpenSys and user-defined file systems. Even though this attribute can be set
|
||
|
for *TYPE1 and *TYPE2 directories, only objects which are in
|
||
|
<img src="delta.gif" alt="Start of change">
|
||
|
file systems that have completely converted to the *TYPE2 directory format
|
||
|
<img src="deltaend.gif" alt="End of change">
|
||
|
will actually be scanned, no matter what value is set for this attribute.</p>
|
||
|
|
||
|
<p>Valid values are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_SCANNING_NO: After an object is created in
|
||
|
the directory, the object will not be scanned according to the rules described
|
||
|
in the scan-related exit programs.
|
||
|
<p><strong>Note:</strong>
|
||
|
If the Scan file systems control (QSCANFSCTL) value *NOPOSTRST is not
|
||
|
specified when an object with this attribute is restored, the object will
|
||
|
be scanned at least once after the restore.</p></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top">QP0L_SCANNING_YES: After an object is created in
|
||
|
the directory, the object will be scanned according to the rules described in
|
||
|
the scan-related exit programs if the object has been modified or if the
|
||
|
scanning software has been updated since the last time the object was
|
||
|
scanned.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'02'</em></td>
|
||
|
<td align="left" valign="top">QP0L_SCANNING_CHGONLY: After an object is created
|
||
|
in the directory, the object will be scanned according to the rules described
|
||
|
in the scan-related exit programs only if the object has been modified since
|
||
|
the last time the object was scanned. It will not be scanned if the scanning
|
||
|
software has been updated. This attribute only takes effect if the Scan
|
||
|
file systems control (QSCANFSCTL) system value has *USEOCOATR
|
||
|
specified. Otherwise, it will be treated as if the attribute is
|
||
|
QP0L_SCANNING_YES.
|
||
|
<p><strong>Note:</strong>
|
||
|
If the Scan file systems control (QSCANFSCTL) value *NOPOSTRST is not
|
||
|
specified when an object with this attribute is restored, the object will
|
||
|
be scanned at least once after the restore.</p>
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table><br><br></dd>
|
||
|
<dt>
|
||
|
<em>36</em></dt>
|
||
|
<dd>QP0L_ATTR_SCAN: (CHAR(1)) Whether the object will
|
||
|
be scanned when exit programs are registered with any of the integrated file
|
||
|
system scan-related exit points.
|
||
|
|
||
|
<p>The integrated file system scan-related exit points are:</p>
|
||
|
|
||
|
<ul>
|
||
|
<li><a href="ifscloseexit.htm">Integrated File System Scan on Close Exit
|
||
|
Programs</a></li>
|
||
|
|
||
|
<li><a href="ifsopenexit.htm">Integrated File System Scan on Open Exit
|
||
|
Programs</a>.</li>
|
||
|
</ul>
|
||
|
|
||
|
<p>This attribute can only have been specified for stream files in the "root" (/),
|
||
|
QOpenSys and user-defined file systems. Even though this attribute can be set
|
||
|
for objects in *TYPE1 and *TYPE2 directories, only objects which are in
|
||
|
<img src="delta.gif" alt="Start of change">
|
||
|
file systems that have completely converted to the *TYPE2 directory format
|
||
|
<img src="deltaend.gif" alt="End of change">
|
||
|
will actually be scanned, no matter what value is set for this
|
||
|
attribute.</p>
|
||
|
|
||
|
<p>Valid values are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_SCANNING_NO: The object will not be scanned
|
||
|
according to the rules described in the scan-related exit programs.
|
||
|
<p><strong>Note:</strong>
|
||
|
If the Scan file systems control (QSCANFSCTL) value *NOPOSTRST is not
|
||
|
specified when an object with this attribute is restored, the object will
|
||
|
be scanned at least once after the restore.</p></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top">QP0L_SCANNING_YES: The object will be scanned
|
||
|
according to the rules described in the scan-related exit programs if the
|
||
|
object has been modified or if the scanning software has been updated since the
|
||
|
last time the object was scanned.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'02'</em></td>
|
||
|
<td align="left" valign="top">QP0L_SCANNING_CHGONLY: The object will be scanned
|
||
|
according to the rules described in the scan-related exit programs only if the
|
||
|
object has been modified since the last time the object was scanned. It will
|
||
|
not be scanned if the scanning software has been updated. This attribute only
|
||
|
takes effect if the Scan file systems control (QSCANFSCTL) system
|
||
|
value has *USEOCOATR specified. Otherwise, it will be treated as if the
|
||
|
attribute is QP0L_SCANNING_YES.
|
||
|
<p><strong>Note:</strong>
|
||
|
If the Scan file systems control (QSCANFSCTL) value *NOPOSTRST is not
|
||
|
specified when an object with this attribute is restored, the object will
|
||
|
be scanned at least once after the restore.</p></td>
|
||
|
</tr>
|
||
|
</table><br><br></dd>
|
||
|
<dt><em>37</em></dt>
|
||
|
<dd>QP0L_ATTR_SCAN_INFO: Scan information for this
|
||
|
object. The scan information format is defined in the qp0lstdi.h header file as
|
||
|
data type Qp0l_Scan_Info_t and is shown in the following table:<br>
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<table border width="80%">
|
||
|
<tr>
|
||
|
<th align="left" valign="bottom" colspan="4"><em>Qp0l_Scan_Info_t</em></th>
|
||
|
</tr>
|
||
|
|
||
|
<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">0</td>
|
||
|
<td align="center" valign="top">0</td>
|
||
|
<td align="left" valign="top">CHAR(1)</td>
|
||
|
<td align="left" valign="top">Scan status</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">1</td>
|
||
|
<td align="center" valign="top">1</td>
|
||
|
<td align="left" valign="top">CHAR(1)</td>
|
||
|
<td align="left" valign="top">Scan signatures different</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">2</td>
|
||
|
<td align="center" valign="top">2</td>
|
||
|
<td align="left" valign="top">CHAR(1)</td>
|
||
|
<td align="left" valign="top">Binary scan</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">3</td>
|
||
|
<td align="center" valign="top">3</td>
|
||
|
<td align="left" valign="top">CHAR(1)</td>
|
||
|
<td align="left" valign="top">Reserved</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">4</td>
|
||
|
<td align="center" valign="top">4</td>
|
||
|
<td align="left" valign="top">BINARY(4), UNSIGNED</td>
|
||
|
<td align="left" valign="top">CCSID 1</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">8</td>
|
||
|
<td align="center" valign="top">8</td>
|
||
|
<td align="left" valign="top">BINARY(4), UNSIGNED</td>
|
||
|
<td align="left" valign="top">CCSID 2</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Note: </strong>Historical information is only kept for the
|
||
|
last two CCSIDs which have been scanned, as well as the
|
||
|
binary scan indication.</p>
|
||
|
|
||
|
<p><strong>Binary scan.</strong> This indicates if the object has been scanned
|
||
|
in binary mode when it was previously scanned. This field will be one of the
|
||
|
following values:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_SCAN_NO: The object was not scanned in
|
||
|
binary mode.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top">QP0L_SCAN_YES: The object was scanned in binary
|
||
|
mode. If the object scan status is QP0L_SCAN_SUCCESS, then the object was
|
||
|
successfully scanned in binary. If the object scan status is QP0L_SCAN_FAILURE,
|
||
|
then the object failed the scan in binary.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>CCSID 1.</strong> A CCSID value that the object has been scanned in
|
||
|
if it was previously scanned in a CCSID. If the object scan status is
|
||
|
QP0L_SCAN_SUCCESS, then the object was successfully scanned in this CCSID. If
|
||
|
the object scan status is QP0L_SCAN_FAILURE, then the object failed the scan in
|
||
|
this CCSID. A value of 0 means this field does not apply.</p>
|
||
|
|
||
|
<p><strong>CCSID 2.</strong> A CCSID value that the object has been scanned in
|
||
|
if it was previously scanned in a CCSID. If the object scan status is
|
||
|
QP0L_SCAN_SUCCESS, then the object was successfully scanned in this CCSID. If
|
||
|
the object scan status is QP0L_SCAN_FAILURE, then this field will be 0. A value
|
||
|
of 0 means this field does not apply.</p>
|
||
|
|
||
|
|
||
|
<p><strong>Reserved.</strong> A reserved field. This field will be set to
|
||
|
binary zero.</p>
|
||
|
|
||
|
<p><strong>Scan signatures different.</strong> The scan signatures give an
|
||
|
indication of the level of the scanning software support. For more information,
|
||
|
see <a href="ifsopenexit.htm#HDRSCkey">Scan Key List and Scan Key
|
||
|
Signatures</a> in <a href="ifsopenexit.htm">Integrated File System Scan on Open
|
||
|
Exit Program</a>.</p>
|
||
|
|
||
|
<p>When an object is in an independent ASP group, the object scan signature is
|
||
|
compared to the associated independent ASP group scan signature. When an object
|
||
|
is <strong>not</strong> in an independent ASP group, the object scan signature
|
||
|
is compared to the global scan signature value. This field will be one of the
|
||
|
following values:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_SCAN_NO: The compared signatures are not
|
||
|
different.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top">QP0L_SCAN_YES: The compared signatures are
|
||
|
different.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Scan status.</strong> The scan status associated with this object.
|
||
|
This field will be one of the following values:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_SCAN_REQUIRED: A scan is required for the
|
||
|
object either because it has not yet been scanned by the scan-related exit
|
||
|
programs, or because the objects data or CCSID has been modified since it was
|
||
|
last scanned. Examples of object data or CCSID modifications are: writing to
|
||
|
the object, directly or through memory mapping; truncating the object; clearing
|
||
|
the object; and changing the objects CCSID attribute etc..</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top">QP0L_SCAN_SUCCESS: The object has been scanned by
|
||
|
a scan-related exit program, and at the time of that last scan request, the
|
||
|
object did not fail the scan.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'02'</em></td>
|
||
|
<td align="left" valign="top">QP0L_SCAN_FAILURE: The object has been scanned by
|
||
|
a scan-related exit program, and at the time of that last scan request, the
|
||
|
object failed the scan and the operation did not complete. Once an object has
|
||
|
been marked as a failure, it will not be scanned again until the object's scan
|
||
|
signature is different than the global scan key signature or independent ASP
|
||
|
group scan key signature as appropriate. Therefore, subsequent requests to work
|
||
|
with the object will fail with a scan failure indication
|
||
|
<img src="delta.gif" alt="Start of change">
|
||
|
if that access meets the criteria for when an object is to be scanned.
|
||
|
Examples of requests which will fail are opening the object
|
||
|
with more than write-only access, changing the CCSID of the object,
|
||
|
copying the object etc..
|
||
|
See <a href="ifsopenexit.htm">Integrated File System Scan on Open Exit
|
||
|
Programs</a> and <a href="ifscloseexit.htm">Integrated File System Scan on Close Exit
|
||
|
Programs</a> for the criteria for when an object is to be scanned.
|
||
|
<p><strong>Note:</strong></p>
|
||
|
<ol type="1">
|
||
|
<li>If scanning has been turned off using the QSCANFS system value,
|
||
|
or if no exit programs are registered for a specific exit point,
|
||
|
then any requests which trigger that specific exit point will
|
||
|
return a scan failure indication.</li>
|
||
|
<li>If the scan attribute is set to not scan the object ,
|
||
|
then requests to work with the object will not fail with a
|
||
|
scan failure indication.
|
||
|
<img src="deltaend.gif" alt="End of change"></li>
|
||
|
</ol>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'05'</em></td>
|
||
|
<td align="left" valign="top">QP0L_SCAN_PENDING_CVN: The object is
|
||
|
<img src="delta.gif" alt="Start of change">
|
||
|
in a file system that has not completely converted to the *TYPE2 directory format,
|
||
|
and therefore will not be scanned until the file system is completely
|
||
|
converted. For information on the *TYPE2 directory format,
|
||
|
<img src="deltaend.gif" alt="End of change">
|
||
|
see the <a href=
|
||
|
"../cl/cvtdir.htm">Convert Directory (CVTDIR) command</a> and the
|
||
|
<a href="../ifs/rzaaxkickoff.htm">Integrated file system</a> information
|
||
|
in the Files and file systems topic.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'06'</em></td>
|
||
|
<td align="left" valign="top">QP0L_SCAN_NOT_REQUIRED:
|
||
|
The object does not require any scanning because the object is marked
|
||
|
to not be scanned.
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table><br><br></dd>
|
||
|
<dt>
|
||
|
<em>38</em></dt>
|
||
|
<dd>QP0L_ATTR_ALWSAV: (CHAR(1)) Whether the object
|
||
|
can be saved or not. Valid values are:
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_ALWSAV_NO: This object will not be saved
|
||
|
when using the Save Object (SAV) command or the <a href="QsrSave.htm">
|
||
|
QsrSave()</a> API.
|
||
|
|
||
|
<p>Additionally, if this object is a directory, none of the objects in the
|
||
|
directory's subtree will be saved unless they were explicitly specified as an
|
||
|
object to be saved. The subtree includes all subdirectories and the objects
|
||
|
within those subdirectories.</p>
|
||
|
<p><strong>Note:</strong>
|
||
|
If this attribute is chosen for an object that has private authorities
|
||
|
associated with it, or is chosen for the directory of an object
|
||
|
that has private authorities associated with it, then the
|
||
|
following consideration applies. When the private authorities are saved,
|
||
|
the fact that an object has the QP0L_ALWSAV_NO attribute is not taken into
|
||
|
consideration.
|
||
|
(Private authorities can be saved using either the Save System (SAVSYS) or
|
||
|
Save Security Data (SAVSECDTA) command or the
|
||
|
<a href="qsrsavo.htm">Save Object List (QSRSAVO)</a> API.)
|
||
|
Therefore, when a private authority is restored using the
|
||
|
Restore Authority (RSTAUT) command, message CPD3776 will be seen for each
|
||
|
object that was not saved either because it had the QP0L_ALWSAV_NO
|
||
|
attribute specified, or because the object was not specified on the save and
|
||
|
it was in a directory that had the QP0L_ALWSAV_NO attribute specified.
|
||
|
</p>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top">QP0L_ALWSAV_YES: This object will be saved when
|
||
|
using the Save Object (SAV) command or the <a href="QsrSave.htm">QsrSave()</a>
|
||
|
API. </td>
|
||
|
</tr>
|
||
|
</table><br><br></dd>
|
||
|
<dt>
|
||
|
<em>39</em></dt>
|
||
|
<dd>QP0L_ATTR_RSTDRNMUNL: (CHAR(1))
|
||
|
Restricted renames and unlinks for objects within a directory. Objects can be linked into
|
||
|
a directory that has this attribute set on, but cannot be renamed or unlinked from it
|
||
|
unless one or more of the following are true for the user performing the operation:
|
||
|
<ul><li>The user is the owner of the object.</li>
|
||
|
<li>The user is the owner of the directory.</li>
|
||
|
<li>The user has *ALLOBJ special authority.</li>
|
||
|
</ul>
|
||
|
This restriction only applies to directories.
|
||
|
Other types of object can have this attribute on, however, it will be ignored.
|
||
|
This attribute is equivalent to the S_ISVTX mode bit for an object.
|
||
|
Valid values are:
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_RSTDRNMUNL_OFF: No additional restrictions
|
||
|
for rename and unlink operations.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top">QP0L_RSTDRNMUNL_ON: Additional restrictions
|
||
|
for rename and unlink operations.</td>
|
||
|
</tr>
|
||
|
</table><br><br></dd>
|
||
|
<dt>
|
||
|
<em>40</em></dt>
|
||
|
<dd>QP0L_ATTR_JOURNAL_EXTENDED_INFORMATION: Extended Journaling
|
||
|
information for this object. The journaling information format is defined in
|
||
|
the Qp0lstdi.h header file as data type Qp0l_Journal_Extended_Info_t and is shown in the
|
||
|
following table:<br>
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<table border width="80%">
|
||
|
<tr>
|
||
|
<th align="left" valign="bottom" colspan="4"><em>Qp0l_Journal_Extended_Info_t</em></th>
|
||
|
</tr>
|
||
|
|
||
|
<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%">CHAR(1)</td>
|
||
|
<td align="left" valign="top" width="60%">Journaling status</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">1</td>
|
||
|
<td align="center" valign="top">1</td>
|
||
|
<td align="left" valign="top">CHAR(1)</td>
|
||
|
<td align="left" valign="top">Options</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">2</td>
|
||
|
<td align="center" valign="top">2</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Journal identifier (JID)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">12</td>
|
||
|
<td align="center" valign="top">0C</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Current or last journal name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">22</td>
|
||
|
<td align="center" valign="top">16</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Current or last journal library name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">32</td>
|
||
|
<td align="center" valign="top">20</td>
|
||
|
<td align="left" valign="top">BINARY(4), UNSIGNED</td>
|
||
|
<td align="left" valign="top">Last journaling start time</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">36</td>
|
||
|
<td align="center" valign="top">24</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Starting journal receiver for apply</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">46</td>
|
||
|
<td align="center" valign="top">2E</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Starting journal receiver library name</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">56</td>
|
||
|
<td align="center" valign="top">38</td>
|
||
|
<td align="left" valign="top">CHAR(10)</td>
|
||
|
<td align="left" valign="top">Starting journal receiver ASP device</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">66</td>
|
||
|
<td align="center" valign="top">42</td>
|
||
|
<td align="left" valign="top">CHAR(1)</td>
|
||
|
<td align="left" valign="top">Apply journaled changes required</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">67</td>
|
||
|
<td align="center" valign="top">43</td>
|
||
|
<td align="left" valign="top">CHAR(1)</td>
|
||
|
<td align="left" valign="top">Rollback was ended</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">68</td>
|
||
|
<td align="center" valign="top">44</td>
|
||
|
<td align="left" valign="top">CHAR(12)</td>
|
||
|
<td align="left" valign="top">Reserved</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Apply journaled changes required.</strong> Whether the object was restored with partial transactions which would require an Apply Journaled Changes (APYJRNCHG) command to complete the transaction. A partial transaction can occur if an object was saved using save-while-active requesting that transactions with pending record changes do not have to reach a commit boundary before the object is saved. The valid values are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%"> QP0L_APYJRNCHG_REQ_NO: The object does not have partial transactions.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top"> QP0L_APYJRNCHG_REQ_YES: The object was restored with partial transactions. This object can not be used until the Apply Journaled Changes (APYJRNCHG) or Remove Journaled Changes (RMVJRNCHG) command is used to complete or rollback the partial transactions. </td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
<p><strong>Current or last journal library name.</strong> If the value of the
|
||
|
journaling status is QP0L_JOURNALED, then this field contains the name of the
|
||
|
library containing the currently used journal. If the value of the journaling
|
||
|
status is QP0L_NOT_JOURNALED, then this field contains the name of the library
|
||
|
containing the last used journal. All bytes in this field will be set to binary
|
||
|
zero if this object has never been journaled.</p>
|
||
|
|
||
|
<p><strong>Current or last journal name.</strong> If the value of the
|
||
|
journaling status is QP0L_JOURNALED, then this field contains the name of the
|
||
|
journal currently being used. If the value of the journaling status is
|
||
|
QP0L_NOT_JOURNALED, then this field contains the name of the journal last used
|
||
|
for this object. All bytes in this field will be set to binary zero if this
|
||
|
object has never been journaled.</p>
|
||
|
|
||
|
<p><strong>Journal identifier (JID).</strong> This field associates the object
|
||
|
being journaled with an identifier that can be used on various
|
||
|
journaling-related commands and APIs. </p>
|
||
|
|
||
|
<p><strong>Journaling status.</strong> Current journaling status of the object.
|
||
|
This field will be one of the following values:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_NOT_JOURNALED: The object is currently not
|
||
|
being journaled.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top">QP0L_JOURNALED: The object is currently being
|
||
|
journaled.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Last journaling start time.</strong> The number of seconds since the
|
||
|
Epoch that corresponds to the last date and time for which the object had
|
||
|
journaling started for it. This field will be set to binary zero if this object
|
||
|
has never been journaled.</p>
|
||
|
|
||
|
<p><strong>Options.</strong> This field describes the current journaling
|
||
|
options. This field is composed of several bit flags and contains one or more
|
||
|
of the following bit values:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="15 85" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'80'</em></td>
|
||
|
<td align="left" valign="top">QP0L_JOURNAL_SUBTREE: When this flag is returned,
|
||
|
this object is a directory with IFS journaling subtree semantics. New objects
|
||
|
created within this directory's subtree will inherit the journaling attributes
|
||
|
and options from this directory.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'08'</em></td>
|
||
|
<td align="left" valign="top">QP0L_JOURNAL_OPTIONAL_ENTRIES: When journaling is
|
||
|
active, entries that are considered optional are journaled. The list of
|
||
|
optional journal entries varies for each object type.
|
||
|
See the <a href="../ifs/rzaaxkickoff.htm">Integrated file system</a> information
|
||
|
in the Files and file systems topic for information
|
||
|
regarding these optional entries for various objects.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'20'</em></td>
|
||
|
<td align="left" valign="top">QP0L_JOURNAL_AFTER_IMAGES: When journaling is
|
||
|
active, the image of the object after a change is journaled.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'40'</em></td>
|
||
|
<td align="left" valign="top">QP0L_JOURNAL_BEFORE_IMAGES: When journaling is
|
||
|
active, the image of the object prior to a change is journaled.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Reserved.</strong> A reserved field. This field will be set to
|
||
|
binary zero.</p>
|
||
|
|
||
|
<p><strong>Rollback was ended.</strong> Whether the object had rollback ended prior to completion of a request to roll back a transaction. The valid values are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%"> QP0L_ROLLBACK_END_NO: The object did not have a rollback operation ended prior to completion of a request to roll back a transaction.</td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top"> QP0L_ROLLBACK_END_YES: The object had a rollback operation ended using the "End Rollback" option on the Work with Commitment Definition (WRKCMTDFN) screnn. It is recommended that the object be restored as it can not be used. As a last resort, the Change Journaled Object (CHGJRNOBJ) command can be used to allow the object to be used. Doing this, however, may leave the object in an inconsistent state. </td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Starting journal receiver ASP device.</strong> The name of the ASP for the library that contains the starting journal receiver. This field will be blank if no information is available. The valid values are:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="15 85" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*SYSBAS</em></td>
|
||
|
<td align="left" valign="top"> The journal receiver library resides in the system or user ASPs</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>ASP device</em></td>
|
||
|
<td align="left" valign="top"> The journal receiver library resides in this ASP.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Starting journal receiver for apply.</strong> The oldest journal receiver needed to successfully Apply Journaled Changes (APYJRNCHG). When the Apply journaled Changes required field is set to QP0L_APYJRNCHG_REQ_YES the journal receiver contains the journal entries representing the start of the partial transaction. Otherwise; the journal receiver contains the journal entries representing the start-of-the-save operation. This field will be blank if no information is available. </p>
|
||
|
|
||
|
<p><strong>Starting journal receiver library name.</strong> The name of the library
|
||
|
that contains the journal receiver. This field will be blank if no information
|
||
|
is available.</p>
|
||
|
|
||
|
<img src="delta.gif" alt="Start of change">
|
||
|
<dt><em>41</em></dt>
|
||
|
<dd>QP0L_ATTR_CRTOBJAUD: (CHAR(10)) The create object auditing value
|
||
|
associated with the directory. This is the auditing value given to any objects
|
||
|
created in the directory.
|
||
|
Valid values are:
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="15 85" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*SYSVAL</em></td>
|
||
|
<td align="left" valign="top">QP0L_AUD_SYSVAL:
|
||
|
The object auditing value for the objects
|
||
|
created in the
|
||
|
directory is determined by the system auditing value (QCRTOBJAUD).</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*NONE</em></td>
|
||
|
<td align="left" valign="top">QP0L_AUD_NONE:
|
||
|
No auditing occurs for this object when it is
|
||
|
read or changed regardless of the user who is accessing the object.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*USRPRF</em></td>
|
||
|
<td align="left" valign="top">QP0L_AUD_USRPRF:
|
||
|
Audit this object only if the current user is
|
||
|
being audited. The current user is tested to determine if auditing should be
|
||
|
done for this object. The user profile can specify if only change access is
|
||
|
audited or if both read and change accesses are audited for this object.
|
||
|
The OBJAUD parameter of the Change User Auditing (CHGUSRAUD) command
|
||
|
is used to change the auditing for a specific user.
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*CHANGE</em></td>
|
||
|
<td align="left" valign="top">QP0L_AUD_CHANGE:
|
||
|
Audit all change access to this object by all
|
||
|
users on the system.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*ALL</em></td>
|
||
|
<td align="left" valign="top">QP0L_AUD_ALL:
|
||
|
Audit all access to this object by all users on
|
||
|
the system. All access is defined as a read or change operation.</td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>*NOTAVL</em></td>
|
||
|
<td align="left" valign="top">QP0L_AUD_NOTAVL:
|
||
|
The user performing the operation is not allowed to retrieve the
|
||
|
current create object auditing value.
|
||
|
<p><strong>Note:</strong>
|
||
|
The user must have all object (*ALLOBJ) or audit (*AUDIT)
|
||
|
special authority to retrieve the create object auditing value.
|
||
|
</p></td>
|
||
|
</tr>
|
||
|
|
||
|
|
||
|
</table>
|
||
|
|
||
|
<img src="deltaend.gif" alt="End of change"><br><br></dd>
|
||
|
|
||
|
<dd><img src="delta.gif" alt="Start of change"></dd>
|
||
|
<dt><em>42</em></dt>
|
||
|
<dd>QP0L_ATTR_SYSTEM_USE: (CHAR(1)) Whether the file has a special use by the system.
|
||
|
This attribute is valid only for stream files. Possible values are:
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_SYSUSE_NONE: The file is a generic stream file.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top">QP0L_SYSUSE_VRTVOL: The file is a virtual volume. Examples include tape and optical virtual volumes. </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'02'</em></td>
|
||
|
<td align="left" valign="top">QP0L_SYSUSE_NWSSTG: The file is a network server storage space.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
<img src="deltaend.gif" alt="End of change">
|
||
|
<br>
|
||
|
|
||
|
<dt><em>300</em></dt>
|
||
|
<dd>QP0L_ATTR_SUID: (CHAR(1)) Set effective user ID
|
||
|
(UID) at execution time. This value is ignored if the specified object is a
|
||
|
directory. Valid values are:
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_SUID_OFF: The user ID (UID) is not set at
|
||
|
execution time.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top">QP0L_SUID_ON: The object owner is the effective
|
||
|
user ID (UID) at execution time.</td>
|
||
|
</tr>
|
||
|
</table><br><br></dd>
|
||
|
<dt><em>301</em></dt>
|
||
|
<dd>QP0L_ATTR_SGID: (CHAR(1)) Set effective group ID
|
||
|
(GID) at execution time. Valid values are:
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="10%"><em>x'00'</em></td>
|
||
|
<td align="left" valign="top" width="90%">QP0L_SGID_OFF: If the object is a file, the group
|
||
|
ID (GID) is not set at execution time. If the object is a directory in the
|
||
|
"root" (/), QOpenSys, and user-defined file systems, the group ID (GID) of objects
|
||
|
created in the directory is set to the effective GID of the thread creating the
|
||
|
object. This value cannot be set for other file systems.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>x'01'</em></td>
|
||
|
<td align="left" valign="top">QP0L_SGID_ON: If the object is a file, the group
|
||
|
ID (GID) is set at execution time. If the object is a directory, the group ID
|
||
|
(GID) of objects created in the directory is set to the GID of the parent
|
||
|
directory.</td>
|
||
|
</tr>
|
||
|
</table></dd>
|
||
|
|
||
|
|
||
|
</dl>
|
||
|
|
||
|
|
||
|
<p><strong>Number of requested attributes.</strong> The total number of
|
||
|
requested attributes that <strong>Qp0lGetAttr()</strong> returns. This field is
|
||
|
required when the <em>Attr_Array_ptr</em> parameter is not NULL and must equal
|
||
|
the number of constants in the array to which it points. When this field is
|
||
|
zero, <strong>Qp0lGetAttr()</strong> returns all the attributes that are
|
||
|
supported by the API and that are available for the object.</p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong><em>Buffer_ptr</em></strong></dt>
|
||
|
|
||
|
<dd>(Input) A pointer to a buffer that the caller allocates for <strong>
|
||
|
Qp0lGetAttr()</strong> to return the requested data. The caller also sets the
|
||
|
<em>Buffer_Size_Provided</em> parameter to the number of bytes that are
|
||
|
allocated for this buffer.
|
||
|
|
||
|
<p>If the buffer provided is not large enough to hold all of the requested
|
||
|
data, <strong>Qp0lGetAttr()</strong> fills the buffer with as much data as
|
||
|
possible and sets the value pointed to by the <em>Buffer_Size_Needed_ptr</em>
|
||
|
parameter equal to the number of bytes required for all of the requested data
|
||
|
to be returned.</p>
|
||
|
|
||
|
<p>When the <em>Buffer_ptr</em> is NULL, <strong>Qp0lGetAttr()</strong> returns
|
||
|
the total number of bytes needed to hold all of the requested attributes and
|
||
|
sets the <em>Buffer_Size_Needed_ptr</em> parameter to point to this value.</p>
|
||
|
|
||
|
<p><strong>Qp0lGetAttr()</strong> identifies each entry that it returns in the
|
||
|
buffer with the constant that the user supplied in the input structure pointed
|
||
|
to by the <em>Attr_Array_ptr</em> parameter. <strong>Qp0lGetAttr()</strong>
|
||
|
returns this constant in the Attribute identification field. The constant must
|
||
|
be used to identify the returned attribute because the attributes are returned
|
||
|
in any order.</p>
|
||
|
|
||
|
<p><strong>Qp0lGetAttr()</strong> fills the buffer with an entry for each
|
||
|
requested attribute in the following format:</p>
|
||
|
|
||
|
<table border width="80%">
|
||
|
<tr>
|
||
|
<th align="left" valign="bottom" colspan="4"><em><a name="Table_1-7">Buffer
|
||
|
Pointer</a></em></th>
|
||
|
</tr>
|
||
|
|
||
|
<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%">Offset to next attribute entry</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">Attribute identification</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">Size of attribute data</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">12</td>
|
||
|
<td align="center" valign="top">C</td>
|
||
|
<td align="left" valign="top">CHAR(4)</td>
|
||
|
<td align="left" valign="top">Reserved</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">16</td>
|
||
|
<td align="center" valign="top">10</td>
|
||
|
<td align="left" valign="top">CHAR(*)</td>
|
||
|
<td align="left" valign="top">Attribute data</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Attribute data.</strong> The attribute data that was requested.</p>
|
||
|
|
||
|
<p><strong>Attribute identification.</strong> The constant that identifies the
|
||
|
returned attribute. Valid values follow and are the same constants as provided
|
||
|
by the caller of <strong>Qp0lGetAttr()</strong>, pointed to by the <em>
|
||
|
Attr_Array_ptr</em> parameter.</p>
|
||
|
|
||
|
<p>See the <a href="#attr_array_ptr"><em>Attr_Array_ptr</em></a> parameter for
|
||
|
descriptions of each of these attribute values.</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>0</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_OBJTYPE</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>1</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_DATA_SIZE</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>2</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_ALLOC_SIZE</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>3</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_EXTENDED_ATTR_SIZE</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>4</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_CREATE_TIME</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>5</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_ACCESS_TIME</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>6</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_CHANGE_TIME</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>7</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_MODIFY_TIME</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>8</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_STG_FREE</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>9</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_CHECKED_OUT</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>10</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_LOCAL_REMOTE</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>11</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_AUTH</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>12</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_FILE_ID</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>13</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_ASP</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>14</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_DATA_SIZE_64</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>15</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_ALLOC_SIZE_64</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>16</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_USAGE_INFORMATION</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>17</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_PC_READ_ONLY</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>18</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_PC_HIDDEN</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>19</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_PC_SYSTEM</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>20</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_PC_ARCHIVE</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>21</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_SYSTEM_ARCHIVE</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>22</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_CODEPAGE</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>23</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_FILE_FORMAT</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>24</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_UDFS_DEFAULT_FORMAT</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>25</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_JOURNAL_INFORMATION</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>26</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_ALWCKPWRT</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>27</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_CCSID</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>28</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_SIGNED</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>29</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_SYS_SIGNED</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>30</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_MULT_SIGS</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>31</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_DISK_STG_OPT</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>32</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_MAIN_STG_OPT</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>33</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_DIR_FORMAT</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>34</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_AUDIT</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>35</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_CRTOBJSCAN </td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>36</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_SCAN </td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>37</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_SCAN_INFO </td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>38</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_ALWSAV </td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>39</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_RSTDRNMUNL</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>40</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_JOURNAL_EXTENDED_INFORMATION</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><img src="delta.gif" alt="Start of change">
|
||
|
<em>41</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_CRTOBJAUD
|
||
|
<img src="deltaend.gif" alt="End of change"></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><img src="delta.gif" alt="Start of change">
|
||
|
<em>42</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_SYSTEM_USE
|
||
|
<img src="deltaend.gif" alt="End of change"></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>300</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_SUID</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>301</em></td>
|
||
|
<td align="left" valign="top">QP0L_ATTR_SGID</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p><strong>Offset to next attribute entry.</strong> The offset to the next
|
||
|
attribute entry in the buffer. This offset is relative to the start of the
|
||
|
buffer. An offset of zero means that no more attribute entries follow.</p>
|
||
|
|
||
|
<p><strong>Reserved.</strong> A reserved field set to binary zero.</p>
|
||
|
|
||
|
<p><strong>Size of attribute data.</strong> The total size of all the data for
|
||
|
this attribute. The special value of 0 in this field indicates that the
|
||
|
attribute is not supported by the file system in which the object is stored.
|
||
|
The attribute data is padded with hexadecimal zeros. The size indicated in this
|
||
|
field does not include the padding bytes.</p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong><em>Buffer_Size_Provided</em></strong></dt>
|
||
|
|
||
|
<dd>(Input) The number of bytes the caller allocates in a buffer for the return
|
||
|
of requested data. The buffer is pointed to by the <em>Buffer_ptr</em>
|
||
|
parameter.
|
||
|
|
||
|
<p>If this size is set to zero or is not large enough to hold all of the
|
||
|
requested data, <strong>Qp0lGetAttr()</strong> fills the buffer with as much
|
||
|
data as possible and sets the value pointed to by the <em>
|
||
|
Buffer_Size_Needed_ptr</em> parameter equal to the number of bytes required for
|
||
|
all of the requested data to be returned.</p>
|
||
|
<p>
|
||
|
When determining the appropriate allocation, the caller should assume
|
||
|
that the returned attribute
|
||
|
data will be aligned on a minimum of an 8-byte boundary.</p>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong><em>Buffer_Size_Needed_ptr</em></strong></dt>
|
||
|
|
||
|
<dd>(Output) A pointer to the number of bytes that the caller needs to allocate
|
||
|
for <strong>Qp0lGetAttr()</strong> to return all of the requested data.<br>
|
||
|
<br>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong><em>Num_Bytes_Returned_ptr</em></strong></dt>
|
||
|
|
||
|
<dd>(Output) A pointer to the actual number of bytes of data returned in the
|
||
|
user buffer. This field is zero if the <em>Buffer_ptr</em> parameter is
|
||
|
NULL.<br>
|
||
|
<br>
|
||
|
</dd>
|
||
|
|
||
|
<dt><strong><em>Follow_Symlnk</em></strong></dt>
|
||
|
|
||
|
<dd>(Input) If the last component in the <em>Path_Name</em> is a symbolic link,
|
||
|
this parameter determines if the symbolic link or the path contained in the
|
||
|
symbolic link is acted upon: Valid values are:
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>0</em></td>
|
||
|
<td align="left" valign="top">QP0L_DONOT_FOLLOW_SYMLNK: A symbolic link in the
|
||
|
last component is not followed. Attributes of the symbolic link object are
|
||
|
returned.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>1</em></td>
|
||
|
<td align="left" valign="top">QP0L_FOLLOW_SYMLNK: A symbolic link in the last
|
||
|
component is followed. The attributes of the object contained in the symbolic
|
||
|
link are returned.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3>Authorities</h3>
|
||
|
|
||
|
<p><strong>Note:</strong> Adopted authority is not used.</p>
|
||
|
|
||
|
<table border width="100%">
|
||
|
<tr>
|
||
|
<th align="left" valign="bottom" colspan="3"><em><a name="TBLASWP1G">
|
||
|
Authorization Required for Qp0lGetAttr()</a></em></th>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<th align="left" valign="bottom">Object Referred to</th>
|
||
|
<th align="left" valign="bottom">Authority Required</th>
|
||
|
<th align="left" valign="bottom"><em>errno</em></th>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" width="65%">Each directory, preceding the last
|
||
|
component, in the <em>Path_Name</em>
|
||
|
<img src="v5r4adelta.gif" alt="Start of change">
|
||
|
(except when only QP0L_ATTR_AUDIT and/or QP0L_ATTR_CRTOBJAUD
|
||
|
are requested)
|
||
|
<img src="v5r4adeltaend.gif" alt="End of change">
|
||
|
</td>
|
||
|
<td align="left" valign="top" width="20%">*X</td>
|
||
|
<td align="left" valign="top" width="15%">EACCES</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">Object, when retrieving the QP0L_ATTR_AUTH
|
||
|
attribute</td>
|
||
|
<td align="left" valign="top">*OBJMGT</td>
|
||
|
<td align="left" valign="top">EACCES</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top" colspan="3"><strong>Note:</strong> If the file
|
||
|
system supports *ALLOBJ special authority and if you have *ALLOBJ special
|
||
|
authority, you do not need the listed object authority.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3>Return Value</h3>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="5 95" -->
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>0</em></td>
|
||
|
<td align="left" valign="top"><strong>Qp0lGetAttr()</strong> was
|
||
|
successful.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top"><em>-1</em></td>
|
||
|
<td align="left" valign="top"><strong>Qp0lGetAttr()</strong> was not
|
||
|
successful. The <em>errno</em> global variable is set to indicate the
|
||
|
error.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3>Error Conditions</h3>
|
||
|
|
||
|
<p>If <strong>Qp0lGetAttr()</strong> is not successful, <em>errno</em>
|
||
|
indicates one of the following errors:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="25 75" -->
|
||
|
|
||
|
<tr>
|
||
|
<th align="left" valign="bottom">Error condition</th>
|
||
|
<th align="left" valign="bottom">Additional information</th>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#EACCES">EACCES</a>]</em></td>
|
||
|
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
<p>If you are accessing a remote file through the Network File System, update
|
||
|
operations to file permissions at the server are not reflected at the client
|
||
|
until updates to data that is stored locally by the Network File System take
|
||
|
place. (Several options on the Add Mounted File System (ADDMFS) command
|
||
|
determine the time between refresh operations of local data.) Access to a
|
||
|
remote file may also fail due to different mappings of user IDs (UID) or group
|
||
|
IDs (GID) on the local and remote systems.</p>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#EAGAIN">EAGAIN</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#EBADFID">EBADFID</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#EBADNAME">EBADNAME</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#EBUSY">EBUSY</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#ECANCEL">ECANCEL</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#ECONVERT">ECONVERT</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#EDAMAGE">EDAMAGE</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#EFAULT">EFAULT</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#EINTR">EINTR</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#EINVAL">EINVAL</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#EIO">EIO</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#ELOOP">ELOOP</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#ENAMETOOLONG">ENAMETOOLONG</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#ENOENT">ENOENT</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#ENOMEM">ENOMEM</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#ENOSPC">ENOSPC</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#ENOTAVAIL">ENOTAVAIL</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#ENOTDIR">ENOTDIR</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#ENOTSAFE">ENOTSAFE</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#ENOTSUP">ENOTSUP</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#EOFFLINE">EOFFLINE</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#EOVERFLOW">EOVERFLOW</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#EPERM">EPERM</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#EROOBJ">EROOBJ</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#EUNKNOWN">EUNKNOWN</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p>Additionally, if interaction with a file server is required to access the
|
||
|
object, <em>errno</em> could also indicate one of the following errors:</p>
|
||
|
|
||
|
<table cellpadding="5">
|
||
|
<!-- cols="25 75" -->
|
||
|
|
||
|
<tr>
|
||
|
<th align="left" valign="bottom">Error condition</th>
|
||
|
<th align="left" valign="bottom">Additional information</th>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#EADDRNOTAVAIL">EADDRNOTAVAIL</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#ECONNABORTED">ECONNABORTED</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#ECONNREFUSED">ECONNREFUSED</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#ECONNRESET">ECONNRESET</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#EHOSTDOWN">EHOSTDOWN</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#EHOSTUNREACH">EHOSTUNREACH</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#ENETDOWN">ENETDOWN</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#ENETRESET">ENETRESET</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#ENETUNREACH">ENETUNREACH</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#ESTALE">ESTALE</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
<p>If you are accessing a remote file through the Network File System, the file
|
||
|
may have been deleted at the server.</p>
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#ETIMEDOUT">ETIMEDOUT</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">
|
||
|
<em>[<a href="unix14.htm#EUNATCH">EUNATCH</a>]</em></td>
|
||
|
|
||
|
<td align="left" valign="top">
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3>Error Messages</h3>
|
||
|
|
||
|
<p>The following messages may be sent from this function:</p>
|
||
|
|
||
|
<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">CPE3418 E</td>
|
||
|
<td align="left" valign="top">Possible APAR condition or hardware failure.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPFA0D4 E</td>
|
||
|
<td align="left" valign="top">File system error occurred. Error number
|
||
|
&1</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF3CF2 E</td>
|
||
|
<td align="left" valign="top">Error(s) occurred during running of &1
|
||
|
API.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF9872 E</td>
|
||
|
<td align="left" valign="top">Program or service program &1 in library
|
||
|
&2 ended. Reason code &3.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3><a name="usage_notes">Usage Notes</a></h3>
|
||
|
|
||
|
<ol>
|
||
|
<li>This function will fail with error code [ENOTSAFE] when all the following
|
||
|
conditions are true:<br>
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<ul>
|
||
|
<li>Where multiple threads exist in the job.<br>
|
||
|
<br>
|
||
|
</li>
|
||
|
|
||
|
<li>The object on which this function is operating resides in a file system
|
||
|
that is not threadsafe. Only the following file systems are threadsafe for this
|
||
|
function:
|
||
|
|
||
|
<ul>
|
||
|
<li>"Root" (/)</li>
|
||
|
|
||
|
<li>QOpenSys</li>
|
||
|
|
||
|
<li>User-defined</li>
|
||
|
|
||
|
<li>QNTC</li>
|
||
|
|
||
|
<li>QSYS.LIB</li>
|
||
|
|
||
|
<li>Independent ASP QSYS.LIB</li>
|
||
|
|
||
|
<li>QOPT</li>
|
||
|
|
||
|
<li>Network File System</li>
|
||
|
|
||
|
|
||
|
<li>QFileSvr.400</li>
|
||
|
|
||
|
</ul>
|
||
|
</li>
|
||
|
</ul>
|
||
|
|
||
|
<br>
|
||
|
</li>
|
||
|
|
||
|
<li>
|
||
|
"Root" (/), QOpenSys, and User-Defined File System Differences
|
||
|
<p>The QP0L_ATTR_ALLOC_SIZE and QP0L_ATTR_ALLOC_SIZE_64 values can be influenced by
|
||
|
the setting of the disk storage option attribute. See
|
||
|
QP0L_ATTR_DISK_STG_OPT for more information.</p></li>
|
||
|
|
||
|
<li>QSYS.LIB and Independent ASP QSYS.LIB File System Differences
|
||
|
|
||
|
<p><strong>Qp0lGetAttr()</strong> could return zero for the
|
||
|
QP0L_ATTR_ACCESS_TIME value (in the buffer area) under some conditions.</p>
|
||
|
|
||
|
<p>Refer to the <a href="../rbam6/clpro.htm">CL Programming</a> topic for more
|
||
|
information regarding which object types maintain usage information that is
|
||
|
returned for the QP0L_ATTR_USAGE_INFORMATION attribute.</p>
|
||
|
|
||
|
<p>When <strong>Qp0lGetAttr()</strong> is performed on a physical file member,
|
||
|
the QP0L_ATTR_JOURNAL_INFORMATION or QP0L_ATTR_JOURNAL_EXTEND_INFORMATION
|
||
|
attribute will contain journaling information
|
||
|
applicable to the physical file that contains the member.</p>
|
||
|
</li>
|
||
|
<li>
|
||
|
<img src="v5r4adelta.gif" alt="Start of change">
|
||
|
QFileSvr.400 File System Differences
|
||
|
<p>
|
||
|
If only the QP0L_ATTR_AUDIT or QP0L_ATTR_CRTOBJAUD attributes are requested,
|
||
|
the QSECOFR user profiles on the source and
|
||
|
target system must be enabled, and their passwords
|
||
|
must match for the operation to succeed.
|
||
|
<img src="v5r4adeltaend.gif" alt="End of change"></p>
|
||
|
</li>
|
||
|
|
||
|
<li>
|
||
|
<img src="delta.gif" alt="Start of change">
|
||
|
Network File System Differences
|
||
|
<p>
|
||
|
If the user has the appropriate authority when requesting
|
||
|
the QP0L_ATTR_AUDIT attribute for objects in the Network File System,
|
||
|
the value QP0L_AUD_NONE will always be returned.
|
||
|
<img src="deltaend.gif" alt="End of change"></p>
|
||
|
</li>
|
||
|
</ol>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3>Related Information</h3>
|
||
|
|
||
|
<ul>
|
||
|
<li>The <<strong>Qp0lstdi.h</strong>> file (see <a href="unix13.htm">
|
||
|
Header Files for UNIX-Type Functions</a>)
|
||
|
</li>
|
||
|
|
||
|
<li>The <<strong>qlg.h</strong>> file (see <a href="unix13.htm">Header
|
||
|
Files for UNIX-Type Functions</a>)
|
||
|
</li>
|
||
|
|
||
|
<li><a href="chmod.htm">chmod()</a>--Change File Authorizations
|
||
|
</li>
|
||
|
|
||
|
<li><a href=
|
||
|
"ifscloseexit.htm">Integrated File System Scan on Close Exit Programs</a>
|
||
|
</li>
|
||
|
|
||
|
<li><a href=
|
||
|
"ifsopenexit.htm">Integrated File System Scan on Open Exit Programs</a>.
|
||
|
</li>
|
||
|
|
||
|
<li><a href="fstat.htm">fstat()</a>--Get File Information by Descriptor
|
||
|
</li>
|
||
|
|
||
|
<li><a href="lstat.htm">lstat()</a>--Get File or Link Information
|
||
|
</li>
|
||
|
|
||
|
<li><a href="qgetattru.htm">QlgGetAttr()</a>--Get Attributes (using NLS-enabled
|
||
|
path name)
|
||
|
</li>
|
||
|
|
||
|
<li><a href="statu.htm">QlgStat()</a>--Get File Information (using NLS-enabled
|
||
|
path name)
|
||
|
</li>
|
||
|
|
||
|
<li><a href="lstatu.htm">QlgLstat()</a>--Get File or Link Information (using
|
||
|
NLS-enabled path name)
|
||
|
</li>
|
||
|
|
||
|
<li><a href="qsetattr.htm">Qp0lSetAttr()</a>--Set Attributes
|
||
|
</li>
|
||
|
|
||
|
<li><a href=
|
||
|
"qwcrsval.htm">Retrieve System Values (QWCRSVAL) API</a>
|
||
|
|
||
|
</li>
|
||
|
|
||
|
<li><a href="stat.htm">stat()</a>--Get File Information</li>
|
||
|
</ul>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<h3>Example</h3>
|
||
|
|
||
|
<p>See <a href="../apiref/aboutapis.htm#codedisclaimer">Code disclaimer information</a>
|
||
|
for information pertaining to code examples.</p>
|
||
|
|
||
|
<p>Following is an example showing a call to <strong>Qp0lGetAttr()</strong>.
|
||
|
The example also shows a call to <strong>Qp0lSaveStgFree()</strong>.</p>
|
||
|
|
||
|
<pre>
|
||
|
/*****************************************************************/
|
||
|
#include "Qp0lstdi.h"
|
||
|
#include <stdio.h>
|
||
|
#include <errno.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <sys/types.h>
|
||
|
#include <qusec.h>
|
||
|
#include <time.h>
|
||
|
|
||
|
int Save(Qp0l_Pathnames_t *Path_name_ptr)
|
||
|
{
|
||
|
/**************************************************************/
|
||
|
/* No function here in the example */
|
||
|
/**************************************************************/
|
||
|
};
|
||
|
|
||
|
void SaveAnObject(Qp0l_Pathnames_t *Path_name_ptr,
|
||
|
int *Return_code_ptr,
|
||
|
int *Return_value_ptr,
|
||
|
void *Function_CtlBlk_ptr)
|
||
|
{
|
||
|
/**************************************************************/
|
||
|
/* This function saves a file and its hard links to tape. */
|
||
|
/**************************************************************/
|
||
|
int rc;
|
||
|
|
||
|
if ((Path_name_ptr == (Qp0l_Pathnames_t *)NULL) ||
|
||
|
(Path_name_ptr->Number_Of_Names == 0))
|
||
|
{
|
||
|
printf("In User Exit Program with null Path \n");
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
/* This example calls a function (Save) that could call the */
|
||
|
/* Save Object (QsrSave) API. The QsrSave API is designed to */
|
||
|
/* save a copy of one or more objects that can be used in the */
|
||
|
/* integrated file system. For details on using QsrSave, see */
|
||
|
/* the Backup and Recovery API part. */
|
||
|
|
||
|
rc = (Save(Path_name_ptr));
|
||
|
|
||
|
*Return_code_ptr = rc;
|
||
|
*Return_value_ptr = errno;
|
||
|
|
||
|
if (rc == 0)
|
||
|
{
|
||
|
/* Other processing for a successfully saved object. */
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
/* Optional processing such as storing information */
|
||
|
/* to be returned to the caller in the function */
|
||
|
/* control block area, or building a list of the */
|
||
|
/* files whose save attempts failed, or other. */
|
||
|
}
|
||
|
}
|
||
|
return;
|
||
|
} /* end SaveAnObject exit program */
|
||
|
|
||
|
int main (int argc, char *argv[])
|
||
|
{
|
||
|
#define MYPN "ADIR/ASTMF"
|
||
|
const char US_const[3]= "US";
|
||
|
const char Language_const[4]="ENU";
|
||
|
const char Path_Name_Del_const[2] = "/";
|
||
|
|
||
|
struct pnstruct
|
||
|
{
|
||
|
Qlg_Path_Name_T qlg_struct;
|
||
|
char pn[1];
|
||
|
};
|
||
|
struct pnstruct pns;
|
||
|
struct pnstruct *pns_ptr = NULL;
|
||
|
|
||
|
struct attrStruct
|
||
|
{
|
||
|
Qp0l_AttrTypes_List_t attr_struct;
|
||
|
uint AttrTypes[10];
|
||
|
};
|
||
|
struct attrStruct Attr_types_ptr;
|
||
|
Qp0l_Attr_Header_t *attrPtr;
|
||
|
char *attrValp;
|
||
|
|
||
|
Qp0l_StgFree_Function_t User_function;
|
||
|
|
||
|
struct
|
||
|
{
|
||
|
uint AnyData_to_the_exitprogram;
|
||
|
uint AnyData_not_processed_by_the_API;
|
||
|
} CtlBlkAreaName;
|
||
|
|
||
|
time_t mytime;
|
||
|
char BufferArea[250];
|
||
|
unsigned int buff_size_provided;
|
||
|
unsigned int buff_size_needed = 0;
|
||
|
unsigned int num_bytes_returned = 0;
|
||
|
unsigned int follow_sym;
|
||
|
int done=0;
|
||
|
int rc;
|
||
|
int returned_data_index = 0;
|
||
|
|
||
|
/**************************************************************/
|
||
|
/* Initialize Get Attributes Parameters */
|
||
|
/**************************************************************/
|
||
|
memset((void*)&pns, 0x00, sizeof(struct pnstruct));
|
||
|
pns.qlg_struct.CCSID = 37;
|
||
|
memcpy(pns.qlg_struct.Country_ID,US_const,2);
|
||
|
memcpy(pns.qlg_struct.Language_ID,Language_const,3);
|
||
|
pns.qlg_struct.Path_Type = 0;
|
||
|
pns.qlg_struct.Path_Length = sizeof(MYPN)-1;
|
||
|
memcpy(pns.qlg_struct.Path_Name_Delimiter,Path_Name_Del_const,1);
|
||
|
memcpy(pns.pn,MYPN,sizeof(MYPN));
|
||
|
memset((void *)&Attr_types_ptr, 0x00,sizeof(struct attrStruct));
|
||
|
pns_ptr = &pns;
|
||
|
|
||
|
Attr_types_ptr.attr_struct.Number_Of_ReqAttrs = 2;
|
||
|
Attr_types_ptr.AttrTypes[0] = QP0L_ATTR_ACCESS_TIME;
|
||
|
Attr_types_ptr.AttrTypes[1] = QP0L_ATTR_STG_FREE;
|
||
|
|
||
|
buff_size_provided = 250;
|
||
|
|
||
|
follow_sym = QP0L_FOLLOW_SYMLNK;
|
||
|
|
||
|
/**************************************************************/
|
||
|
/* Call the Qp0lGetAttr() API to retrieve attributes to */
|
||
|
/* determine if selection criteria can be met for calling */
|
||
|
/* the Qp0lSaveStgFree() API. */
|
||
|
/**************************************************************/
|
||
|
rc = Qp0lGetAttr((Qlg_Path_Name_T *)&pns,
|
||
|
(Qp0l_AttrTypes_List_t *)&Attr_types_ptr,
|
||
|
BufferArea,
|
||
|
buff_size_provided,
|
||
|
&buff_size_needed,
|
||
|
&num_bytes_returned,
|
||
|
follow_sym);
|
||
|
if (rc == 0) /* check API return code */
|
||
|
{
|
||
|
/* Must first check if any data was returned. */
|
||
|
if (num_bytes_returned > 0)
|
||
|
{
|
||
|
attrPtr = (Qp0l_Attr_Header_t *)BufferArea;
|
||
|
while(!done)
|
||
|
{
|
||
|
attrValp = (char *)attrPtr +
|
||
|
sizeof(Qp0l_Attr_Header_t); /* Point to attr value */
|
||
|
/******************************************************/
|
||
|
/* The following code prints the two attributes that */
|
||
|
/* were returned. Add more code here, for example, */
|
||
|
/* to determine if the returned attributes meet */
|
||
|
/* the criteria or policies for storage freeing. */
|
||
|
/******************************************************/
|
||
|
printf ("******************************************\n");
|
||
|
printf ("Attr ID #%d = %d - ",
|
||
|
returned_data_index,
|
||
|
attrPtr->Attr_ID);
|
||
|
if(attrPtr->Attr_Size > 0)
|
||
|
{
|
||
|
switch (attrPtr->Attr_ID)
|
||
|
{
|
||
|
case QP0L_ATTR_ACCESS_TIME:
|
||
|
printf("QP0L_ATTR_ACCESS_TIME\n");
|
||
|
memcpy((void *)&mytime,
|
||
|
(void *)attrValp,
|
||
|
attrPtr->Attr_Size);
|
||
|
printf ("%s", ctime(&mytime));
|
||
|
break;
|
||
|
case QP0L_ATTR_STG_FREE:
|
||
|
printf ("QP0L_ATTR_STG_FREE\n");
|
||
|
switch (attrValp[0])
|
||
|
{
|
||
|
case QP0L_SYS_STG_FREE:
|
||
|
printf ("--Is storage freed--\n");
|
||
|
break;
|
||
|
case QP0L_SYS_NOT_STG_FREE:
|
||
|
printf ("--Is not storage freed--\n");
|
||
|
break;
|
||
|
default:
|
||
|
printf ("Invalid data: %d.\n",
|
||
|
attrValp[0]);
|
||
|
break;
|
||
|
}
|
||
|
break;
|
||
|
default:
|
||
|
printf ("Undefined return type (attr id unknown.)\n");
|
||
|
break;
|
||
|
} /* end switch */
|
||
|
}
|
||
|
else
|
||
|
printf("Attribute has no value\n");
|
||
|
printf("***Size of this attr's data: %d\n",
|
||
|
attrPtr->Attr_Size);
|
||
|
printf("***Offset to next attr: %d\n",
|
||
|
attrPtr->Next_Attr_Offset);
|
||
|
++returned_data_index;
|
||
|
if(attrPtr->Next_Attr_Offset > 0) /* If more data */
|
||
|
attrPtr = (Qp0l_Attr_Header_t *) /* Set attribute */
|
||
|
&(BufferArea[attrPtr->Next_Attr_Offset]); /* pointer */
|
||
|
else /* No more data */
|
||
|
done = 1; /* End the loop */
|
||
|
}
|
||
|
|
||
|
/**********************************************************/
|
||
|
/* Initialize Save Storage Free Parameters. The path */
|
||
|
/* name parameter was already initialized as part of the */
|
||
|
/* call to Qp0lGetAttr() API and is assumed, in this */
|
||
|
/* example, to be the same pathname. Both APIs require */
|
||
|
/* the same path name format. */
|
||
|
/**********************************************************/
|
||
|
memset((void *)&User_function,0x00,sizeof(Qp0l_StgFree_Function_t));
|
||
|
User_function.Mltthdacn[0] = QP0L_MLTTHDACN_NOMSG;
|
||
|
User_function.Function_Type = QP0L_USER_FUNCTION_PTR;
|
||
|
User_function.Procedure = &SaveAnObject;
|
||
|
|
||
|
rc = Qp0lSaveStgFree((Qlg_Path_Name_T *)&pns,
|
||
|
&User_function,
|
||
|
&CtlBlkAreaName);
|
||
|
if(rc == 0)
|
||
|
printf("Qp0lSaveStgFree() Successful!");
|
||
|
else
|
||
|
{/* Unsuccessful return from Qp0lSaveStgFree() API. */
|
||
|
/* The following code prints the errno value message. */
|
||
|
rc = errno;
|
||
|
printf("ERROR on Qp0lSaveStgFree(): error = %d\n", rc);
|
||
|
perror("Error message");
|
||
|
}
|
||
|
} /* if (num_bytes_returned > 0) */
|
||
|
else
|
||
|
rc = EUNKNOWN;
|
||
|
} /* end rcGA == 0, Qp0lGetAttr() was successful */
|
||
|
else
|
||
|
{
|
||
|
rc = errno;
|
||
|
printf("ERROR on Qp0lGetAttr(): error = %d\n", rc);
|
||
|
perror("Error message");
|
||
|
}
|
||
|
return(rc);
|
||
|
} /* end main */
|
||
|
</pre>
|
||
|
|
||
|
<br>
|
||
|
|
||
|
|
||
|
<hr>
|
||
|
API introduced: V4R3
|
||
|
|
||
|
<hr>
|
||
|
<center>
|
||
|
<table cellpadding="2" cellspacing="2">
|
||
|
<tr align="center">
|
||
|
<td valign="middle" align="center"><a href="#Top_Of_Page">Top</a> | <a href=
|
||
|
"unix.htm">UNIX-Type APIs</a> | <a href="aplist.htm">APIs by category</a></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</center>
|
||
|
</body>
|
||
|
</html>
|
||
|
|