ibm-information-center/dist/eclipse/plugins/i5OS.ic.db2_5.4.0.1/rbafzmstch2refvar.htm

438 lines
29 KiB
HTML
Raw Permalink Normal View History

2024-04-02 14:02:31 +00:00
<?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 xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-us">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="dc.language" scheme="rfc1766" 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. -->
<meta name="dc.date" scheme="iso8601" content="2005-09-19" />
<meta name="copyright" content="(C) Copyright IBM Corporation 1998, 2006" />
<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="keywords" content="description, host variable, application program,
COBOL, PL/I, RPG, C, REXX, indicator variable, specified by indicator variable,
null value in SQL, in Java, variable, file reference, LOB locator,
locator variable, LOB, declaring variable, locator, large object (LOB),
LOB file reference, file reference variable, host structure, array, indicator,
host structure arrays" />
<title>References to variables</title>
<link rel="stylesheet" type="text/css" href="ibmidwb.css" />
<link rel="stylesheet" type="text/css" href="ic.css" />
</head>
<body>
<a id="Top_Of_Page" name="Top_Of_Page"></a><!-- Java sync-link -->
<script language = "Javascript" src = "../rzahg/synch.js" type="text/javascript"></script>
<a name="ch2refvar"></a>
<h2 id="ch2refvar"><a href="rbafzmst02.htm#ToC_235">References to variables</a></h2>
<p>A <span class="italic">variable</span> in an SQL statement specifies a value
that can be changed when the SQL statement is executed. There are several
types of <span class="italic">variable</span>s used in SQL statements:</p>
<dl>
<dt class="bold">host variable</dt>
<dd>Host variables are defined by statements of a host language. For more
information about how to refer to host variables see <a href="rbafzmstch2refvar.htm#ch2host">References to host variables</a>.
</dd>
<dt class="bold">transition variable</dt>
<dd>Transition variables are defined in a trigger and refer to either the
old or new values of columns. For more information about how to refer to transition
variables see <a href="rbafzmsthctrigger.htm#hctrigger">CREATE TRIGGER</a>.
</dd>
<dt class="bold">SQL variable</dt>
<dd>SQL variables are defined by an SQL compound statement in an SQL function,
SQL procedure, or trigger. For more information about SQL variables, see <a href="rbafzmstrefsqlv.htm#refsqlv">References to SQL parameters and SQL variables</a>.
</dd>
<dt class="bold">SQL parameter</dt>
<dd>SQL parameters are defined in an CREATE FUNCTION (SQL Scalar),
CREATE FUNCTION (SQL Table), or CREATE PROCEDURE (SQL) statement. For more
information about SQL parameters, see <a href="rbafzmstrefsqlv.htm#refsqlv">References to SQL parameters and SQL variables</a>.
</dd>
<dt class="bold">parameter marker</dt>
<dd>Variables cannot be referenced in dynamic SQL statements.
Parameter markers are defined in an SQL descriptor and used instead. For more
information about parameter markers, see <a href="rbafzmstpreph2.htm#parmark">Parameter Markers</a>.
</dd>
</dl>
<a name="ch2host"></a>
<h3 id="ch2host"><a href="rbafzmst02.htm#ToC_236">References to host variables</a></h3><a id="idx591" name="idx591"></a><a id="idx592" name="idx592"></a><a id="idx593" name="idx593"></a><a id="idx594" name="idx594"></a><a id="idx595" name="idx595"></a><a id="idx596" name="idx596"></a>
<p>A <span class="italic">host variable</span> is a COBOL data item, an RPG field,
or a PLI, REXX, C++, or C variable that is referenced in an SQL statement.
Host variables are defined by statements of the host language. For more information
about how to refer to host structures in C, C++, COBOL, PL/I, and RPG, see <a href="rbafzmstch2refvar.htm#hscpcj">Host structures</a>. For more information about host variables in
REXX, see the <a href="../rzajp/rzajpkickoff.htm">Embedded SQL Programming</a> book.</p>
<p>A <var class="pv">host variable</var> in an SQL statement must identify a host variable
described in the program according to the rules for declaring host variables.</p>
<p>All host variables used in an SQL statement should be declared in an SQL
declare section in all host languages other than Java&trade;, REXX, and RPG. Variables do not have
to be declared in REXX. In Java and RPG, there is no declare section,
and host variables may be declared throughout the program. No variables may
be declared outside an SQL declare section with names identical to variables
declared inside an SQL declare section. An SQL declare section begins with
BEGIN DECLARE SECTION and ends with END DECLARE SECTION.</p>
<p>For further information about using host variables, see the <a href="../sqlp/rbafykickoff.htm">Embedded SQL Programming</a> book.</p>
<p>A variable in the INTO clause of a FETCH, a SELECT INTO, a SET
variable, a GET DESCRIPTOR, or a VALUES INTO statement identifies a host variable
to which a value from a result column is assigned. A variable in the GET DIAGNOSTICS
statement identifies a host variable to which a diagnostic value is assigned.
A host variable in a CALL or in an EXECUTE statement can be an output argument
that is assigned a value after execution of the procedure, an input argument
that provides an input value for the procedure, or both an input and output
argument. In all other contexts a variable specifies a value to be passed
to the database manager from the application program.</p>
<p><span class="bold">Non-Java variable references:</span> The general
form of a <var class="pv">variable</var> reference in all languages other than Java is:</p>
<a href="rbafzmstch2refvar.htm#synhl"><img src="c.gif" alt="Click to skip syntax diagram" /></a>
<a name="wq317"></a>
<div class="fignone" id="wq317">
<pre class="cgraphic"><span><img src="c.gif" alt="Read syntax diagram" longdesc="rbafzmstsyn14.htm"
border="0" /></span><a href="#skipsyn-13"><img src="c.gif" alt="Skip visual syntax diagram"
border="0" /></a>>>-:<span class="italic">host-identifier</span>--+---------------------------------+------->&lt;
| .-INDICATOR-. |
'-+-----------+--:<span class="italic">host-identifier</span>-'
</pre>
<a name="skipsyn-13" id="skipsyn-13"></a></div>
<a name="synhl"></a>
<p id="synhl">Each <var class="pv">host-identifier</var> must be declared in the source
program. The variable designated by the second <var class="pv">host-identifier</var> is
called an <span class="italic">indicator variable</span> and must have a data
type of small integer.</p>
<p>The purposes of the indicator variable are to: </p>
<ul>
<li>Specify the null value. A negative value of the indicator variable specifies
the null value.</li>
<li>Indicate that one of the following numeric conversion errors:
<ul>
<li>Numeric conversion error (underflow or overflow)</li>
<li>Arithmetic expression error (division by 0)</li>
<li>A numeric value that is not valid</li></ul></li>
<li>Indicate one of the following string errors:
<ul>
<li>Characters could not be converted</li>
<li>Mixed data not properly formed</li></ul></li>
<li>Indicate one of the following datetime errors:
<ul>
<li>Date or timestamp conversion error (a date or timestamp that is not within
the valid range of the dates for the specified format)</li>
<li>String representation of the datetime value is not valid</li></ul></li>
<li>Indicate one of the following miscellaneous errors:
<ul>
<li>Argument of SUBSTR scalar function is out of range</li>
<li>Argument of a decryption function contains a data type that is not valid.</li></ul></li>
<li>Record the original length of a string if the string is truncated on assignment
to a host variable. If the string is truncated and there is no indicator variable,
no error condition results.</li>
<li>Record the seconds portion of a time if the time is truncated on assignment
to a host variable. If the time is truncated and there is no indicator variable,
no error condition results.</li></ul><a id="idx597" name="idx597"></a><a id="idx598" name="idx598"></a>
<p>For example, if :V1:V2 is used to specify an insert or update value, and
if V2 is negative, the value specified is the null value. If V2 is not negative
the value specified is the value of V1.</p>
<p>Similarly, if :V1:V2 is specified in a CALL, FETCH, SELECT INTO, or VALUES
INTO statement and the value returned is null, V1 is undefined, and V2 is
set to a negative value. The negative value is: </p>
<ul>
<li>-1 if the value selected was the null value, or</li>
<li>-2 if the null value was returned due to data mapping errors in the select
list of an outer subselect. <sup class="fn"><a id="wq318" name="wq318" href="rbafzmstch2refvar.htm#wq319">32</a></sup></li></ul><p class="indatacontent"> If the value returned is not null, that value is assigned to V1 and
V2 is set to zero (unless the assignment to V1 requires string truncation,
in which case, V2 is set to the original length of the string). If an assignment
requires truncation of the seconds part of time, V2 is set to the number of
seconds.</p>
<p>If the second <span class="italic">host-identifier</span> is omitted, the <var class="pv">host variable</var> does not have an indicator variable. The value specified
by the <var class="pv">host variable</var> :V1 is always the value of V1, and null values
cannot be assigned to the variable. Thus, this form should not be used unless
the corresponding result column cannot contain null values. If this form is
used and the column contains nulls, the database manager will return an error at run-time
(SQLSTATE 23502).</p>
<p>An SQL statement that references host variables in C, C++, ILE
RPG, and PL/I, must be within the scope of the declaration of those host variables.
For host variables referenced in the SELECT statement of a cursor, that rule
applies to the OPEN statement rather than to the DECLARE CURSOR statement.</p>
<p>The CCSID of a string host variable is either: </p>
<ul>
<li>The CCSID specified in the DECLARE VARIABLE statement, or</li>
<li>If a DECLARE VARIABLE with a CCSID clause is not specified for the host
variable, the default CCSID of the application requester at the time the SQL
statement that contains the host variable is executed unless the CCSID is
for a foreign encoding scheme (such as ASCII). In this case, the host variable
is converted to the default CCSID of the current server.</li></ul>
<p><span class="bold">Java variable references:</span> The general
form of a host variable reference in Java is: <a id="idx599" name="idx599"></a>
</p>
<pre class="cgraphic"><span><img src="c.gif" alt="Read syntax diagram" longdesc="rbafzmstsyn15.htm"
border="0" /></span><a href="#skipsyn-14"><img src="c.gif" alt="Skip visual syntax diagram"
border="0" /></a>>>-:--+-------+--+-<span class="italic">Java-identifier</span>-------+--------------------->&lt;
+-IN----+ '-(--<span class="italic">Java-expression</span>--)-'
+-OUT---+
'-INOUT-'
</pre>
<a name="skipsyn-14" id="skipsyn-14"></a>
<p>In Java, indicator variables are not used. Instead, instances of a Java class
can be set to a null value. Variables defined as Java primitive types cannot be set to a
null value.</p>
<p>If IN, OUT, or INOUT is not specified, the default depends on the context
in which the variable is used. If the Java variable is used in an INTO clause,
OUT is the default. Otherwise, IN is the default. For more information on Java variables, see <a href="../rzaha/whatitis.htm">IBM&reg; Developer Kit for Java</a>.</p>
<a name="wq320"></a>
<h4 id="wq320">Example</h4>
<p>Using the PROJECT table, set the host variable PNAME (VARCHAR(26)) to the
project name (PROJNAME), the host variable STAFF (DECIMAL(5,2)) to the mean
staffing level (PRSTAFF), and the host variable MAJPROJ (CHAR(6)) to the major
project (MAJPROJ) for project (PROJNO) 'IF1000'. Columns PRSTAFF and
MAJPROJ may contain null values, so provide indicator variables STAFF_IND
(SMALLINT) and MAJPROJ_IND (SMALLINT). </p>
<pre class="xmp"> <span class="bold">SELECT</span> PROJNAME, PRSTAFF, MAJPROJ
&nbsp;&nbsp;<span class="bold">INTO</span> :PNAME, :STAFF :STAFF_IND, :MAJPROJ :MAJPROJ_IND
&nbsp;&nbsp;<span class="bold">FROM</span> PROJECT
&nbsp;&nbsp;<span class="bold">WHERE</span> PROJNO <span class="bold">=</span> 'IF1000'</pre>
<a name="wq321"></a>
<h3 id="wq321"><a href="rbafzmst02.htm#ToC_238">Variables in dynamic SQL</a></h3>
<p>In dynamic SQL statements, parameter markers are used instead of variables.
A parameter marker is a question mark (?) that represents a position in a
dynamic SQL statement where the application will provide a value; that is,
where a variable would be found if the statement string were a static SQL
statement. The following examples shows a static SQL that uses host variables
and a dynamic statement that uses parameter markers: </p>
<pre class="xmp"> <span class="bold">INSERT INTO</span> DEPT
<span class="bold">VALUES(</span> :HV_DEPTNO, :HV_DEPTNAME, :HV_MGRNO:IND_MGRNO, :HV_ADMRDEPT<span class="bold">)</span>
<span class="bold">INSERT INTO</span> DEPT
<span class="bold">VALUES(</span> ?, ?, ?, ? <span class="bold">)</span> </pre>
<p>For more information about parameter markers, see <a href="rbafzmstpreph2.htm#parmark">Parameter Markers</a>.</p>
<a name="wq322"></a>
<h3 id="wq322"><a href="rbafzmst02.htm#ToC_239">References to LOB variables</a></h3>
<p>Regular LOB variables, LOB locator variables (see <a href="rbafzmstch2refvar.htm#rlobloc">References to LOB locator variables</a>)
and LOB file reference variables (see <a href="rbafzmstch2refvar.htm#rlobref">References to LOB file reference variables</a>), can be defined
in the following host languages:</p>
<ul>
<li>C</li>
<li>C++</li>
<li>ILE RPG</li>
<li>ILE COBOL</li>
<li>PL/I</li></ul><p class="indatacontent"> Where LOBs are allowed, the term <span class="italic">variable</span> in a syntax diagram can refer to a regular variable, a locator variable,
or a file reference variable. Since these variables are not native data types
in host programming languages, SQL extensions are used and the precompilers
generate the host language constructs necessary to represent each variable.</p>
<p>When it is possible to define a variable that is large enough to hold an
entire LOB value and the performance benefit of delaying the transfer of data
from the server is not required, a LOB locator is not needed. However, it
is often not acceptable to store an entire LOB value in temporary storage
due to host language restrictions, storage restrictions, or performance requirements.
When storing a entire LOB value at one time is not acceptable, a LOB value
can be referred to by a LOB locator and portions of the LOB value can be accessed.</p>
<a name="rlobloc"></a>
<h3 id="rlobloc"><a href="rbafzmst02.htm#ToC_240">References to LOB locator variables</a></h3><a id="idx600" name="idx600"></a><a id="idx601" name="idx601"></a><a id="idx602" name="idx602"></a><a id="idx603" name="idx603"></a><a id="idx604" name="idx604"></a><a id="idx605" name="idx605"></a>
<p>A LOB <span class="italic">locator variable</span> is a variable that contains
the locator representing a LOB value on the application server, which can be defined
in the following host languages:</p>
<ul>
<li>C</li>
<li>C++</li>
<li>ILE RPG</li>
<li>ILE COBOL</li>
<li>PL/I</li></ul><p class="indatacontent">See <a href="rbafzmstch2data.htm#mlobloc">Manipulating large objects with locators</a> for information on how locators can be used
to manipulate LOB values.</p>
<p>A locator variable in an SQL statement must identify a LOB locator variable
described in the program according to the rules for declaring locator variables.
This is always indirectly through an SQL statement. For example, in C: </p>
<pre class="xmp"> static volatile <span class="bold">SQL TYPE IS CLOB_LOCATOR</span> *loc1;</pre>
<p>The term <span class="italic">locator-variable</span>, as used in the syntax
diagrams, shows a reference to a LOB locator variable. The meta-variable <span class="italic">locator-variable</span> can be expanded to include a <span class="italic">host-identifier</span> the same as that for <span class="italic">host-variable</span>.</p>
<p>Like all other variables, a LOB locator variable can have an
associated indicator variable. Indicator variables for LOB locator variables
behave in the same way as indicator variables for other data types. When a
null value is returned from the database, the indicator variable is set and
the variable is unchanged. When the indicator variable associated with a LOB
locator is null, the value of the referenced LOB is null. This means that
a locator can never point to a null value.</p>
<p>If a locator variable does not currently represent any value, an error
occurs when the locator variable is referenced.</p>
<p>At transaction commit or any transaction termination, all LOB locators
that were acquired by the transaction are released.</p>
<p>It is the application programmer's responsibility to guarantee that any
LOB locator is only used in SQL statements that are executed at the same application server that
originally generated the LOB locator. For example, assume that a LOB locator
is returned from one application server and assigned to a LOB locator variable. If
that LOB locator variable is subsequently used in an SQL statement that is
executed at a different application server, unpredictable results will occur.</p>
<a name="rlobref"></a>
<h3 id="rlobref"><a href="rbafzmst02.htm#ToC_241">References to LOB file reference variables</a></h3><a id="idx606" name="idx606"></a><a id="idx607" name="idx607"></a><a id="idx608" name="idx608"></a><a id="idx609" name="idx609"></a><a id="idx610" name="idx610"></a>
<p>A LOB <span class="italic">file reference variable</span> is used for direct
file input and output for a LOB, which can be defined in the following host
languages:</p>
<ul>
<li>C</li>
<li>C++</li>
<li>ILE RPG</li>
<li>ILE COBOL</li>
<li>PL/I</li></ul><p class="indatacontent">Since these are not native data types, SQL extensions are used and the
precompilers generate the host language constructs necessary to represent
each variable.</p>
<p>A file reference variable represents (rather than contains) the file, just
as a LOB locator represents, rather than contains, the LOB data. Database
queries, updates, and inserts may use file reference variables to store or
to retrieve single column values. The file referenced must exist at the application
requester.</p>
<p>Like all other variables, a file reference variable can have
an associated indicator variable. Indicator variables for file reference variables
behave in the same way as indicator variables for other data types. When a
null value is returned from the database, the indicator variable is set and
the variable is unchanged. When the indicator variable associated with a file
reference variable is null, the value of the referenced LOB is null. This
means that a file reference variable can never point to a null value.</p>
<p>The length attribute of a file reference variable is assumed to be the
maximum length of a LOB.</p>
<p>File reference variables are currently supported in the root (/), QOpenSys,
and UDFS file systems. When a file is created, it is given the CCSID of the
data that is being written to the file. Currently, mixed CCSIDs are not supported.
To use a file created with a file reference variable, the file should be opened
in binary mode.</p>
<p>For more information about file reference variables, see the <a href="../sqlp/rbafykickoff.htm">SQL Programming</a> book.</p>
<a name="hscpcj"></a>
<h3 id="hscpcj"><a href="rbafzmst02.htm#ToC_242">Host structures</a></h3><a id="idx611" name="idx611"></a><a id="idx612" name="idx612"></a><a id="idx613" name="idx613"></a><a id="idx614" name="idx614"></a><a id="idx615" name="idx615"></a>
<p>A host structure is a COBOL group, PL/I, C, or C++ structure, or RPG data
structure that is referenced in an SQL statement. Host structures are defined
by statements of the host language, as explained in the <a href="../rzajp/rzajpkickoff.htm">Embedded SQL Programming</a> book. As used here, the term host structure
does not include an SQLCA or SQLDA.</p>
<p>The form of a host structure reference is identical to the form of a host
variable reference. The reference :S1:S2 is a host structure reference if
S1 names a host structure. If S1 designates a host structure, S2 must be either
a small integer variable, or an array of small integer variables. S1 is the
host structure and S2 is its indicator array.</p>
<p>A host structure can be referenced in any context where a list of host
variables can be referenced. A host structure reference is equivalent to a
reference to each of the host variables contained within the structure in
the order which they are defined in the host language structure declaration.
The <span class="italic">n</span>th variable of the indicator array is the indicator
variable for the <span class="italic">n</span>th variable of the host structure.</p>
<p>In C, for example, if V1, V2, and V3 are declared as variables within the
structure S1, the statement: </p>
<a name="ref2x6"></a>
<pre id="ref2x6" class="xmp"> EXEC SQL <span class="bold">FETCH</span> CURSOR1 <span class="bold">INTO</span> :S1;</pre>
<p>is equivalent to: </p>
<a name="ref2x7"></a>
<pre id="ref2x7" class="xmp"> EXEC SQL <span class="bold">FETCH</span> CURSOR1 <span class="bold">INTO</span> :V1, :V2, :V3;</pre>
<p>If the host structure has <span class="italic">m</span> more variables than
the indicator array, the last <span class="italic">m</span> variables of the host
structure do not have indicator variables. If the host structure has <span class="italic">m</span> fewer variables than the indicator array, the last <span class="italic">m</span> variables of the indicator array are ignored. These rules also apply
if a reference to a host structure includes an indicator variable or if a
reference to a host variable includes an indicator array. If an indicator
array or indicator variable is not specified, no variable of the host structure
has an indicator variable.</p><a id="idx616" name="idx616"></a><a id="idx617" name="idx617"></a>
<p>In addition to structure references, individual host variables in the host
structure or indicator variables in the indicator array can be referenced
by qualified names. The qualified form is a host identifier followed by a
period and another host identifier. The first host identifier must name a
host structure, and the second host identifier must name a host variable within
that host structure.</p>
<p>The general form of a host variable or host structure reference is:</p>
<a href="rbafzmstch2refvar.htm#synhlcobol"><img src="c.gif" alt="Click to skip syntax diagram" /></a>
<a name="wq323"></a>
<div class="fignone" id="wq323">
<pre class="cgraphic"><span><img src="c.gif" alt="Read syntax diagram" longdesc="rbafzmstsyn16.htm"
border="0" /></span><a href="#skipsyn-15"><img src="c.gif" alt="Skip visual syntax diagram"
border="0" /></a>>>-:--+------------------+--<span class="italic">host-identifier</span>--------------------->
'-<span class="italic">host-identifier.</span>-'
>--+---------------------------------------------------------+->&lt;
| .-INDICATOR-. |
'-+-----------+--:--+------------------+--<span class="italic">host-identifier</span>-'
'-<span class="italic">host-identifier.</span>-'
</pre>
<a name="skipsyn-15" id="skipsyn-15"></a></div>
<a name="synhlcobol"></a>
<p id="synhlcobol">A <span class="italic">host-variable</span> in an expression
must identify a host variable (not a structure) described in the program according
to the rules for declaring host variables.</p>
<p>The following C example shows a references to host structure, host indicator
array, and a host variable: </p>
<pre class="xmp"> struct { char empno[7];
struct { short int firstname_len;
char firstname_text[12];
} firstname;
char midint,
struct { short int lastname_len;
char lastname_text[15];
} lastname;
char workdept[4];
} pemp1;
short ind[14];
short eind
struct { short ind1;
short ind2;
} indstr;
.....
strcpy(pemp1.empno,"000220");
.....
EXEC SQL
<span class="bold">SELECT</span> *
<span class="bold">INTO</span> :pemp1:ind
<span class="bold">FROM</span> corpdata.employee
<span class="bold">WHERE</span> empno=:pemp1.empno;</pre>
<p>In the example above, the following references to host variables and host
structures are valid: </p>
<pre class="xmp"> :pemp1 :pemp1.empno :pemp1.empno:eind :pemp1.empno:indstr.ind1</pre>
<a name="array"></a>
<h3 id="array"><a href="rbafzmst02.htm#ToC_243">Host structure arrays</a></h3><a id="idx618" name="idx618"></a><a id="idx619" name="idx619"></a><a id="idx620" name="idx620"></a><a id="idx621" name="idx621"></a><a id="idx622" name="idx622"></a>
<p>In PL/I, C++, and C, a host structure array is a structure name having
a dimension attribute. In COBOL, it is a one-dimensional table. In RPG, it
is an occurrence data structure. In ILE RPG, it can also be a data structure
with the keyword DIM. A host structure array can only be referenced in the
FETCH statement when using a multiple-row fetch, or in an INSERT statement
when using a multiple-row insert. Host structure arrays are defined by statements
of the host language, as explained in the <a href="../rzajp/rzajpkickoff.htm">Embedded SQL
Programming</a> book.</p>
<p>The form of a host structure array is identical to the form of a host variable
reference. The reference :S1:S2 is a reference to host structure array if
S1 names a host structure array. If S1 designates a host structure, S2 must
be either a small integer host variable, an array of small integer host variables,
or a two dimensional array of small integer host variables. In the following
example, S1 is the host structure array and S2 is its indicator array. </p>
<pre class="xmp"> EXEC SQL <span class="bold">FETCH</span> CURSOR1 <span class="bold">FOR</span> 5 <span class="bold">ROWS
INTO</span> :S1:S2;</pre>
<p>The dimension of the host structure and the indicator array must be equal.</p>
<p>If the host structure has <span class="italic">m</span> more variables than
the indicator array, the last <span class="italic">m</span> variables of the host
structure do not have indicator variables. If the host structure has <span class="italic">m</span> fewer variables than the indicator array, the last <span class="italic">m</span> variables of the indicator array are ignored. If an indicator array
or variable is not specified, no variable of the host structure array has
an indicator variable.</p>
<p>The following diagram specifies the syntax of references to an array of
host structures:</p>
<a href="rbafzmstch2refvar.htm#synhlarray"><img src="c.gif" alt="Click to skip syntax diagram" /></a>
<a name="wq324"></a>
<div class="fignone" id="wq324">
<pre class="cgraphic"><span><img src="c.gif" alt="Read syntax diagram" longdesc="rbafzmstsyn17.htm"
border="0" /></span><a href="#skipsyn-16"><img src="c.gif" alt="Skip visual syntax diagram"
border="0" /></a>>>-:--<span class="italic">host-identifier</span>--+-----------------------------------+--->&lt;
| .-INDICATOR-. |
'-+-----------+--:--<span class="italic">host-identifier</span>-'
</pre>
<a name="skipsyn-16" id="skipsyn-16"></a></div>
<a name="synhlarray"></a>
<p id="synhlarray">Arrays of host structures are not supported in REXX.</p>
<hr /><div class="fnnum"><a id="wq319" name="wq319" href="rbafzmstch2refvar.htm#wq318">32</a>.</div>
<div class="fntext">It should be noted that although the null
value returned for data mapping errors can be returned on certain scalar functions
and for arithmetic expressions, the result column is not considered null capable
unless an argument of the arithmetic expression or scalar function is null
capable.</div>
<br />
<hr /><br />
[ <a href="#Top_Of_Page">Top of Page</a> | <a href="rbafzmstch2col.htm">Previous Page</a> | <a href="rbafzmstch2function.htm">Next Page</a> | <a href="rbafzmst02.htm#wq1">Contents</a> |
<a href="rbafzmstindex.htm#index">Index</a> ]
<a id="Bot_Of_Page" name="Bot_Of_Page"></a>
</body>
</html>