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.
Because 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_PrefixBinaryLength1and 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 or Type_PrefixBinaryLength1 must be followed by another element that defines the value of the data element. The first element must have the ibmrit: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.


<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 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>