Decimal Mantissa problem

Imported from previous forum

I have the following template:

Part of template
[decimal name=“MDEntrySize” id=“271” presence=“optional”]
[exponent][copy value=“0”/][/exponent]
[mantissa][delta/][/mantissa]
[/decimal]

pmap [1] for the exponent
no bit for the mantissa as this is a delta operator

For the exponent I get the following hex value 0x83 which is 3 minus (1) for being optional && greater than zero giving a total value for the exponent of 2

For the mantissa the next hex value is 0x80 which is mandatory and a signed integer null.

Therefore when I get the final decimal it reads as [0 x 10.pow(2)] = 0;

This seems correct except when I compare this to the openfast implementation I get 100 (as below line 7 271=100)

The lines below show 4 entries under a single sequence.

The line beginning with ‘+’ are from my own implementation.
The line with * is from openfast implementation
Both versions processing the exact same binary message.

You can see line 8, field value 271=0 and does not match the openfast results.

13:16:26.345 DEBUG: SWX SenderCompID:SWXGROUP-MDI.P01|MsgSeqNum:1290985|PossResend:N|SendingTime:20090929-12:31:06.631|MDBookType:2|NoMDEntries:4

  • 279=2,269=0,48=CH0047533572,273=12:31:06.616,336=EBRk,1023=3,83=33358
  • 279=2,269=0,48=CH0047533572,273=12:31:06.616,336=EBRk,1023=3,83=33358
  • 279=0,269=0,48=CH0047533572,270=1595.44,271=100,273=12:31:06.616,336=EBRk,346=0,6566=1,1023=3,83=33359
  • 279=0,269=0,48=CH0047533572,270=1595.44,271=100,273=12:31:06.616,336=EBRk,346=0,6566=1,1023=3,83=33359
  • 279=2,269=1,48=CH0047533572,273=12:31:06.616,336=EBRk,1023=2,83=33360
  • 279=2,269=1,48=CH0047533572,273=12:31:06.616,336=EBRk,1023=2,83=33360
  • 279=0,269=1,48=CH0047533572,270=1610.44,271=100,273=12:31:06.616,336=EBRk,346=0,6566=1,1023=2,83=33361
  • 279=0,269=1,48=CH0047533572,270=1610.44,271=0, 273=12:31:06.616,336=EBRk,346=1,6566=1,1023=2,83=33361

Another issue I noticed was reference to 346=1 (ln 8)

Part of template
[uInt32 name=“NumberOfOrders” id=“346” presence=“optional”] [delta value=“1”/] [/uInt32]

The value of hex is 0x81 = 1 minus (1) for optional && greater than zero which then has a field value of 0;
But as per the context instruction above the delta value is 1 and the Entry in in the state undefinded so the initial Uint value = 1;
Is this correct or have I made a wrong interpretation

Hi Naresh,
To address the second part of your question

Another issue I noticed was reference to 346=1 (ln 8)

Part of template [uInt32 name=“NumberOfOrders” id=“346”
presence=“optional”] [delta value=“1”/] [/uInt32]

The value of hex is 0x81 = 1 minus (1) for optional && greater than zero
which then has a field value of 0; But as per the context instruction
above the delta value is 1 and the Entry in in the state undefinded so
the initial Uint value = 1; Is this correct or have I made a wrong
interpretation

This looks correct. The delta value after allowing for NULL is zero so in the decoded message the NumberOfOrders field is present with a value of 1.

Dale

Dale Wilson
Principal Software Engineer
Object Computing, Inc. (www.ociweb.com)
Lead developer for QuickFAST (http:www.quickfast.org)

Hi Dale

Thank you for your response -

I would be most grateful if you are able to give me some feedback re: the first part of my query alo copied below:

Part of template
[decimal name=“MDEntrySize” id=“271” presence=“optional”]
[exponent][copy value=“0”/][/exponent]
[mantissa][delta/][/mantissa]
[/decimal]

pmap [1] for the exponent
no bit for the mantissa as this is a delta operator

For the exponent I get the following hex value 0x83 which is 3 minus (1) for being optional && greater than zero giving a total value for the exponent of 2

For the mantissa the next hex value is 0x80 which is mandatory and a signed integer null.

Therefore when I get the final decimal it reads as [0 x 10.pow(2)] = 0;

This seems correct except when I compare this to the openfast implementation I get 100 (as below line 7 271=100)

The lines below show 4 entries under a single sequence.

The line beginning with ‘+’ are from my own implementation.
The line with * is from openfast implementation
Both versions processing the exact same binary message.

You can see line 8, field value 271=0 and does not match the openfast results.

