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

668 lines
13 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>Data Type Definitions of ILE CEE APIs</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: -->
<!-- YYMMDD USERID Change description -->
<!-- ILE1A SCRIPT A converted by B2H R4.1 (346) (CMS) by NLJONES at -->
<!-- RCHVMX on 25 Feb 1999 at 10:33:07 -->
<link rel="stylesheet" type="text/css" href="../rzahg/ic.css">
</head>
<body>
<!--End Header Records --><!-- Java sync-link -->
<script type="text/javascript" language="Javascript" src="../rzahg/synch.js">
</script>
<a name="top_Of_Page"></a>
<h2>Data Type Definitions of ILE CEE APIs</h2>
<p>The data types that are used in the parameter tables for each ILE CEE API
are defined in <a href="#TBLDTDEF">Data Type Definitions across ILE
Languages</a>. The information in the ILE RPG column assumes RPG
D-Specification coding.</p>
<p><strong><a name="TBLDTDEF">Data Type Definitions across ILE
Languages</a></strong></p>
<table border>
<tr>
<th align="left" valign="top">Data Type</th>
<th align="left" valign="top">Description</th>
<th align="left" valign="top">ILE C</th>
<th align="left" valign="top">ILE COBOL</th>
<th align="left" valign="top">ILE RPG</th>
</tr>
<tr>
<td align="left" valign="top" width="11%">CHAR</td>
<td align="left" valign="top" width="14%">A 1-byte unsigned character</td>
<td align="left" valign="top" width="25%">typedef unsigned char _CHAR;<br>
</td>
<td align="left" valign="top" width="18%">PIC X</td>
<td align="left" valign="top" width="22%">
<pre>
blank or A in data type
column
To/L of 1
</pre>
<br>
</td>
</tr>
<tr>
<td align="left" valign="top">UCHAR</td>
<td align="left" valign="top">A 1-byte unsigned character</td>
<td align="left" valign="top">typedef unsigned char _UCHAR;<br>
</td>
<td align="left" valign="top">PIC X</td>
<td align="left" valign="top">
<pre>
blank or A in data type
column
To/L of 1
</pre>
<br>
</td>
</tr>
<tr>
<td align="left" valign="top">SCHAR</td>
<td align="left" valign="top">A 1-byte signed character</td>
<td align="left" valign="top">typedef signed char _SCHAR;<br>
</td>
<td align="left" valign="top">PIC X</td>
<td align="left" valign="top">
<pre>
blank or A in data type
column
To/L of 1
</pre>
<br>
</td>
</tr>
<tr>
<td align="left" valign="top">INT2</td>
<td align="left" valign="top">A 2-byte signed integer</td>
<td align="left" valign="top">typedef signed short _INT2;<br>
</td>
<td align="left" valign="top">PIC S9(4) BINARY</td>
<td align="left" valign="top">
<pre>
I in data type column
To/L of 5
decimal positions = 0
</pre>
<br>
</td>
</tr>
<tr>
<td align="left" valign="top">UINT2</td>
<td align="left" valign="top">A 2-byte unsigned integer</td>
<td align="left" valign="top">typedef unsigned short _UINT2;<br>
</td>
<td align="left" valign="top">PIC 9(4) BINARY</td>
<td align="left" valign="top">
<pre>
U in data type column
To/L of 5
decimal positions = 0
</pre>
<br>
</td>
</tr>
<tr>
<td align="left" valign="top">INT4</td>
<td align="left" valign="top">A 4-byte signed integer</td>
<td align="left" valign="top">typedef signed int _INT4;<br>
</td>
<td align="left" valign="top">PIC S9(9) BINARY</td>
<td align="left" valign="top">
<pre>
I in data type column
To/L of 10
decimal positions = 0
</pre>
<br>
</td>
</tr>
<tr>
<td align="left" valign="top">UINT4</td>
<td align="left" valign="top">A 4-byte unsigned integer</td>
<td align="left" valign="top">typedef unsigned int _UINT4;<br>
</td>
<td align="left" valign="top">PIC 9(9) BINARY</td>
<td align="left" valign="top">
<pre>
U in data type column
To/L of 10
decimal positions = 0
</pre>
<br>
</td>
</tr>
<tr>
<td align="left" valign="top">FLOAT4</td>
<td align="left" valign="top">A 4-byte single-precision floating-point
number</td>
<td align="left" valign="top">typedef float _FLOAT4;<br>
</td>
<td align="left" valign="top">COMP-1</td>
<td align="left" valign="top">
<pre>
F in data type column
To/L of 4
</pre>
<br>
</td>
</tr>
<tr>
<td align="left" valign="top">FLOAT8</td>
<td align="left" valign="top">An 8-byte double-precision floating-point
number</td>
<td align="left" valign="top">typedef double _FLOAT8;<br>
</td>
<td align="left" valign="top">COMP-2</td>
<td align="left" valign="top">
<pre>
F in data type column
To/L of 8
</pre>
<br>
</td>
</tr>
<tr>
<td align="left" valign="top">COMPLEX8</td>
<td align="left" valign="top">An 8-byte complex number, whose real and
imaginary parts are each 4-byte single-precision floating-point numbers. Used
only by ILE math routines.</td>
<td align="left" valign="top">
<pre>
typedef struct {
float real,
imaginary;
} _COMPLEX8;
</pre>
<br>
</td>
<td align="left" valign="top">
<pre>
01 complex8
02 real comp-1
02 imag comp-1
</pre>
<br>
</td>
<td align="left" valign="top">
<pre>
Name To/L
Entry Entry
complex8 DS
real 4F
imaginary 4F
</pre>
<br>
</td>
</tr>
<tr>
<td align="left" valign="top">COMPLEX16</td>
<td align="left" valign="top">A 16-byte complex number whose real and imaginary
parts are each 8-byte double-precision floating-point numbers. Used only by ILE
math routines.</td>
<td align="left" valign="top">
<pre>
typedef struct {
double real,
imaginary;
} _COMPLEX16;
</pre>
<br>
</td>
<td align="left" valign="top">
<pre>
01 complex16
02 real comp-2
02 imag comp-2
</pre>
<br>
</td>
<td align="left" valign="top">
<pre>
Name To/L
Entry Entry
complex16 DS
real 8F
imaginary 8F
</pre>
<br>
</td>
</tr>
<tr>
<td align="left" valign="top">BITS</td>
<td align="left" valign="top">A set of adjacent bits within a single storage
unit. The notation is <samp>_BITS: x</samp>, where x is the field width in bits.
(BITS may also be used to define unsigned integers.)</td>
<td align="left" valign="top">typedef unsigned int _BITS;<br>
</td>
<td align="left" valign="top">Not applicable</td>
<td align="left" valign="top">Not applicable</td>
</tr>
<tr>
<td align="left" valign="top">POINTER</td>
<td align="left" valign="top">A platform-dependent address pointer</td>
<td align="left" valign="top">typedef void * _POINTER;<br>
</td>
<td align="left" valign="top">USAGE IS POINTER</td>
<td align="left" valign="top">
<pre>
* in data type column
procedure pointer =
ProcPtr
basing pointer is the
default if ProcPtr is
not defined in
the keyword section.
</pre>
<br>
</td>
</tr>
<tr>
<td align="left" valign="top">INVPTR</td>
<td align="left" valign="top">An invocation pointer</td>
<td align="left" valign="top">
<pre>
typedef void * _INVPTR;
#pragma pointer (_INVPTR,
INVPTR)
</pre>
<br>
</td>
<td align="left" valign="top">Not applicable</td>
<td align="left" valign="top">Not applicable</td>
</tr>
<tr>
<td align="left" valign="top">LBLPTR</td>
<td align="left" valign="top">A label pointer</td>
<td align="left" valign="top">
<pre>
typedef void * _LBLPTR;
#pragma pointer (_LBLPTR,
LBLPTR)
</pre>
<br>
</td>
<td align="left" valign="top">Not applicable</td>
<td align="left" valign="top">Not applicable</td>
</tr>
<tr>
<td align="left" valign="top">CHAR<em>n</em></td>
<td align="left" valign="top">A string (character array) of length n</td>
<td align="left" valign="top">typedef char[n] _CHAR[n];</td>
<td align="left" valign="top">PIC X(n)</td>
<td align="left" valign="top">
<pre>
blank or A in data type
column
To/L &gt;= 1
</pre>
<br>
</td>
</tr>
<tr>
<td align="left" valign="top">VFLOAT</td>
<td align="left" valign="top">An ILE variable-length floating-point number used
for polymorphic parameter declarations. The length may be any one of 4, 8, or
16 bytes corresponding to single, double, and extended precision.</td>
<td align="left" valign="top">
<pre>
typedef union {
float TypeFloat4;
double TypeFloat8;
long double TypeFloat16;
} _VFLOAT;
</pre>
<br>
</td>
<td align="left" valign="top">Not applicable</td>
<td align="left" valign="top">Not applicable</td>
</tr>
<tr>
<td align="left" valign="top">VSTRING</td>
<td align="left" valign="top">An ILE string of arbitrary length used for
polymorphic string parameter declarations. The string may be any one of a
fixed-length string, a null-terminated varying string (known as an "ASCIIZ") or
a length-prefixed string.<br>
</td>
<td align="left" valign="top">(See note 1)
<pre>
typedef union {
struct {
_INT2 length;
_CHAR255 string;
} l2pstring;
struct {
_INT4 length;
_CHAR255 string;
} l4pstring;
_CHAR1 stringz;
} _VSTRING;
</pre>
</td>
<td align="left" valign="top">
<pre>
01 string4
02 len pic 9(9)
binary
02 txt pic x(n)
01 string2
REDEFINES string4
02 len pic 9(4)
binary
02 txt pic x(n)
</pre>
<br>
</td>
<td align="left" valign="top">
<pre>
Name To/L
Entry Entry
vstring DS
len 1 2I 0
txt 3 n
len2 1 4I 0
txt2 5 n
</pre>
<br>
</td>
</tr>
<tr>
<td align="left" valign="top">FEEDBACK</td>
<td align="left" valign="top">A mapping of the feedback (condition) token
(fc)</td>
<td align="left" valign="top">
<pre>
typedef volatile struct {
_UINT2 MsgSev;
_UINT2 MsgNo;
_BITS Case :2;
_BITS Severity :3;
_BITS Control :3;
_CHAR Facility_ID[3];
_UINT4 I_S_Info;
} _FEEDBACK;
</pre>
<br>
</td>
<td align="left" valign="top">
<pre>
01 fc
02 sev pic 9(4)
binary
02 msgno pic 9(4)
binary
02 flgs pic x(1)
02 facid pic x(3)
02 isi pic 9(9)
binary
</pre>
<br>
</td>
<td align="left" valign="top">
<pre>
Name To/L
Entry Entry
fc DS
sev 5U
msgno 5U
flags 1
facid 3
isi 10U
</pre>
<br>
</td>
</tr>
<tr>
<td align="left" valign="top">CEE-ENTRY</td>
<td align="left" valign="top">A generic entry constant</td>
<td align="left" valign="top">
<pre>
struct {
_POINTER address;
_POINTER nesting;
}
</pre>
<br>
</td>
<td align="left" valign="top">
<pre>
01 STRUC-NAME.
05 STRUC-ADDRESS
POINTER.
05 STRUC-NESTING
POINTER.
</pre>
<br>
</td>
<td align="left" valign="top">
<pre>
DCEE_ENTRY DS
D Address_Ptr * ProcPtr
D Nesting_Ptr * ProcPtr
</pre>
<br>
</td>
</tr>
<tr>
<td align="left" valign="top">HDLR_ ENTRY</td>
<td align="left" valign="top">A procedure pointer used on the CEEHDLR and
CEEHDLU APIs.</td>
<td align="left" valign="top">
<pre>
typedef void (*_HDLR_ENTRY)
( _FEEDBACK *,
_POINTER *,
_INT4 *,
_FEEDBACK * );
</pre>
<br>
</td>
<td align="left" valign="top">
<pre>
77 HDLR_ENTRY
PROCEDURE-
POINTER
</pre>
<br>
</td>
<td align="left" valign="top">
<pre>
DHDLR_ENTRY * ProcPtr
</pre>
<br>
</td>
</tr>
<tr>
<td align="left" valign="top">RTX_ENTRY</td>
<td align="left" valign="top">A procedure pointer used on the CEERTX and CEEUTX
APIs.</td>
<td align="left" valign="top">
<pre>
typedef void (*_RTX_ENTRY)
( _POINTER *);
</pre>
<br>
</td>
<td align="left" valign="top">
<pre>
77 RTX_ENTRY
PROCEDURE-
POINTER
</pre>
<br>
</td>
<td align="left" valign="top">
<pre>
DRTX_ENTRY * ProcPtr
</pre>
<br>
</td>
</tr>
<tr>
<td align="left" valign="top">RAGE_ ENTRY</td>
<td align="left" valign="top">A procedure pointer used on the CEE4RAGE
API.</td>
<td align="left" valign="top">
<pre>
typedef void (*_RAGE_ENTRY)
( _UINT4 *,
_UINT4 *,
_UINT4 *,
_UINT4 * );
</pre>
<br>
</td>
<td align="left" valign="top">
<pre>
77 RAGE_ENTRY
PROCEDURE-
POINTER
</pre>
<br>
</td>
<td align="left" valign="top">
<pre>
DRAGE_ENTRY * ProcPtr
</pre>
<br>
</td>
</tr>
<tr>
<td align="left" valign="top">CEELABEL</td>
<td align="left" valign="top">A target label to a code point within a call
stack entry.</td>
<td align="left" valign="top">
<pre>
typedef volatile struct {
_INVPTR invocation;
_LBLPTR label;
} _CEELABEL;
</pre>
<br>
</td>
<td align="left" valign="top">Not applicable</td>
<td align="left" valign="top">Not applicable</td>
</tr>
<tr>
<td align="left" valign="top" colspan="5"><strong>Note:</strong>
<table cellpadding="3">
<tr>
<td align="left" valign="top">1</td>
<td align="left" valign="top">The typedef for VSTRING is only an indication of
the variable string. For ILE C purposes this should be coded as <em>char
*</em>.</td>
</tr>
</table>
</td>
</tr>
</table>
<p>Strong alignment is assumed in all data structures. Each item is aligned on
the proper boundary for its type, with padding if necessary.</p>
<p>For more information about using ILE CEE APIs, see the following
sections:</p>
<ul>
<li><a href="ile1a2.htm">ILE CEE API Calling and Naming
Conventions</a>&nbsp;</li>
<li><a href="ile1a5.htm">Omitting Parameters in ILE CEE</a></li>
<li><a href="ile1a6.htm">i5/OS Messages and the ILE CEE API Feedback
Code</a></li>
</ul>
<br>
<hr>
<br>
<center>
<table cellpadding="2" cellspacing="2">
<tr align="center">
<td valign="middle" align="center"><a href="#top_Of_Page">Top</a> | <a href=
"ile1a1.htm">ILE CEE APIs</a> | <a href="aplist.htm">APIs by category</a></td>
</tr>
</table>
</center>
</body>
</html>