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

352 lines
9.7 KiB
HTML
Raw Normal View History

2024-04-02 14:02:31 +00:00
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Copyright" content="Copyright (c) 2006 by IBM Corporation">
<title>Control ASP Access(QYASPCTLAA) API</title>
<!-- Begin Header Records -->
<!-- All rights reserved. Licensed Materials Property of IBM -->
<!-- US Government Users Restricted Rights -->
<!-- Use, duplication or disclosure restricted by -->
<!-- GSA ADP Schedule Contract with IBM Corp. -->
<!-- Change History: -->
<!-- 041102 JGR New API -->
<!-- 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><img src="delta.gif" alt="Start of change">Control ASP Access (QYASPCTLAA) API</h2>
<div class="box" style="width: 60%;">
<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%">ASP name</td>
<td align="left" valign="top" width="20%">Input</td>
<td align="left" valign="top" width="20%">Char(10)</td>
</tr>
<tr>
<td align="center" valign="top">2</td>
<td align="left" valign="top">Operation key</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Binary(4)</td>
</tr>
<tr>
<td align="center" valign="top">3</td>
<td align="left" valign="top">Request handle</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(8)</td>
</tr>
<tr>
<td align="center" valign="top">4</td>
<td align="left" valign="top">Return handle</td>
<td align="left" valign="top">Output</td>
<td align="left" valign="top">Char(8)</td>
</tr>
<tr>
<td align="center" valign="top">5</td>
<td align="left" valign="top">Error Code</td>
<td align="left" valign="top">I/O</td>
<td align="left" valign="top">Char(*)</td>
</tr>
</table>
<br>
&nbsp;&nbsp;Default Public Authority: *EXCLUDE<br>
<!-- iddvc RMBR -->
<br>
&nbsp;&nbsp;Threadsafe: Yes<br>
<!-- iddvc RMBR -->
<br>
</div>
<p>The Control ASP Access (QYASPCTLAA) API performs one of a set of
operations on an independent ASP (IASP). The operation can be any of the
following:</p>
<ul>
<li>Start exclusive.</li>
<li>Start shared.</li>
<li>End shared.</li>
<li>End exclusive.</li>
</ul>
<br>
<h3>Authorities and Locks</h3>
<p>To use this API you must have *JOBCTL special authority. *USE authority is
required to each of the ASP device descriptions in the ASP group identified by
parameter one. An *EXCLRD lock is obtained on each of the ASP device
descriptions in the ASP group.</p>
<br>
<h3>Required Parameter Group</h3>
<dl>
<dt><strong>ASP name</strong></dt>
<dd>INPUT; CHAR(10)
<p>The name of a UDFS or primary ASP. If a primary ASP is specified, the
operation is performed on all ASPs in its ASP group.</p>
</dd>
<dt><strong>Operation key</strong></dt>
<dd>INPUT; BINARY(4)
</dl>
<p>An integer value indicating which operation is to be performed.
Valid operation key values are:</p>
<table cellpadding="5">
<!-- cols="5 95" -->
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">Start exclusive</td>
</tr>
<tr>
<td align="left" valign="top"><em>2</em></td>
<td align="left" valign="top">Start shared</td>
</tr>
<tr>
<td align="left" valign="top"><em>3</em></td>
<td align="left" valign="top">End shared</td>
</tr>
<tr>
<td align="left" valign="top"><em>4</em></td>
<td align="left" valign="top">End exclusive</td>
</tr>
</table>
<p>The following is a description of each operation:</p>
<dl>
<dt><strong>Start exclusive</strong></dt>
<dd>If there is an existing start exclusive for the ASP, the request is
denied. Otherwise the API ends jobs that have threads using the ASP
and returns a return handle that identifies this start exclusive request.
Once the start exclusive is in effect, other jobs can do start shared
and present the same handle. These requests will be accepted but requests
with a different handle but the same ASP will be rejected.<br>
<br>
The request handle must be blanks for this operation.<br>
<br>
</dd>
<dt><strong>Start</strong></dt>
<dd>If the request handle does not have the same value as the return handle
of the current start exclusive, the request is denied. Only jobs that
have done start exclusive or start shared will be able to do Set ASP Group
(SETASPGRP) command requests and use IFS objects in the ASP.<br>
<br>
</dd>
<dt><strong>End shared</strong></dt>
<dd>Ends the job's shared use of the ASP.<br>
<br>
</dd>
<dt><strong>End exclusive</strong></dt>
<dd>Varies the IASP to the AVAILABLE state and allows SETASPGRP requests and
requests to use IFS objects to be accepted without presentation of a
current valid handle. This operation must be performed in the same job
as the one that did the start exclusive.<br>
<br>
</dd>
<dt><strong>Request handle</strong></dt>
<dd>INPUT; CHAR(8)
<p>A valid handle whose value is that of the return handle from the current
start exclusive for the ASP.</p>
</dd>
<dt><strong>Return handle</strong></dt>
<dd>OUTPUT; CHAR(8)
<p>A handle that must be used as the request handle on all QYASPCTLAA
operations except start exclusive.</p>
</dd>
<dt><strong>Error code</strong></dt>
<dd>I/O; CHAR(*)
<p>The structure in which to return error information. For the format of the
structure, see <a href="../apiref/error.htm#hdrerrcod">Error Code Parameter</a>.</p>
</dd>
</dl>
<br>
<h3>Use of Start and End Exclusive</h3>
<p>The following are ways in which Start Exclusive can be paired with End
Exclusive.
<ul>
<li>Start exclusive is eventually followed by end exclusive in the same job.</li>
<li>Start exclusive is done in a job but the job ends without doing an end
exclusive. If another job has access to the handle, it may do a start shared
followed by end exclusive. If no job has access to the handle, the only way
to end the exclusive use is to vary the ASP off and back on again or to IPL.</li>
<li>Start exclusive is done in a job and start shared is done in several others.
The job that did the start exclusive can do either an end exclusive or an end
shared. Any job that has done a start shared can do end exclusive, provided
that this has not yet been done by any other job. Once end exclusive has
been processed, the ASP goes back to an available state and jobs that did
not do a start shared can begin using the ASP.
</ul>
<br>
<br>
<h3><a name="HDRYASPOP">Sample Uses</a></h3>
<p>The value of this API is that it can be used to achieve a "restricted"
state for an IASP without ending all subsystems. This allows functions such
as TCP and clustering to remain active during operations where one might
otherwise have gone into restricted state. It also allows applications that
are not using the ASP to continue to function.
<p>Some possible uses of this API are:
<ul>
<li>Precede an IASP Reclaim Storage with a start exclusive and follow it
with an end exclusive. This effectively establishes a "restricted" state
for the ASP.</li>
<li>Do a start exclusive in a control job. Follow it with a start shared
in a different job that is going to do save-while-active. Once the save
has reached its synchronization point, do end exclusive in the control job.
This will bring the ASP back to an AVAILABLE state and other jobs will be
able to use the ASP.
The save-while-active job can do its end shared anytime, as long as it is
after the save-while-active synchronization point has been reached.</li>
<li>In order to have a more complete copy of changes when doing ESS flashcopy
or detach of a geographic mirroring mirror copy, precede the detach or
flashcopy operation with start exclusive. Then use the QYASSDMO API to
write changes to disk. This should reduce the time the ASP cannot be used
when compared with doing vary off prior to detach or flashcopy.</li>
</ul>
<br>
<br>
<h3>Error Messages</h3>
<table width="100%" cellpadding="5">
<!-- cols="15 85" -->
<tr>
<th align="left" valign="top">Message ID</th>
<th align="left" valign="top">Error Message Text</th>
</tr>
<tr>
<td width="15%" valign="top">CPF1002 E</td>
<td width="85%" valign="top">Cannot allocate object &amp;1.</td>
</tr>
<tr>
<td valign="top">CPF3C36 E</td>
<td valign="top">Number of parameters, &amp;1, entered for this API was not
valid.</td>
</tr>
<tr>
<td valign="top">CPF3C3C E</td>
<td valign="top">Value for parameter &amp;1 not valid.</td>
</tr>
<tr>
<td valign="top">CPF3C90 E</td>
<td valign="top">Literal value cannot be changed.</td>
</tr>
<tr>
<td valign="top">CPF3CF1 E</td>
<td valign="top">Error code parameter not valid.</td>
</tr>
<tr>
<td valign="top">CPF9802 E</td>
<td valign="top">Not authorized to object &amp;2 in library &amp;3.</td>
</tr>
<tr>
<td valign="top">CPF9872 E</td>
<td valign="top">Program or service program &amp;1 in library &amp;2 ended.
Reason code &amp;3.</td>
</tr>
<tr>
<td valign="top">CPFB8E5 E</td>
<td valign="top">Vary Configuration or Reclaim Storage detected a problem.</td>
</tr>
<tr>
<td valign="top">CPFBA44 E</td>
<td valign="top">Operation key not valid.</td>
</tr>
</table>
<br>
<img src="deltaend.gif" alt="End of change">
<hr>
API introduced: V5R4
<hr>
<center>
<table cellpadding="2" cellspacing="2">
<tr align="center">
<td valign="middle" align="center"><a href="#Top_Of_Page">Top</a> | <a href=
"config.htm">Configuration APIs</a> | <a href="aplist.htm">APIs by
category</a></td>
</tr>
</table>
</center>
</body>
</html>