274 lines
8.2 KiB
HTML
274 lines
8.2 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>Exit Program for Lock and Unlock Range in Stream File (QHFLULSF) API</title>
|
||
|
<!-- 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. -->
|
||
|
<!--File Edited November 2001 -->
|
||
|
<!--End Header Records -->
|
||
|
<link rel="stylesheet" type="text/css" href="../rzahg/ic.css">
|
||
|
</head>
|
||
|
<body>
|
||
|
<a name="Top_of_Page"></a>
|
||
|
<!--Java sync-link-->
|
||
|
<script type="text/javascript" language="Javascript" src="../rzahg/synch.js">
|
||
|
</script>
|
||
|
|
||
|
<h2>Exit Program for Lock and Unlock Range in Stream File (QHFLULSF) API</h2>
|
||
|
|
||
|
<div class="box" style="width: 70%;">
|
||
|
<br>
|
||
|
Required Parameter Group:<br>
|
||
|
<!-- iddvc RMBR -->
|
||
|
<br>
|
||
|
<table width="100%">
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top" width="10%">1</td>
|
||
|
<td align="left" valign="top" width="40%">Operation (LULSF)</td>
|
||
|
<td align="left" valign="top" width="20%">Input</td>
|
||
|
<td align="left" valign="top" width="30%">Char(5)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">2</td>
|
||
|
<td align="left" valign="top">File system job handle</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Char(16)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">3</td>
|
||
|
<td align="left" valign="top">Open file handle</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Char(16)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">4</td>
|
||
|
<td align="left" valign="top">Lock information</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Char(6)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">5</td>
|
||
|
<td align="left" valign="top">File offset where lock begins</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Binary(4)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">6</td>
|
||
|
<td align="left" valign="top">Bytes to lock</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Binary(4) Unsigned</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">7</td>
|
||
|
<td align="left" valign="top">File offset where unlock begins</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Binary(4) Unsigned</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="center" valign="top">8</td>
|
||
|
<td align="left" valign="top">Bytes to unlock</td>
|
||
|
<td align="left" valign="top">Input</td>
|
||
|
<td align="left" valign="top">Binary(4) Unsigned</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
<br>
|
||
|
</div>
|
||
|
|
||
|
<p>Before applications can use the Lock and Unlock Range in Stream File (QHFLULSF) API with your file system, you must:</p>
|
||
|
|
||
|
<ol>
|
||
|
<li>Write an exit program that performs the lock and unlock operation on behalf of the API. For a detailed description of the API and its calling parameters, see <a href="qhflulsf.htm">Lock and Unlock Range in Stream File (QHFLULSF) API</a>.<br><br></li>
|
||
|
|
||
|
<li>Give the exit program's name when you register the file system with the Register File System (QHFRGFS) API.</li>
|
||
|
</ol>
|
||
|
|
||
|
<p>After that, when an application calls the QHFLULSF API, the API calls your exit program and passes it the parameters specified by the application. Your exit program performs the work and returns any data to the API. The API passes the data back to the calling application.</p>
|
||
|
|
||
|
<br>
|
||
|
<!-- Please NOTE: DO NOT DELETE THIS SECTION if this API has no authorities and locks. -->
|
||
|
<!-- Instead, use the commented out coding below to indicate NONE. -->
|
||
|
<h3>Authorities and Locks</h3>
|
||
|
|
||
|
<!-- Use this if there are no authorities and locks. -->
|
||
|
<p>None.</p>
|
||
|
|
||
|
<br>
|
||
|
<h3>Required Parameter Group</h3>
|
||
|
|
||
|
<p>
|
||
|
The API passes this information to your exit program:
|
||
|
|
||
|
<dl>
|
||
|
<dt><strong>Operation (LULSF)</strong></dt>
|
||
|
<dd>INPUT; CHAR(5)
|
||
|
|
||
|
<p>The abbreviation for the operation being performed (LULSF).</p></dd>
|
||
|
|
||
|
<dt><strong>File system job handle</strong></dt>
|
||
|
<dd>INPUT; CHAR(16)
|
||
|
|
||
|
<p>The work area or job identifier for use by the file system.</p></dd>
|
||
|
</dl>
|
||
|
|
||
|
<p>The following parameters are the same as the parameters for the API.</p>
|
||
|
|
||
|
<dl>
|
||
|
<dt><strong>Open file handle</strong></dt>
|
||
|
<dd>INPUT; CHAR(16)<br><br></dd>
|
||
|
|
||
|
<dt><strong>Lock information</strong></dt>
|
||
|
<dd>INPUT; CHAR(6)<br><br></dd>
|
||
|
|
||
|
<dt><strong>File offset where lock begins</strong></dt>
|
||
|
<dd>INPUT; BINARY(4) UNSIGNED<br><br></dd>
|
||
|
|
||
|
<dt><strong>Bytes to lock</strong></dt>
|
||
|
<dd>INPUT; BINARY(4) UNSIGNED<br><br></dd>
|
||
|
|
||
|
<dt><strong>File offset where unlock begins</strong></dt>
|
||
|
<dd>INPUT; BINARY(4) UNSIGNED<br><br></dd>
|
||
|
|
||
|
<dt><strong>Bytes to unlock</strong></dt>
|
||
|
<dd>INPUT; BINARY(4) UNSIGNED</dd>
|
||
|
</dl>
|
||
|
|
||
|
<br>
|
||
|
<h3>API Functions</h3>
|
||
|
|
||
|
<p>The QHFLULSF API performs the standard functions described in <a href="hfs3d.htm#HDRSTDAPI">Standard HFS API Functions</a> and these additional functions:</p>
|
||
|
|
||
|
<ul>
|
||
|
<li>Verifies that the bytes to lock and bytes to unlock parameters are not both zero. In other words, the API ensures that a lock, unlock, or both operations are to be performed. If both parameters are zero, an error is returned.<br><br></li>
|
||
|
|
||
|
<li>Verifies that the lock information parameter contains valid values, and that the lock mode value is applicable to the lock or unlock operation requested.</li>
|
||
|
</ul>
|
||
|
|
||
|
<br>
|
||
|
<h3>Exit Program Requirements</h3>
|
||
|
|
||
|
<p>You must create an exit program that performs the standard functions described in <a href="hfs3d.htm#HDRSTDFS">Standard HFS Exit Program Requirements</a> and these additional functions:</p>
|
||
|
|
||
|
<ul>
|
||
|
<li>Verifies that the file offsets to lock and unlock are valid offsets.<br><br></li>
|
||
|
|
||
|
<li>Verifies that the number of bytes to lock and unlock are valid values.<br><br></li>
|
||
|
|
||
|
<li>For an unlock operation, verifies that this job previously locked the range.<br><br></li>
|
||
|
|
||
|
<li>For a lock operation, verifies that no part of the range already has a lock that does not allow the access requested.<br><br></li>
|
||
|
|
||
|
<li>Unlocks or locks the range requested.</li>
|
||
|
</ul>
|
||
|
|
||
|
<br>
|
||
|
<h3>Error Messages for Exit Program Use</h3>
|
||
|
|
||
|
<p>This section lists the messages that the exit program can return to the API.</p>
|
||
|
|
||
|
<table cellpadding="3">
|
||
|
<!-- cols="15 85" -->
|
||
|
<tr>
|
||
|
<th align="left" valign="top">Message ID</th>
|
||
|
<th align="left" valign="top">Error Message Text</th>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF1F2E E</td>
|
||
|
<td valign="top">Range of bytes in file in use.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF1F2F E</td>
|
||
|
<td valign="top">Unlock range of bytes in file failed.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF1F28 E</td>
|
||
|
<td valign="top">Damaged file.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF1F32 E</td>
|
||
|
<td valign="top">Number of locks on file exceeds limit.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF1F4B E</td>
|
||
|
<td valign="top">Value for number of bytes not valid.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF1F4C E</td>
|
||
|
<td valign="top">Lock information value not valid.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF1F4D E</td>
|
||
|
<td valign="top">File offset value not valid.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF1F41 E</td>
|
||
|
<td valign="top">Severe error occurred while addressing parameter list.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF1F62 E</td>
|
||
|
<td valign="top">Requested function failed.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF1F66 E</td>
|
||
|
<td valign="top">Storage needed exceeds maximum limit for user profile &1.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF1F71 E</td>
|
||
|
<td valign="top">Exception specific to file system occurred.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF1F73 E</td>
|
||
|
<td valign="top"> Not authorized to use command.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF1F74 E</td>
|
||
|
<td valign="top">Not authorized to object.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td align="left" valign="top">CPF1F77 E</td>
|
||
|
<td valign="top">Severe parameter error occurred on call to file system.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<br>
|
||
|
<hr>
|
||
|
Exit Program Introduced: V2R1
|
||
|
|
||
|
<hr>
|
||
|
<center>
|
||
|
<table cellpadding="2" cellspacing="2">
|
||
|
<tr align="center">
|
||
|
<td valign="middle" align="center"><a href="#Top_Of_Page">Top</a> | <a
|
||
|
href="hfs1.htm">Hierarchical File System APIs</a> |
|
||
|
<a href="aplist.htm">APIs by category</a></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</center>
|
||
|
</body>
|
||
|
</html>
|