Data types supported in ISO 8583 messages
Test Integrations and APIs 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 Test Integrations and APIs 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>