Message Sets: CWF properties for embedded simple type string types

Physical representation, null values, byte alignment, and occurrences.

The Custom Wire Format properties described here apply to:

  • Objects: Embedded simple types

Physical representation

Property Type Meaning
Physical Type Enumerated type Select one from the displayed list:
  • Fixed Length String. The element's length is determined by other length properties as follows.
  • Length Encoded String 1. The first byte of the element contains the length of the string following the length byte in length units. The maximum length of a Length Encoded String 1 element is 255 length units.
  • Length Encoded String 2. The element's first 2 bytes contain the length of the string following the two length bytes in length units. The maximum length of a Length Encoded String 2 element is 65535 length units. The two length bytes are in the format of the IBM® MQ queue manager Encoding.
  • Null Terminated String. The string ends with the hexadecimal NULL character, X'00'.

The default is Fixed Length String.

Length Button and Integer If you have selected a Physical Type of Fixed Length String or Binary, and have selected the length to be defined by Length, enter the number of length units for the element.

The minimum value that you can specify is 0 (zero), the maximum value that you can specify is 2147483647

The default value is 0 (zero).

Length Reference Button and Enumerated type If you have selected the length to be defined by Length Reference, select the name of the integer object that specifies the length of this object. Make your selection from the displayed list of integer objects that are defined as siblings of the current object, and occur before it in the structure of the message.

For information about reordering elements, see Message Sets: Reordering objects.

Length Units Enumerated type Select the unit of length for the element or attribute. Select one of the following options from the displayed list (some physical types do not offer all these options):
  • Bytes. The length is given in bytes.
  • Characters. The Length is given in characters. This means that the number of bytes that are processed in the bitstream depends on the code page of the characters that are being processed.
    • For a single-byte code page (SBCS CCSID) such as "latin-1" (CCSID 850), the number of bytes is equal to the number of characters.
    • For a double-byte code page (DBCS CCSID) such as "UTF-16" (CCSID 1200), the number of bytes is exactly twice the number of characters.
    • For a multibyte code page (MBCS CCSID) such as "UTF-8" (CCSID 1208), the number of bytes depends on the bitstream content. The parser reads one character at a time and determines whether the character comprises one or more bytes.
  • Character Units. This option specifies that the size of each character (in bytes) is determined by the code page of the message.
    • For single-byte and double-byte code pages, this option is identical to Characters.
    • For a multibyte code page, this option provides improved parsing performance by assuming that every character is encoded in the smallest character unit that the code page supports. However, this means that a message must contain only these characters if it is to be processed correctly. For example, in code page "UTF-8" (CCSID 1208), the minimum character unit is 1 byte; therefore, the parser can make a single read (of the number of bytes specified by the Length property) to fetch the entire message. The message must contain only characters that are encoded in 1-byte units.
  • End of Bitstream. All data up to the end of the bitstream is processed. This option is valid only if the element is the last in the message. If you select this value, you do not need to enter a value for the Length Count or Length Reference property.

The default is Bytes.

Justification Enumerated type If you have set the Physical Type property to Fixed Length String, select Left Justify (the default value) or Right Justify from the list. If you have selected another value for Physical Type, this property is inactive.
Padding Character String

If you have set the Physical Type property to Fixed Length String, and the Justification property is either Left Justify or Right Justify, this property is applicable.

When writing an output message, use the padding character to fill out the remaining character positions when the string length is less than the length implied by the Length or Length Reference property. Whether the string is padded from the left or the right is governed by the Justification property.

When parsing an input message, the padding character is trimmed from the end of the string. Whether the string is trimmed from the left or the right is governed by the Justification property.

Specify this character in one of the following ways:

  • Select NUL, '0', or SPACE from the displayed list.
  • Enter a character between quotation marks; for example, "c" or 'c', where c is any alphanumeric character.
  • Enter a Unicode value in the form U+xxxx where xxxx is a Unicode value specified in hexadecimal. The maximum length of the string that you can enter is 10.
  • Enter a hexadecimal character in the form 0xYY, where YY is a hexadecimal value.
  • Enter a decimal byte value (from 0 to 255).

