103 lines
6.6 KiB
HTML
103 lines
6.6 KiB
HTML
|
<?xml version="1.0" encoding="UTF-8"?>
|
||
|
<!DOCTYPE html
|
||
|
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||
|
<html lang="en-us" xml:lang="en-us">
|
||
|
<head>
|
||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||
|
<meta name="security" content="public" />
|
||
|
<meta name="Robots" content="index,follow" />
|
||
|
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
|
||
|
<meta name="DC.Type" content="reference" />
|
||
|
<meta name="DC.Title" content="%OFFSET built-in function" />
|
||
|
<meta name="abstract" content="The offset built-in function (%OFFSET or %OFS) can be used to store or change the offset portion of a CL pointer variable and can only be used within a CL procedure." />
|
||
|
<meta name="description" content="The offset built-in function (%OFFSET or %OFS) can be used to store or change the offset portion of a CL pointer variable and can only be used within a CL procedure." />
|
||
|
<meta name="DC.Relation" scheme="URI" content="contp.htm" />
|
||
|
<meta name="DC.Relation" scheme="URI" content="valuv.htm" />
|
||
|
<meta name="DC.Relation" scheme="URI" content="../clfinder/finder.htm" />
|
||
|
<meta name="DC.Relation" scheme="URI" content="../cl/chgvar.htm" />
|
||
|
<meta name="DC.Relation" scheme="URI" content="rbam6builtinfunc.htm" />
|
||
|
<meta name="copyright" content="(C) Copyright IBM Corporation 1998, 2006" />
|
||
|
<meta name="DC.Rights.Owner" content="(C) Copyright IBM Corporation 1998, 2006" />
|
||
|
<meta name="DC.Format" content="XHTML" />
|
||
|
<meta name="DC.Identifier" content="rbam6offset" />
|
||
|
<meta name="DC.Language" content="en-us" />
|
||
|
<!-- 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. -->
|
||
|
<link rel="stylesheet" type="text/css" href="./ibmdita.css" />
|
||
|
<link rel="stylesheet" type="text/css" href="./ic.css" />
|
||
|
<title>%OFFSET built-in function</title>
|
||
|
</head>
|
||
|
<body id="rbam6offset"><a name="rbam6offset"><!-- --></a>
|
||
|
<img src="./delta.gif" alt="Start of change" /><!-- Java sync-link --><script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script>
|
||
|
<h1 class="topictitle1">%OFFSET built-in function</h1>
|
||
|
<div><p>The offset built-in function (%OFFSET or %OFS) can be used to store
|
||
|
or change the offset portion of a CL pointer variable and can only be used
|
||
|
within a CL procedure.</p>
|
||
|
<div class="section"><div class="p">In a CHGVAR command, the %OFFSET function can be used two different
|
||
|
ways: <ul><li>You can specify the %OFFSET function for the variable (VAR
|
||
|
parameter) to set the offset portion of a pointer variable.</li>
|
||
|
<li>You can specify the %OFFSET function for the value (VALUE parameter) to
|
||
|
which the variable is to be changed.</li>
|
||
|
</ul>
|
||
|
In an IF command, the %OFFSET function can be specified in the expression
|
||
|
(COND parameter) and is treated like a four-byte unsigned integer value.</div>
|
||
|
<div class="p">The
|
||
|
format of the offset built-in function is:<pre>%OFFSET(variable name)</pre>
|
||
|
or<pre>%OFS(variable name)</pre>
|
||
|
</div>
|
||
|
<p>In
|
||
|
the following example, pointer variable &P1 has no initial value specified
|
||
|
and therefore is initialized to null. The first CHGVAR will store the offset
|
||
|
from the null pointer value in integer variable &I1; the command will
|
||
|
run without an error, and the value of &I1 will probably be zero, though
|
||
|
the offset for a null pointer is not defined. The second CHGVAR command
|
||
|
sets &P1 to the address of local character variable &C1; pointer &P1
|
||
|
now points to byte 1 of variable &C1. The third CHGVAR command will store
|
||
|
the offset portion of &P1 into the integer variable &I2. Note that
|
||
|
the offset is from the start of the storage for all automatic variables for
|
||
|
the current thread and not from the start of automatic storage for the current
|
||
|
program or from the start of variable &C1. The fourth CHGVAR command
|
||
|
takes the integer value stored in &I2, adds one hundred, and stores the
|
||
|
resulting number into the integer variable &I3. The fifth CHGVAR command
|
||
|
changes the offset portion of pointer &P1 using integer variable &I3;
|
||
|
pointer &P1 now points to byte 101 of variable &C1. The sixth CHGVAR
|
||
|
command will calculate the integer expression for the VALUE parameter by storing
|
||
|
the offset portion of pointer &P1 into a temporary integer variable and
|
||
|
subtracting 20, and use this calculated value to reset the offset portion
|
||
|
of pointer &P1; pointer &P1 now points to byte 81 of variable &C1.</p>
|
||
|
<pre>PGM
|
||
|
DCL &C1 *CHAR 30000
|
||
|
DCL &P1 *PTR
|
||
|
DCL &P2 *PTR
|
||
|
DCL &I1 *UINT 4
|
||
|
DCL &I2 *UINT 4
|
||
|
DCL &I3 *UINT 4
|
||
|
CHGVAR &I1 %OFFSET(&P1) /* 1 */
|
||
|
CHGVAR &P1 %ADDRESS(&C1) /* 2 */
|
||
|
CHGVAR &I2 %OFFSET(&P1) /* 3 */
|
||
|
CHGVAR &I3 (%I2+100) /* 4 */
|
||
|
CHGVAR %OFFSET(&P1) &I3 /* 5 */
|
||
|
CHGVAR %OFFSET(&P1) (%OFFSET(&P1)-20) /* 6 */
|
||
|
ENDPGM</pre>
|
||
|
The %OFFSET built-in function cannot be used with a pointer variable
|
||
|
that addresses teraspace storage.</div>
|
||
|
</div>
|
||
|
<div>
|
||
|
<div class="familylinks">
|
||
|
<div class="parentlink"><strong>Parent topic:</strong> <a href="contp.htm" title="You can use commands to change the flow of logic within your CL procedure.">Control processing within a CL procedure</a></div>
|
||
|
</div>
|
||
|
<div class="reltasks"><strong>Related tasks</strong><br />
|
||
|
<div><a href="valuv.htm" title="You can change the value of a CL variable using the Change Variable (CHGVAR) command.">Change the value of a variable</a></div>
|
||
|
</div>
|
||
|
<div class="relref"><strong>Related reference</strong><br />
|
||
|
<div><a href="rbam6builtinfunc.htm" title="CL provides several built-in functions.">Built-in functions for CL</a></div>
|
||
|
</div>
|
||
|
<div class="relinfo"><strong>Related information</strong><br />
|
||
|
<div><a href="../clfinder/finder.htm">CL command finder</a></div>
|
||
|
<div><a href="../cl/chgvar.htm">Change Variable (CHGVAR) command</a></div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<img src="./deltaend.gif" alt="End of change" /></body>
|
||
|
</html>
|