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

376 lines
11 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Copyright" content="Copyright (c) 2006 by IBM Corporation">
<title>Exit Program for Open Stream File (QHFOPNSF) 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 language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script>
<h2>Exit Program for Open Stream File (QHFOPNSF) API</h2>
<div class="box" style="width: 70%;">
<br>
&nbsp;&nbsp;Required Parameter Group:<br>
<!-- iddvc RMBR -->
<br>
<table width="100%">
<tr>
<td align="center" valign="top" width="10%">1</td>
<td align="left" valign="top" width="50%">Operation (OPNSF)</td>
<td align="left" valign="top" width="20%">Input</td>
<td align="left" valign="top" width="20%">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">Reserved</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(20)</td>
</tr>
<tr>
<td align="center" valign="top">4</td>
<td align="left" valign="top">Open file handle</td>
<td align="left" valign="top">Output</td>
<td align="left" valign="top">Char(16)</td>
</tr>
<tr>
<td align="center" valign="top">5</td>
<td align="left" valign="top">Path name</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(*)</td>
</tr>
<tr>
<td align="center" valign="top">6</td>
<td align="left" valign="top">Path name length</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Binary(4)</td>
</tr>
<tr>
<td align="center" valign="top">7</td>
<td align="left" valign="top">Open information</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(10)</td>
</tr>
<tr>
<td align="center" valign="top">8</td>
<td align="left" valign="top">Attribute information table</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(*)</td>
</tr>
<tr>
<td align="center" valign="top">9</td>
<td align="left" valign="top">Length of attribute information table</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Binary(4)</td>
</tr>
<tr>
<td align="center" valign="top">10</td>
<td align="left" valign="top">Action taken</td>
<td align="left" valign="top">Output</td>
<td align="left" valign="top">Char(1)</td>
</tr>
</table>
<br>
</div>
<p>Before applications can use the Open Stream File (QHFOPNSF) API with your file system, you must:</p>
<ol>
<li>Write an exit program that performs the open stream file operation on behalf of the API. For a detailed description of the API and its calling parameters, see <a href="qhfopnsf.htm">Open Stream File (QHFOPNSF) 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 QHFOPNSF 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 following shows the input parameters that the API passes to your exit program and the output parameters that the exit program must pass back to the API:</p>
<dl>
<dt><strong>Operation (OPNSF)</strong></dt>
<dd>INPUT; CHAR(5)
<p>The abbreviation for the operation being performed (OPNSF).</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>
<dt><strong>Reserved</strong></dt>
<dd>INPUT; CHAR(20)
<p>Reserved for future use. This parameter is set to blanks.</p></dd>
</dl>
<p>Except as noted, the following parameters are the same as the parameters for the API.</p>
<dl>
<dt><strong>Open file handle</strong></dt>
<dd>OUTPUT; CHAR(16)<br><br></dd>
<dt><strong>Path name</strong></dt>
<dd>INPUT; CHAR(*)
<p>The API removes the file system name before passing the path name to the exit program.</p></dd>
<dt><strong>Path name length</strong></dt>
<dd>INPUT; BINARY(4)<br><br></dd>
<dt><strong>Open information</strong></dt>
<dd>INPUT; CHAR(10)
<p>The exit program can ignore character 7, which describes the type of open operation to perform. This field is used by i5/OS HFS support during job cleanup if the job ends before the file is closed.</p></dd>
<dt><strong>Attribute information table</strong></dt>
<dd>INPUT; CHAR(*)<br><br></dd>
<dt><strong>Length of the attribute information table</strong></dt>
<dd>INPUT; BINARY(4)<br><br></dd>
<dt><strong>Action taken</strong></dt>
<dd>OUTPUT; CHAR(1)</dd>
</dl>
<br>
<h3>API Functions</h3>
<p>The QHFOPNSF 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 length of the attribute information table is not negative.<br><br></li>
<li>Ensures that the file is closed during normal job cleanup, in case the user forgets to close it before ending the job.<br><br></li>
<li>Handles the type-of-open value represented by character 7 of the open information parameter. The file system does not need to take any action on the basis of this value.</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>Checks for previous open operations that have lock modes conflicting with the requested access mode for this file.<br><br></li>
<li>Attempts to take the action designated by the open information. The action can be opening an existing file, opening and replacing an existing file, or creating and opening a new file.<br><br></li>
<li>If the action is successful, assigns a file handle, locks the file and its attributes, and returns the handle and action taken to the API. The API does not return this handle to the application. The API creates a handle of its own to return to the application. This procedure improves API performance and ensures that handles are unique across file systems.</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">CPF1F01 E</td>
<td valign="top">Directory name not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F02 E</td>
<td valign="top">Directory not found.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F06 E</td>
<td valign="top">Directory in use.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F07 E</td>
<td valign="top">Authority not sufficient to access directory.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F08 E</td>
<td valign="top">Damaged directory.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F2A E</td>
<td valign="top">Number of open files exceeds limit.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F21 E</td>
<td valign="top">File name not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F22 E</td>
<td valign="top">File not found.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F24 E</td>
<td valign="top">File name already exists.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F26 E</td>
<td valign="top">File in use.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F27 E</td>
<td valign="top">Authority not sufficient to access file.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F28 E</td>
<td valign="top">Damaged file.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F29 E</td>
<td valign="top"> Use of reserved file name not allowed.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F37 E</td>
<td valign="top">File is a read-only file.</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">CPF1F42 E</td>
<td valign="top"> Attribute information table not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F43 E</td>
<td valign="top"> Attribute name not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F44 E</td>
<td valign="top">Attribute value is not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F46 E</td>
<td valign="top">Use of reserved attribute name not allowed.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F48 E</td>
<td valign="top">Path name not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F49 E</td>
<td valign="top">Open information value not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F61 E</td>
<td valign="top">No free space available on media.</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">CPF1F63 E</td>
<td valign="top"> Media is write protected.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F66 E</td>
<td valign="top">Storage needed exceeds maximum limit for user profile &amp;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">CPF1F75 E</td>
<td valign="top"> Error occurred during start-job-session function.</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>