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.

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>