The choice of which of these padding character forms is used for an MRM element depends on the padding character that is required and whether the padding character is to be subject to data conversion. In most cases, the specification of a padding character in quotation marks is sufficient, and when this padding character is used, it is converted to the target code page of the output MRM message that is being generated. For example, when converting from ASCII to the code page 500, if you have specified U+0008 as your padding character, it is converted from 0x08 to 0x15, the ASCII and EBCDIC representations of 'back space'.

If a padding character is required that cannot easily be entered in the padding character field, the Unicode mnemonic format can be used to specify the required character. When used, this Unicode value is also converted to the target code page of the MRM message that is being generated.

If you are converting a message from one code page to another, ensure that the converted value of the padding character is valid for this code page. If the padding character cannot be represented in the target code page, it is replaced by a substitution character. The substitution character is fixed and its value depends on the specified target code page.

If a padding character is required that is not subject to data conversion, the hexadecimal or decimal format can be used and you then have the option of specifying an absolute value as a padding character that is inserted directly into the output message. If this format is used, ensure still that this value is valid for the code page of any output messages that are created using these MRM definitions.

Representation of null values

Property Type Meaning
Encoding Null Enumerated type Select one of the following options from the displayed list:
  • NULLPadFill. This is valid only if Physical Type is Fixed Length String. The field is filled with the value specified by the Padding Character. Encoding Null Value must be set to an empty string.
  • NULLLogicalValue. The Encoding Null Value is transformed to match the required format for the field. The default value.
  • NULLLiteralValue. The Encoding Null Value is directly substituted as if it is a string.
  • NULLLiteralFill. The field is filled with the value specified by the Encoding Null Value. Encoding Null Value must resolve to a single character.
Encoding Null Value STRING The use of this property depends on the Encoding Null property. If specified, its length must be equal to the length of the string element, except for NULLLiteralFill.

The default value is empty (not set).

If you set the Encoding Null property to NULLLiteralFill, the value must resolve to a single character. Set the character in one of the following ways:
  • Select SPACE, NUL, 0x00 or 0xFF from the displayed list
  • Enter a character between quotation marks, for example 'c' or "c", where c is any alphanumeric character.
  • Enter a hexadecimal character code in the form 0xYY where YY is a hexadecimal value.
  • Enter a decimal character code in the form YY where YY is a decimal value.
  • Enter a Unicode value in the form U+xxxx where xxxx is a Unicode value specified in hexadecimal format.

Byte alignment

Property Type Meaning
Byte Alignment Enumerated type Specify how the object is aligned from the start of the message. Select one of:
  • 1 Bytes. The default value.
  • 2 Bytes
  • 4 Bytes
  • 8 Bytes
  • 16 Bytes
Leading Skip Count Integer Specify the number of bytes to skip before reading or writing this object. The default is 0, the minimum value is 0, and the maximum value is 999999. You can use this value to ignore unwanted fields in a structure, or to model a field defined by C or COBOL data which requires alignment on a 2, 4, 8 or 16 byte boundary. Specify the number of bytes to skip before reading or writing this object. When an output message is written, Skip Count bytes are assigned the value of the message set Byte Alignment Pad property.

For repeating objects, this property is applied to the first instance only.

Trailing Skip Count Integer Specify the number of bytes to skip after reading or writing this object. The default is 0, the minimum value is 0, and the maximum value is 999999. You can use this value to ignore unwanted fields in a structure, or to model a repeating structure containing fields which require alignment on a 2, 4, 8 or 16 byte boundary. When an output message is written, Skip Count bytes are assigned the value of the message set Byte Alignment Pad property.

For repeating objects, this property is applied to all instances.

Occurrences

Property Type Meaning
Repeat Reference Enumerated type Use this property if the object occurs multiple times, and the number of occurrences is given dynamically by a field earlier in the message. Select an integer object from the displayed list of integer objects that occur before this object in the structure of the message. The value of the selected integer specifies the number of occurrences of this object. If no objects are listed, there are no integer objects before this one in the message structure.

If a Repeat Reference is specified, it overrides any setting for the Max Occurs logical property when parsing and writing the message, but not for validation of the message.