| United States-English |
|
|
|
![]() |
HP OpenVMS Systems |
|
Web Services
Integration Toolkit for OpenVMS Interface Definition
File (IDL) Reference April 2008 This document contains information that will help you to
read or manually modify the WSIT IDL file. Software Version Web Services Integration Toolkit Hewlett-Packard Company © 2008 Hewlett-Packard Development Company, L.P. Intel, Intel Inside, and Itanium are trademarks of Intel
Corporation in the Microsoft, Windows, Windows XP, Visual Basic, Visual C++,
and Win32 are trademarks of Microsoft Corporation in the Java and all Java-based marks are trademarks or registered
trademarks of Sun Microsystems, Inc. in the All other product names mentioned herein may be trademarks
of their respective companies. Confidential computer software. Valid license from HP and/or
its subsidiaries required for possession, use, or copying. Consistent with FAR
12.211 and 12.212, Commercial Computer Software, Computer Software
Documentation, and Technical Data for Commercial Items are licensed to the U.S.
Government under vendor’s standard commercial license. Neither HP nor any of its subsidiaries shall be liable for
technical or editorial errors or omissions contained herein. The information in
this document is provided “as is” without warranty of any kind and is subject
to change without notice. The warranties for HP products are set forth in the
express limited warranty statements accompanying such products. Nothing herein
should be construed as constituting an additional warranty. About Web Services Integration Toolkit
for OpenVMS Documentation This IDL Reference
describes the layout of the WSIT Interface Definition Language (IDL) file in
order to make it as easy as possible for a developer to manually read and
modify it. The Installation Guide
and Release Notes includes system requirements and installation instructions
for OpenVMS, as well as release notes for the current release of the Web
Services Integration Toolkit for OpenVMS. The Developer’s Guide
contains information about how to use the tools in the Web Services Integration
Toolkit for OpenVMS, and things to consider as you prepare your legacy
application.
|
|
Property Name |
Description |
|
ModuleName |
For 3GL based
applications, this is the fully qualified file specification of the OBJ
module that contains the application’s interface. For ACMS based applications, this is the
ACMS application name. |
|
Language |
This is the language in
which the interface module was written in, such as C89, BASIC, COBOL, and
ACMS, … |
The blocks nested within the <OpenVMSInterface> block contain the collection of
definitions corresponding to that component or translation type. For example:
·
The
<Routines> block contains all of the
individual <Routine> blocks that describe the exposed routines of an
application.
·
The
<Structures> block contains the list of
<Structure> definitions.
·
The
<Primitives> block contains the list of
<Primitive> or OpenVMS datatype translations.
·
The
<Typedefs> block contains the list of
<Typedef> definitions.
·
The
<Enumerations> block contains the list of <Enumeration>
definitions.
All of the individual definition blocks and tags are
described in greater detail below.
The collection of <Enumeration> blocks contains all of the constant definitions that
are defined as enumerations within the application. An <Enumeration> is made up of a name, an OpenVMS datatype, an
optional size in bytes, and the list of Name/Value pairs. The format of the block is as follows:
<Enumerations>
<Enumeration
Name = “myenums”
VMSDataType = “DSC$K_DTYPE_L”
ByteSize = “4”>
[…see Enumerator block for more information…]
</Enumeration>
</Enumerations>
The properties of the <Enumeration> tag are defined as follows:
|
Property Name |
Description |
|
Name |
The name given to this
collection of enumerators. |
|
VMSDataType |
The equivalent OpenVMS
datatype of the enumeration. The DSC$K_DTYPE_* values
are used to specify them in a language and application independent way. |
|
ByteSize |
The size, in bytes, of
the specified datatype. |
Each <Enumerator> within an enumerator collection (an
Enumeration) specifies a name/constant value pair. These pairs make up the set of valid values
for the Enumeration. The format of an
Enumerator is:
<Enumeration …>
<Enumerator Name = “PIC$SIZE1” ConstantValue = “1”/>
<Enumerator Name = “PIC$SIZE2” ConstantValue = “2”/>
</Enumeration>
The properties within the <Enumerator> tag are as follows:
|
Property Name |
Description |
|
Name |
The name given to the
specified constant value. |
|
ConstantValue |
The constant value associated
with the specified name. |
The collection of <Typedef> blocks contains all of the typedef translations used within
the application. Each <Typedef> tag describes a user defined
mapping of a type name to an equivalent type. In C, this would look something
like:
typedef
myint unsigned int;
Each <Typedef> tag has the following format:
<Typedef
Name = “myint”
TargetName = “unsigned int”/>
Where each property is defined below:
|
Property Name |
Description |
|
Name |
The user defined name
associated with the typedef within the application. |
|
TargetName |
The equivelant datatype
that this typedef maps to. This may
specify another typedef, a primitive, or a structure definition. |
The collection of <Primitive> blocks contains the datatype translations to their OpenVMS
equivalents for all datatypes used within an application. Each <Primitive> mapping contains the datatype, the OpenVMS datatype
(primitive) that it maps to, along with any other information needed to
completely describe that primitive. The
<Primitive> tag has the following formats.
The following describes a Packed Decimal:
<Primitive Name = "DSC$K_DTYPE_P_5_2"
Size = "5"
Scale = "2"
VMSDataType = "DSC$K_DTYPE_P" />
The following describes a simple Longword:
<Primitive Name = "int"
Size = "4"
VMSDataType = "DSC$K_DTYPE_L" />
The following describe different string types (a dynamic string and a varying string):
<Primitive Name = “String_Dynamic"
Size = "0"
FixedFlag = "0"
NullTerminatedFlag = "1"
VMSDataType = "DSC$K_DTYPE_T"
/>
<Primitive Name = “Varying_String_20"
Size = "20"
FixedFlag = "0"
NullTerminatedFlag = "1"
VMSDataType =
"DSC$K_DTYPE_VT" />
The properties of the <Primitive> tag are described below:
|
Property Name |
Description |
|
Name |
The application or
language specific name for the specified datatype, such as unsigned int or PIC 9(8).** |
|
VMSDataType |
The equivalent OpenVMS
datatype specification. The DSC$K_DTYPE_* values are used to specify them in a
language neutral way. |
|
Size |
The size of the primitive
being defined.*** This is ignored for
datatypes whose size is constant, such as DSC$K_DTYPE_L. If the datatype is a string and the size is
0, then the string is considered dynamically sized. |
|
Scale |
Only used with scaled
numeric datatypes, this property specifies the scale factor for the primitive
being defined. Note that a positive
scale factor specifies that the decimal point moves to the left. (The example above would represent a number
with the format of 123.45.) |
|
FixedFlag |
Only used with string
datatypes, this property specifies that the string being defined is of fixed
size. A value of 1 specifies fixed size,
while a 0 specifies that the string is dynamically sized. |
|
NullTerminatedFlag |
Only used with string
datatypes, this property specifies if a null terminator should be appended to
the end of the string. For fixed
length strings, the string will be truncated if needed in order to append the
null terminator. A value of 1 says to
append a null, while a value of 0 specifies no null. |
|
MemoryFreeByWSIT (New in V2.0.) |
Only used with BLOB
datatypes. If set to 1, it specifies
that WSIT should deallocate the memory that the user allocated once the call
is complete. (Refer to Section 5.) |
** All Primitive Names must be unique. For primitives that are the same but differ in
size and/or scale, one way force uniqueness is to embed the size and scale
values into the Primitive Name itself. (See the Packed Decimal example above.)
*** The size is specified in bytes for
all datatypes except Scaled Numerics, where the size specifies the number of
digits. Note that for Varying Strings,
the size specifies the maximum length of the string. (The actual length of the varying string is
determined at runtime. If the varying
string size is specified as 0, then the actual length at runtime is used as the
maximum size.)
Although a language may refer to them as Records,
Workspaces, or Structures, all languages support the concept of a
structure. The collection of <Structure> blocks contains all of the user defined
structure definitions that will be passed in or out of the application’s
interface. Each <Structure> block represents a single user
defined structure definition. All
parameters and fields must eventually map to an OpenVMS primitive, or one of these
structure definitions. The format of the
<Structure> block is:
<Structures>
<Structure Name = "MyStruct"
TotalPaddedSize = "128">
[…See Field Block below for more information…]
</Structure>
</Structures>
The properties of the <Structure> tag are:
|
Property Name |
Description |
|
Name |
The user specified name
given to this structure (record, workspace, …) definition. |
|
TotalPaddedSize |
The size of the structure,
including any padding added for alignment purposes. |
Each <Field>…</Field> block describes a single field
within a structure. The format of a <Field> block is as follows:
<Structure … >
<Field
Name = "Fld1"
Type = "signed int"
Offset = "0"/>
<Field
Name = "Fld2"
Type = "FixedString16"
Offset = "4"/>
<Field
Name = "AryFld3"
Type = "signed int"
Offset = "20"
ArrayDimension = "1"
RowByColumn = "0">
<Array LowerBound = "0"
UpperBound = "9"/>
</Field>
</Structure>
The properties of the <Field> tag are:
|
Property Name |
Description |
|
Name |
The user specified name given
to this field |
|
Type |
The language dependant or
application specific datatype associated with this field. (Primitive, Typedef, Enumeration, or
Structure.) |
|
Offset |
The offset (within the
structure) to the start of this field. |
|
ArrayDimension |