Data types supported in ISO 8583 messages
HCL OneTest™ API provides support for additional data
types that can be used in ISO 8583 messages. These data types are
described in ISO8583Types.xsd
that is located in install_dir/examples/ISO8583/
.
Use the following types to define data elements that
are a nibble long and variable data elements that have nibble as their
length unit:
Type_PrefixBinaryLength1
: For the length prefix of one byte represented as binary.Type_PrefixBinaryLength2
: For the length prefix of two bytes represented as binary.Type_n_BCD
: For a digital value represented as BCD (Binary-Coded Decimal).Type_Nibble
: For a nibble element.
Type_PrefixBinaryLength1
and Type_PrefixBinaryLength2
define
the length prefix only, you must use them together with the other
simple types to define a data element. For example, you can use Type_PrefixBinaryLength1
and Type_n_BCD
together
to define a variable length data element which has nibble as its length
unit and holds a numeric value. In a data element defined in this
manner, the first byte, which is the length prefix, is represented
as a binary integer and the other bytes of the numeric value are represented
as BCD. For an element of type n .. 19
having a length
prefix of 16 and a value of 1234567890123456
, the
HEX representation is 1101234567890123456
. You can
define this data element with two elements in the DFDL schema by using Type_PrefixBinaryLength1
and Type_n_BCD
.Note: While
the length prefix is defined by
Type_PrefixBinaryLength1
, Type_PrefixBinaryLength2
is
however hidden in the message tree on the HCL OneTest™ API user
interface.Rules of defining the length prefix
Consider
the following rules when you use Type_PrefixBinaryLength1
or Type_PrefixBinaryLength2
to
define the length prefix:
- An element of type
Type_PrefixBinaryLength1
orType_PrefixBinaryLength1
must be followed by another element that defines the value of the data element. The first element must have theibmrit:lengthDefinitionFor
attribute with the name of the second element set as its value. - Use a function to define the length of the second element.
- Define the fixed attribute in the first element only if the length prefix of the defined data element does not vary in your data.
Example
<xsd:element dfdl:lengthKind="implicit" dfdl:occursCount="{/ISO8583_1987_Example/PrimaryBitmap/Bit002}"
minOccurs="0" name="CardNumber_002_Length" type="ISO8583Types:Type_PrefixBinaryLength1"
ibmrit:lengthDefinitionFor="CardNumber_002" fixed="17">
</xsd:element>
<xsd:element dfdl:occursCount="{/ISO8583_1987_Example/PrimaryBitmap/Bit002}" minOccurs="0" name="CardNumber_002"
dfdl:length="{xs:nonNegativeInteger(fn:floor((/ISO8583_1987_Example/CardNumber_002_Length + 1) div 2))}"
dfdl:occursCountKind="implicit"> <xsd:simpleType> <xsd:restriction base="ISO8583Types:Type_n_BCD">
</xsd:restriction> </xsd:simpleType> </xsd:element>