13:16:26.345 DEBUG: SWX SenderCompID:SWXGROUP-MDI.P01|MsgSeqNum:1290985|PossResend:N|SendingTime:20090929-12:31:06.631|MDBookType:2|NoMDEntries:4

  • 279=2,269=0,48=CH0047533572,273=12:31:06.616,336=EBRk,1023=3,83=33358
  • 279=2,269=0,48=CH0047533572,273=12:31:06.616,336=EBRk,1023=3,83=33358
  • 279=0,269=0,48=CH0047533572,270=1595.44,271=100,273=12:31:06.616,336=EBRk,346=0,6566=1,1023=3,83=33359
  • 279=0,269=0,48=CH0047533572,270=1595.44,271=100,273=12:31:06.616,336=EBRk,346=0,6566=1,1023=3,83=33359
  • 279=2,269=1,48=CH0047533572,273=12:31:06.616,336=EBRk,1023=2,83=33360
  • 279=2,269=1,48=CH0047533572,273=12:31:06.616,336=EBRk,1023=2,83=33360
  • 279=0,269=1,48=CH0047533572,270=1610.44,271=100,273=12:31:06.616,336=EBRk,346=0,6566=1,1023=2,83=33361
  • 279=0,269=1,48=CH0047533572,270=1610.44,271=0, 273=12:31:06.616,336=EBRk,346=1,6566=1,1023=2,83=33361

Thanks

Naresh

Are you able to comment on the first part of my > Hi Naresh, To address the second part of your question

Another issue I noticed was reference to 346=1 (ln 8)

Part of template [uInt32 name=“NumberOfOrders” id=“346”
presence=“optional”] [delta value=“1”/] [/uInt32]

The value of hex is 0x81 = 1 minus (1) for optional && greater than
zero which then has a field value of 0; But as per the context
instruction above the delta value is 1 and the Entry in in the state
undefinded so the initial Uint value = 1; Is this correct or have I
made a wrong interpretation

This looks correct. The delta value after allowing for NULL is zero so
in the decoded message the NumberOfOrders field is present with a
value of 1.

Dale

Dale Wilson Principal Software Engineer Object Computing, Inc.
(www.ociweb.com) Lead developer for QuickFAST (http:www.quickfast.org)

Hi Naresh,

Even I am facing this problem. Were you able to figure out?

Thanks,
Gaurav

Hi Dale

Thank you for your response -

I would be most grateful if you are able to give me some feedback re: the first part of my query alo copied below:

Part of template
[decimal name=“MDEntrySize” id=“271” presence=“optional”]
[exponent][copy value=“0”/][/exponent]
[mantissa][delta/][/mantissa]
[/decimal]

pmap [1] for the exponent
no bit for the mantissa as this is a delta operator

For the exponent I get the following hex value 0x83 which is 3 minus (1) for being optional && greater than zero giving a total value for the exponent of 2

For the mantissa the next hex value is 0x80 which is mandatory and a signed integer null.

Therefore when I get the final decimal it reads as [0 x 10.pow(2)] = 0;

This seems correct except when I compare this to the openfast implementation I get 100 (as below line 7 271=100)

The lines below show 4 entries under a single sequence.

The line beginning with ‘+’ are from my own implementation.
The line with * is from openfast implementation
Both versions processing the exact same binary message.

You can see line 8, field value 271=0 and does not match the openfast results.

13:16:26.345 DEBUG: SWX SenderCompID:SWXGROUP-MDI.P01|MsgSeqNum:1290985|PossResend:N|SendingTime:20090929-12:31:06.631|MDBookType:2|NoMDEntries:4

  • 279=2,269=0,48=CH0047533572,273=12:31:06.616,336=EBRk,1023=3,83=33358
  • 279=2,269=0,48=CH0047533572,273=12:31:06.616,336=EBRk,1023=3,83=33358
  • 279=0,269=0,48=CH0047533572,270=1595.44,271=100,273=12:31:06.616,336=EBRk,346=0,6566=1,1023=3,83=33359
  • 279=0,269=0,48=CH0047533572,270=1595.44,271=100,273=12:31:06.616,336=EBRk,346=0,6566=1,1023=3,83=33359
  • 279=2,269=1,48=CH0047533572,273=12:31:06.616,336=EBRk,1023=2,83=33360
  • 279=2,269=1,48=CH0047533572,273=12:31:06.616,336=EBRk,1023=2,83=33360
  • 279=0,269=1,48=CH0047533572,270=1610.44,271=100,273=12:31:06.616,336=EBRk,346=0,6566=1,1023=2,83=33361
  • 279=0,269=1,48=CH0047533572,270=1610.44,271=0, 273=12:31:06.616,336=EBRk,346=1,6566=1,1023=2,83=33361

Thanks

Naresh

Are you able to comment on the first part of my > Hi Naresh, To address the second part of your question

Another issue I noticed was reference to 346=1 (ln 8)

Part of template [uInt32 name=“NumberOfOrders” id=“346”
presence=“optional”] [delta value=“1”/] [/uInt32]

The value of hex is 0x81 = 1 minus (1) for optional && greater than
zero which then has a field value of 0; But as per the context
instruction above the delta value is 1 and the Entry in in the state
undefinded so the initial Uint value = 1; Is this correct or have I
made a wrong interpretation

This looks correct. The delta value after allowing for NULL is zero so
in the decoded message the NumberOfOrders field is present with a
value of 1.

Dale

Dale Wilson Principal Software Engineer Object Computing, Inc.
(www.ociweb.com) Lead developer for QuickFAST (http:www.quickfast.org)