FIX Trading Community

 

 Remember me

Register  |   Lost password?

FAST Protocol

Discussions > FAST Protocol > swx MDI decoding issue

swx MDI decoding issue

Complete message thread from old site

Dophin Nelson
1800 days ago,(2009/05/12)

Hi All,

I am developing swx feed handler and I have an issue related to decode the FAST data from MDI.

msg:

0000005ah: 00 C6 76 C0 E4 53 57 58 47 52 4F 55 50 2D 4D 44 ;
0000006ah: 49 2E 4D 30 B1 4E 92 32 30 30 38 30 36 32 33 2D ;
0000007ah: 30 33 3A 35 30 3A 32 33 2E 36 31 B1 81 43 48 30 ;
0000008ah: 30 30 34 36 32 36 33 30 B2 81 7B C0 CA 80 80 41 ;
0000009ah: 42 51 B5 80 80 80 80 81 ;

I try to decode it manually.

block size = 00 C6
PMAP = 76 C0 (01110110 11000000)
TID = E4(100)
49 = 53 57 58 47 52 4F 55 50 2D 4D 44 49 2E 4D 30 B1
34 = 4E 92
33 = 32 30 30 38 30 36 32 33 2D 30 33 3A 35 30 3A 32 33 2E 36 31 B1

1021 = 81
48 = 43 48 30 30 30 34 36 32 36 33 30 B2
268 = 81
7B C0 <--- ?
269 = CA ?
270 = 80
271 = 80
336 = 41 42 51 B5
346 = 80
6566 = 80
1023 = 80
6567 = 80
83 = 81

I found 7B C0 is appeared between tag 268 and 269. However, I don't know what it is about. Also I think there is something wrong with the PMAP. e.g the last tag 83, I think the PMAP should be set for this tag.

Thanks in advance
Michael

Rolf Andersson
1800 days ago,(2009/05/12)

Michael,

I don't have the swx spec in front of me, but the "unknown" entity between tags 268 and 269 is probably a pmap for the repeating group.

If you refer to the swx spec you will likely find at least 8 fields in the repeating group with an operator that requires a pmap entry.

(popcnt (7B C0) = 7 and field #5 seems to be defaulted.)

/Rolf

> Hi All,
>
> I am developing swx feed handler and I have an issue related to decode
> the FAST data from MDI.
>
> msg:
>
> 0000005ah: 00 C6 76 C0 E4 53 57 58 47 52 4F 55 50 2D 4D 44 ; 0000006ah:
> 49 2E 4D 30 B1 4E 92 32 30 30 38 30 36 32 33 2D ; 0000007ah: 30 33 3A 35
> 30 3A 32 33 2E 36 31 B1 81 43 48 30 ; 0000008ah: 30 30 34 36 32 36 33 30
> B2 81 7B C0 CA 80 80 41 ; 0000009ah: 42 51 B5 80 80 80 80 81 ;
>
> I try to decode it manually.
>
> block size = 00 C6 PMAP = 76 C0 (01110110 11000000) TID = E4(100) 49 =
> 53 57 58 47 52 4F 55 50 2D 4D 44 49 2E 4D 30 B1 34 = 4E 92 33 = 32 30 30
> 38 30 36 32 33 2D 30 33 3A 35 30 3A 32 33 2E 36 31 B1
>
> 1021 = 81 48 = 43 48 30 30 30 34 36 32 36 33 30 B2 268 = 81 7B C0 <--- ?
> 269 = CA ? 270 = 80 271 = 80 336 = 41 42 51 B5 346 = 80 6566 = 80 1023 =
> 80 6567 = 80 83 = 81
>
> I found 7B C0 is appeared between tag 268 and 269. However, I don't know
> what it is about. Also I think there is something wrong with the PMAP.
> e.g the last tag 83, I think the PMAP should be set for this tag.
>
> Thanks in advance Michael

Dophin Nelson
1800 days ago,(2009/05/12)

Rolf,

I want to know if the first bit of PMAP for sequence field indicate the presence of length field or not. Is there related information in the spec?

Thanks
Michael

> Michael,
>
> I don't have the swx spec in front of me, but the "unknown" entity
> between tags 268 and 269 is probably a pmap for the repeating group.
>
> If you refer to the swx spec you will likely find at least 8 fields in
> the repeating group with an operator that requires a pmap entry.
>
> (popcnt (7B C0) = 7 and field #5 seems to be defaulted.)
>
> /Rolf
>
> > Hi All,
> >
> > I am developing swx feed handler and I have an issue related to decode
> > the FAST data from MDI.
> >
> > msg:
> >
> > 0000005ah: 00 C6 76 C0 E4 53 57 58 47 52 4F 55 50 2D 4D 44 ;
> > 0000006ah: 49 2E 4D 30 B1 4E 92 32 30 30 38 30 36 32 33 2D ;
> > 0000007ah: 30 33 3A 35 30 3A 32 33 2E 36 31 B1 81 43 48 30 ;
> > 0000008ah: 30 30 34 36 32 36 33 30 B2 81 7B C0 CA 80 80 41 ;
> > 0000009ah: 42 51 B5 80 80 80 80 81 ;
> >
> > I try to decode it manually.
> >
> > block size = 00 C6 PMAP = 76 C0 (01110110 11000000) TID = E4(100) 49 =
> > 53 57 58 47 52 4F 55 50 2D 4D 44 49 2E 4D 30 B1 34 = 4E 92 33 = 32 30
> > 30 38 30 36 32 33 2D 30 33 3A 35 30 3A 32 33 2E 36 31 B1
> >
> > 1021 = 81 48 = 43 48 30 30 30 34 36 32 36 33 30 B2 268 = 81 7B C0 <---
> > ? 269 = CA ? 270 = 80 271 = 80 336 = 41 42 51 B5 346 = 80 6566 = 80
> > 1023 = 80 6567 = 80 83 = 81
> >
> > I found 7B C0 is appeared between tag 268 and 269. However, I don't
> > know what it is about. Also I think there is something wrong with
> > the PMAP.
> > e.g the last tag 83, I think the PMAP should be set for this tag.
> >
> > Thanks in advance Michael

Rolf Andersson
1800 days ago,(2009/05/12)

Michael,

the length field occupies a bit in the message pmap if there is an operator specified for the length field of the sequence.

I don't have the FAST spec in front of me but IIRC section 6.2.5 contains info about sequences.

I can check more closely if you send me the template you are using.

/Rolf

> Rolf,
>
> I want to know if the first bit of PMAP for sequence field indicate
> the presence of length field or not. Is there related information
> in the spec?
>
> Thanks Michael

Dophin Nelson
1800 days ago,(2009/05/12)

Rolf,

The previous message can be decoded successfully after you told me the sequence field PMAP. However, I have another messege that I fail to decode it

msg (block size field is omitted):

F7 01 C8 53 57 58 47 52 4F 55 50 2D 4D 44 49 2E
4D 30 B1 52 D0 32 30 30 38 30 36 32 33 2D 30 33
3A 35 35 3A 30 31 2E 37 39 B9 81 81 1B B0 43 48
30 30 30 33 36 37 31 34 34 B0 80 82 30 33 3A 34
35 3A 30 30 2E 30 30 B3 41 42 51 B5 81 FF 80 80
40 B0 02 AC 32 30 30 38 30 36 32 33 2D 30 33 3A
34 35 3A 30 30 2E 30 30 B3 82 C5 01 C8 38 30 B0
82 14 88 39 37 37 31 39 B3 82 80 81 81 81 A0 B1
FF 81 81 C0 02 AC C1 01 C8 81 34 88 B0 36 32 32
37 36 31 B2 81 98 81 81 81 C0 02 AC C0 01 C8 14
88 37 31 38 36 39 38 B1 82 E8 81 81 81 C0 02 AC
C5 01 C8 B1 82 18 88 31 30 35 37 30 37 35 B9 81
03 CB AF 81 81 81 A0 B1 A0 A5 81 81 81 81 18 88
4C 49 30 30 31 30 37 33 37 32 31 B6 82 7C B0 C4
81 81 81 85 B4 82 38 88 B0 43 48 30 30 30 39 36
39 31 36 30 B8 80 EB 84 81 81 A4 B1 81 FF FD 81
C0 02 AC C0 01 C8 3C 88 B0 31 31 31 37 38 32 35
B5 81 00 F7 82 00 C8 81 81 81 A0 B1 8D 01 B4 81
81 81 81 3C 88 B0 36 39 33 36 30 B0 82 7E FB 81
7E 82 81 81 81 80 18 88 34 38 34 30 36 B7 80 81
81 81 81 C0 02 AC C0 01 C8 14 88 32 33 33 37 34
32 B1 83 FF 81 81 81 C0 02 AC C0 01 C8 3C 88 B1
35 35 34 B0 81 93 82 00 FC 81 81 81 80 3C 88 B0
35 38 33 34 30 B4 80 84 7F BB 82 81 81 C0 02 AC
C0 01 C8 1C 88 32 37 31 36 38 B7 82 FC 83 CA FF

PMAP = F7 (1 1110111)
TID = 01 C8
49 = 53 57 58 47 52 4F 55 50 2D 4D 44 49 2E 4D 30 B1
34 = 52 D0
52 = 32 30 30 38 30 36 32 33 2D 30 33 3A 35 35 3A 30 31 2E 37 39 B9
1021 = 81
268 = 81
Seq PMAP = 1B B0 (0011011 1 0110000)
48 = 43 48 30 30 30 33 36 37 31 34 34 B0
270 = 80
271 = 82 ?

I don't know how to proceed after tag 270.
Template
http://www.2shared.com/file/5736462/b9436b42/template1.html

Thanks
Michael
> Michael,
>
> the length field occupies a bit in the message pmap if there is an
> operator specified for the length field of the sequence.
>
> I don't have the FAST spec in front of me but IIRC section 6.2.5
> contains info about sequences.
>
> I can check more closely if you send me the template you are using.
>
> /Rolf
>
> > Rolf,
> >
> > I want to know if the first bit of PMAP for sequence field indicate
> > the presence of length field or not. Is there related information in
> > the spec?
> >
> > Thanks Michael

Rolf Andersson
1800 days ago,(2009/05/12)

Michael,

your decoding up to 270 looks alright if I have understood the context correctly.

For 271 (field 5 in the sequence), pmap bit 5 is 0 so the wire representation 0x82 corresponds to:
exponent=-2 (default) mantissa=2 => 2*10^-2?

270=NULL followed by 271=2*10^-2 don't make much sense though?

I suggest you contact SWX for assistance on this.
Let us know what they say.

Best,
Rolf

> Rolf,
>
> The previous message can be decoded successfully after you told me
> the sequence field PMAP. However, I have another messege that I fail
> to decode it
>
> msg (block size field is omitted):
>
> F7 01 C8 53 57 58 47 52 4F 55 50 2D 4D 44 49 2E 4D 30 B1 52 D0 32 30 30
> 38 30 36 32 33 2D 30 33 3A 35 35 3A 30 31 2E 37 39 B9 81 81 1B B0 43 48
> 30 30 30 33 36 37 31 34 34 B0 80 82 30 33 3A 34 35 3A 30 30 2E 30 30 B3
> 41 42 51 B5 81 FF 80 80 40 B0 02 AC 32 30 30 38 30 36 32 33 2D 30 33 3A
> 34 35 3A 30 30 2E 30 30 B3 82 C5 01 C8 38 30 B0 82 14 88 39 37 37 31 39
> B3 82 80 81 81 81 A0 B1 FF 81 81 C0 02 AC C1 01 C8 81 34 88 B0 36 32 32
> 37 36 31 B2 81 98 81 81 81 C0 02 AC C0 01 C8 14 88 37 31 38 36 39 38 B1
> 82 E8 81 81 81 C0 02 AC C5 01 C8 B1 82 18 88 31 30 35 37 30 37 35 B9 81
> 03 CB AF 81 81 81 A0 B1 A0 A5 81 81 81 81 18 88 4C 49 30 30 31 30 37 33
> 37 32 31 B6 82 7C B0 C4 81 81 81 85 B4 82 38 88 B0 43 48 30 30 30 39 36
> 39 31 36 30 B8 80 EB 84 81 81 A4 B1 81 FF FD 81 C0 02 AC C0 01 C8 3C 88
> B0 31 31 31 37 38 32 35 B5 81 00 F7 82 00 C8 81 81 81 A0 B1 8D 01 B4 81
> 81 81 81 3C 88 B0 36 39 33 36 30 B0 82 7E FB 81 7E 82 81 81 81 80 18 88
> 34 38 34 30 36 B7 80 81 81 81 81 C0 02 AC C0 01 C8 14 88 32 33 33 37 34
> 32 B1 83 FF 81 81 81 C0 02 AC C0 01 C8 3C 88 B1 35 35 34 B0 81 93 82 00
> FC 81 81 81 80 3C 88 B0 35 38 33 34 30 B4 80 84 7F BB 82 81 81 C0 02 AC
> C0 01 C8 1C 88 32 37 31 36 38 B7 82 FC 83 CA FF
>
> PMAP = F7 (1 1110111) TID = 01 C8 49 = 53 57 58 47 52 4F 55 50 2D 4D 44
> 49 2E 4D 30 B1 34 = 52 D0 52 = 32 30 30 38 30 36 32 33 2D 30 33 3A 35 35
> 3A 30 31 2E 37 39 B9 1021 = 81 268 = 81 Seq PMAP = 1B B0 (0011011 1
> 0110000) 48 = 43 48 30 30 30 33 36 37 31 34 34 B0 270 = 80 271 = 82 ?
>
> I don't know how to proceed after tag 270. Template
> http://www.2shared.com/file/5736462/b9436b42/template1.html
>
> Thanks Michael
> > Michael,
> >
> > the length field occupies a bit in the message pmap if there is an
> > operator specified for the length field of the sequence.
> >
> > I don't have the FAST spec in front of me but IIRC section 6.2.5
> > contains info about sequences.
> >
> > I can check more closely if you send me the template you are using.
> >
> > /Rolf
> >
> > > Rolf,
> > >
> > > I want to know if the first bit of PMAP for sequence field indicate
> > > the presence of length field or not. Is there related information in
> > > the spec?
> > >
> > > Thanks Michael

Dophin Nelson
1799 days ago,(2009/05/13)

Rolf,

First, since the length field has an operator, does it occupy the first bit of sequence PMAP? if so, I would like to know why pmap bit 5 is for 271.

For 271, exponent=0(not -2) (copy not default) mantissa=2 => 2*10^0 = 2
the operator of exponent is copy. In this situation, PMAP bit is 0, use the initial value, so exp. = 0, right? If the value is not present in the stream and the state is undefined, then use the intial value. If the value is present and is null value, the field is absent if it is optional i.e. do not use the initial value. Am I right?

BTW, this is the output for the first msg provided by swx
8=FIXT.1.135=X1128=749=SWXGROUP-MDI.M0156=SWXGROUP-MDC34=1057697=N52=20080623-03:55:01.7991021=1268=1279=0269=048=CH000367144022=4271=2273=03:45:00.003336=ABQ5346=16566=083=1

Michael

> Michael,
>
> your decoding up to 270 looks alright if I have understood the context
> correctly.
>
> For 271 (field 5 in the sequence), pmap bit 5 is 0 so the wire
> representation 0x82 corresponds to: exponent=-2 (default) mantissa=2
> => 2*10^-2?
>
> 270=NULL followed by 271=2*10^-2 don't make much sense though?
>
> I suggest you contact SWX for assistance on this. Let us know
> what they say.
>
> Best, Rolf
>
> > Rolf,
> >
> > The previous message can be decoded successfully after you told me the
> > sequence field PMAP. However, I have another messege that I fail to
> > decode it
> >
> > msg (block size field is omitted):
> >
> > F7 01 C8 53 57 58 47 52 4F 55 50 2D 4D 44 49 2E 4D 30 B1 52 D0 32 30
> > 30 38 30 36 32 33 2D 30 33 3A 35 35 3A 30 31 2E 37 39 B9 81 81 1B B0
> > 43 48 30 30 30 33 36 37 31 34 34 B0 80 82 30 33 3A 34 35 3A 30 30 2E
> > 30 30 B3 41 42 51 B5 81 FF 80 80 40 B0 02 AC 32 30 30 38 30 36 32 33
> > 2D 30 33 3A 34 35 3A 30 30 2E 30 30 B3 82 C5 01 C8 38 30 B0 82 14 88
> > 39 37 37 31 39 B3 82 80 81 81 81 A0 B1 FF 81 81 C0 02 AC C1 01 C8 81
> > 34 88 B0 36 32 32 37 36 31 B2 81 98 81 81 81 C0 02 AC C0 01 C8 14 88
> > 37 31 38 36 39 38 B1 82 E8 81 81 81 C0 02 AC C5 01 C8 B1 82 18 88 31
> > 30 35 37 30 37 35 B9 81 03 CB AF 81 81 81 A0 B1 A0 A5 81 81 81 81 18
> > 88 4C 49 30 30 31 30 37 33 37 32 31 B6 82 7C B0 C4 81 81 81 85 B4 82
> > 38 88 B0 43 48 30 30 30 39 36 39 31 36 30 B8 80 EB 84 81 81 A4 B1 81
> > FF FD 81 C0 02 AC C0 01 C8 3C 88 B0 31 31 31 37 38 32 35 B5 81 00 F7
> > 82 00 C8 81 81 81 A0 B1 8D 01 B4 81 81 81 81 3C 88 B0 36 39 33 36 30
> > B0 82 7E FB 81 7E 82 81 81 81 80 18 88 34 38 34 30 36 B7 80 81 81 81
> > 81 C0 02 AC C0 01 C8 14 88 32 33 33 37 34 32 B1 83 FF 81 81 81 C0 02
> > AC C0 01 C8 3C 88 B1 35 35 34 B0 81 93 82 00 FC 81 81 81 80 3C 88 B0
> > 35 38 33 34 30 B4 80 84 7F BB 82 81 81 C0 02 AC C0 01 C8 1C 88 32 37
> > 31 36 38 B7 82 FC 83 CA FF
> >
> > PMAP = F7 (1 1110111) TID = 01 C8 49 = 53 57 58 47 52 4F 55 50 2D 4D
> > 44 49 2E 4D 30 B1 34 = 52 D0 52 = 32 30 30 38 30 36 32 33 2D 30 33 3A
> > 35 35 3A 30 31 2E 37 39 B9 1021 = 81 268 = 81 Seq PMAP = 1B B0
> > (0011011 1 0110000) 48 = 43 48 30 30 30 33 36 37 31 34 34 B0 270 = 80
> > 271 = 82 ?
> >
> > I don't know how to proceed after tag 270. Template
> > http://www.2shared.com/file/5736462/b9436b42/template1.html
> >
> > Thanks Michael
> > > Michael,
> > >
> > > the length field occupies a bit in the message pmap if there is an
> > > operator specified for the length field of the sequence.
> > >
> > > I don't have the FAST spec in front of me but IIRC section 6.2.5
> > > contains info about sequences.
> > >
> > > I can check more closely if you send me the template you are using.
> > >
> > > /Rolf
> > >
> > > > Rolf,
> > > >
> > > > I want to know if the first bit of PMAP for sequence field
> > > > indicate the presence of length field or not. Is there related
> > > > information in the spec?
> > > >
> > > > Thanks Michael

Rolf Andersson
1799 days ago,(2009/05/13)

Michael,

The pmap entry for the length field is located in the _message_ level pmap (bit 7 in this case). The sequence level pmap occurs for every iteration (repetition) of the sequence and provides presence info for the fields in the current iteration.

271 should indeed be 2 (exponent=0).

The FIX output would have been helpful earlier. Please provide a more complete description of your problem if you want any more help.

Good luck with your development.

/Rolf

> Rolf,
>
> First, since the length field has an operator, does it occupy the
> first bit of sequence PMAP? if so, I would like to know why pmap bit 5
> is for 271.
>
> For 271, exponent=0(not -2) (copy not default) mantissa=2 => 2*10^0 = 2
> the operator of exponent is copy. In this situation, PMAP bit is 0, use
> the initial value, so exp. = 0, right? If the value is not present in
> the stream and the state is undefined, then use the intial value. If the
> value is present and is null value, the field is absent if it is
> optional i.e. do not use the initial value. Am I right?
>
> BTW, this is the output for the first msg provided by swx 8=FIXT.1.135=X1128=749=SWXGROUP-MDI.M0156=SWXGROUP-
> MDC34=1057697=N52=20080623-
> 03:55:01.7991021=1268=1279=0269=048=CH000367144022=4271=2273=03-
> :45:00.003336=ABQ5346=16566=083=1
>
> Michael
>
>
> > Michael,
> >
> > your decoding up to 270 looks alright if I have understood the context
> > correctly.
> >
> > For 271 (field 5 in the sequence), pmap bit 5 is 0 so the wire
> > representation 0x82 corresponds to: exponent=-2 (default) mantissa=2
> > => 2*10^-2?
> >
> > 270=NULL followed by 271=2*10^-2 don't make much sense though?
> >
> > I suggest you contact SWX for assistance on this. Let us know what
> > they say.
> >
> > Best, Rolf
> >
> > > Rolf,
> > >
> > > The previous message can be decoded successfully after you told me
> > > the sequence field PMAP. However, I have another messege that I fail
> > > to decode it
> > >
> > > msg (block size field is omitted):
> > >
> > > F7 01 C8 53 57 58 47 52 4F 55 50 2D 4D 44 49 2E 4D 30 B1 52 D0 32 30
> > > 30 38 30 36 32 33 2D 30 33 3A 35 35 3A 30 31 2E 37 39 B9 81 81 1B B0
> > > 43 48 30 30 30 33 36 37 31 34 34 B0 80 82 30 33 3A 34 35 3A 30 30 2E
> > > 30 30 B3 41 42 51 B5 81 FF 80 80 40 B0 02 AC 32 30 30 38 30 36 32 33
> > > 2D 30 33 3A 34 35 3A 30 30 2E 30 30 B3 82 C5 01 C8 38 30 B0 82 14 88
> > > 39 37 37 31 39 B3 82 80 81 81 81 A0 B1 FF 81 81 C0 02 AC C1 01 C8 81
> > > 34 88 B0 36 32 32 37 36 31 B2 81 98 81 81 81 C0 02 AC C0 01 C8 14 88
> > > 37 31 38 36 39 38 B1 82 E8 81 81 81 C0 02 AC C5 01 C8 B1 82 18 88 31
> > > 30 35 37 30 37 35 B9 81 03 CB AF 81 81 81 A0 B1 A0 A5 81 81 81 81 18
> > > 88 4C 49 30 30 31 30 37 33 37 32 31 B6 82 7C B0 C4 81 81 81 85 B4 82
> > > 38 88 B0 43 48 30 30 30 39 36 39 31 36 30 B8 80 EB 84 81 81 A4 B1 81
> > > FF FD 81 C0 02 AC C0 01 C8 3C 88 B0 31 31 31 37 38 32 35 B5 81 00 F7
> > > 82 00 C8 81 81 81 A0 B1 8D 01 B4 81 81 81 81 3C 88 B0 36 39 33 36 30
> > > B0 82 7E FB 81 7E 82 81 81 81 80 18 88 34 38 34 30 36 B7 80 81 81 81
> > > 81 C0 02 AC C0 01 C8 14 88 32 33 33 37 34 32 B1 83 FF 81 81 81 C0 02
> > > AC C0 01 C8 3C 88 B1 35 35 34 B0 81 93 82 00 FC 81 81 81 80 3C 88 B0
> > > 35 38 33 34 30 B4 80 84 7F BB 82 81 81 C0 02 AC C0 01 C8 1C 88 32 37
> > > 31 36 38 B7 82 FC 83 CA FF
> > >
> > > PMAP = F7 (1 1110111) TID = 01 C8 49 = 53 57 58 47 52 4F 55 50 2D 4D
> > > 44 49 2E 4D 30 B1 34 = 52 D0 52 = 32 30 30 38 30 36 32 33 2D 30 33
> > > 3A 35 35 3A 30 31 2E 37 39 B9 1021 = 81 268 = 81 Seq PMAP = 1B B0
> > > (0011011 1 0110000) 48 = 43 48 30 30 30 33 36 37 31 34 34 B0 270 =
> > > 80 271 = 82 ?
> > >
> > > I don't know how to proceed after tag 270. Template
> > > http://www.2shared.com/file/5736462/b9436b42/template1.html
> > >
> > > Thanks Michael
> > > > Michael,
> > > >
> > > > the length field occupies a bit in the message pmap if there is an
> > > > operator specified for the length field of the sequence.
> > > >
> > > > I don't have the FAST spec in front of me but IIRC section 6.2.5
> > > > contains info about sequences.
> > > >
> > > > I can check more closely if you send me the template you are
> > > > using.
> > > >
> > > > /Rolf
> > > >
> > > > > Rolf,
> > > > >
> > > > > I want to know if the first bit of PMAP for sequence field
> > > > > indicate the presence of length field or not. Is there related
> > > > > information in the spec?
> > > > >
> > > > > Thanks Michael

Dophin Nelson
1799 days ago,(2009/05/13)

Rolf,

I am sorry I got confused again.
For tag 271, the pmap bit is 0. so the default value 0 is used for exponent. Can we say that the exponent has a value so that we need to decode mantissa? If so, the encoded value is 0x82 for the mantissa. The decoded value should be 1 since it is delta operator, Right?

BTW, if the length field of a sequence field is greater than 1 , does the sequnce pmap appear each iteration?

Michael

> Michael,
>
> The pmap entry for the length field is located in the _message_ level
> pmap (bit 7 in this case). The sequence level pmap occurs for every
> iteration (repetition) of the sequence and provides presence info for
> the fields in the current iteration.
>
> 271 should indeed be 2 (exponent=0).
>
> The FIX output would have been helpful earlier. Please provide a more
> complete description of your problem if you want any more help.
>
> Good luck with your development.
>
> /Rolf
>
> > Rolf,
> >
> > First, since the length field has an operator, does it occupy the
> > first bit of sequence PMAP? if so, I would like to know why pmap bit 5
> > is for 271.
> >
> > For 271, exponent=0(not -2) (copy not default) mantissa=2 => 2*10^0 =
> > 2 the operator of exponent is copy. In this situation, PMAP bit is 0,
> > use the initial value, so exp. = 0, right? If the value is not present
> > in the stream and the state is undefined, then use the intial value.
> > If the value is present and is null value, the field is absent if it
> > is optional i.e. do not use the initial value. Am I right?
> >
> > BTW, this is the output for the first msg provided by swx 8=FIXT.1.135=X1128=749=SWXGROUP-MDI.M0156=SWXGROUP-
> > MDC34=1057697=N52=20080623-
> > 03:55:01.91021=1268=1279=0269=048=CH000367144022=4271=2273=03-
> > :45:00.003336=ABQ5346=16566=083=1
> >
> > Michael
> >
> >
> > > Michael,
> > >
> > > your decoding up to 270 looks alright if I have understood the
> > > context correctly.
> > >
> > > For 271 (field 5 in the sequence), pmap bit 5 is 0 so the wire
> > > representation 0x82 corresponds to: exponent=-2 (default) mantissa=2
> > > => 2*10^-2?
> > >
> > > 270=NULL followed by 271=2*10^-2 don't make much sense though?
> > >
> > > I suggest you contact SWX for assistance on this. Let us know what
> > > they say.
> > >
> > > Best, Rolf
> > >
> > > > Rolf,
> > > >
> > > > The previous message can be decoded successfully after you told me
> > > > the sequence field PMAP. However, I have another messege that I
> > > > fail to decode it
> > > >
> > > > msg (block size field is omitted):
> > > >
> > > > F7 01 C8 53 57 58 47 52 4F 55 50 2D 4D 44 49 2E 4D 30 B1 52 D0 32
> > > > 30 30 38 30 36 32 33 2D 30 33 3A 35 35 3A 30 31 2E 37 39 B9 81 81
> > > > 1B B0 43 48 30 30 30 33 36 37 31 34 34 B0 80 82 30 33 3A 34 35 3A
> > > > 30 30 2E 30 30 B3 41 42 51 B5 81 FF 80 80 40 B0 02 AC 32 30 30 38
> > > > 30 36 32 33 2D 30 33 3A 34 35 3A 30 30 2E 30 30 B3 82 C5 01 C8 38
> > > > 30 B0 82 14 88 39 37 37 31 39 B3 82 80 81 81 81 A0 B1 FF 81 81 C0
> > > > 02 AC C1 01 C8 81 34 88 B0 36 32 32 37 36 31 B2 81 98 81 81 81 C0
> > > > 02 AC C0 01 C8 14 88 37 31 38 36 39 38 B1 82 E8 81 81 81 C0 02 AC
> > > > C5 01 C8 B1 82 18 88 31 30 35 37 30 37 35 B9 81 03 CB AF 81 81 81
> > > > A0 B1 A0 A5 81 81 81 81 18 88 4C 49 30 30 31 30 37 33 37 32 31 B6
> > > > 82 7C B0 C4 81 81 81 85 B4 82 38 88 B0 43 48 30 30 30 39 36 39 31
> > > > 36 30 B8 80 EB 84 81 81 A4 B1 81 FF FD 81 C0 02 AC C0 01 C8 3C 88
> > > > B0 31 31 31 37 38 32 35 B5 81 00 F7 82 00 C8 81 81 81 A0 B1 8D 01
> > > > B4 81 81 81 81 3C 88 B0 36 39 33 36 30 B0 82 7E FB 81 7E 82 81 81
> > > > 81 80 18 88 34 38 34 30 36 B7 80 81 81 81 81 C0 02 AC C0 01 C8 14
> > > > 88 32 33 33 37 34 32 B1 83 FF 81 81 81 C0 02 AC C0 01 C8 3C 88 B1
> > > > 35 35 34 B0 81 93 82 00 FC 81 81 81 80 3C 88 B0 35 38 33 34 30 B4
> > > > 80 84 7F BB 82 81 81 C0 02 AC C0 01 C8 1C 88 32 37 31 36 38 B7 82
> > > > FC 83 CA FF
> > > >
> > > > PMAP = F7 (1 1110111) TID = 01 C8 49 = 53 57 58 47 52 4F 55 50 2D
> > > > 4D 44 49 2E 4D 30 B1 34 = 52 D0 52 = 32 30 30 38 30 36 32 33 2D 30
> > > > 33 3A 35 35 3A 30 31 2E 37 39 B9 1021 = 81 268 = 81 Seq PMAP = 1B
> > > > B0 (0011011 1 0110000) 48 = 43 48 30 30 30 33 36 37 31 34 34 B0
> > > > 270 = 80 271 = 82 ?
> > > >
> > > > I don't know how to proceed after tag 270. Template
> > > > http://www.2shared.com/file/5736462/b9436b42/template1.html
> > > >
> > > > Thanks Michael
> > > > > Michael,
> > > > >
> > > > > the length field occupies a bit in the message pmap if there is
> > > > > an operator specified for the length field of the sequence.
> > > > >
> > > > > I don't have the FAST spec in front of me but IIRC section 6.2.5
> > > > > contains info about sequences.
> > > > >
> > > > > I can check more closely if you send me the template you are
> > > > > using.
> > > > >
> > > > > /Rolf
> > > > >
> > > > > > Rolf,
> > > > > >
> > > > > > I want to know if the first bit of PMAP for sequence field
> > > > > > indicate the presence of length field or not. Is there related
> > > > > > information in the spec?
> > > > > >
> > > > > > Thanks Michael

Rolf Andersson
1799 days ago,(2009/05/13)

> Rolf,
>
> I am sorry I got confused again. For tag 271, the pmap bit is 0.
> so the default value 0 is used for exponent. Can we say that the
> exponent has a value so that we need to decode mantissa?
> If so, the encoded value is 0x82 for the mantissa. The decoded
> value should be 1 since it is delta operator, Right?

Yes, 0x82 is for the mantissa.
No, the decoded mantissa value is 2.
Why do you think the value should be 1?

> BTW, if the length field of a sequence field is greater than 1,
> does the sequence pmap appear each iteration?

yes, as noted in my mail below

(FAST 1.1 spec section 6.2.5 says: "If any instruction of the group needs to allocate a bit in a presence map, each element is represented as a segment in the transfer encoding." "element" in this context is synonymous with my use of "iteration" in my mail below)

/Rolf

... snip ...

>> Michael,
>>
>> The pmap entry for the length field is located in the _message_
>> level pmap (bit 7 in this case). The sequence level pmap occurs
>> for every iteration (repetition) of the sequence and provides
>> presence info for the fields in the current iteration.

Dophin Nelson
1798 days ago,(2009/05/14)

Rolf,

Oh I made a mistake that I think mantissa is optional. so the value is decreased by 1.

I want to know how to handle if a field is absent.

Michael

> > Rolf,
> >
> > I am sorry I got confused again. For tag 271, the pmap bit is 0. so
> > the default value 0 is used for exponent. Can we say that the exponent
> > has a value so that we need to decode mantissa? If so, the encoded
> > value is 0x82 for the mantissa. The decoded value should be 1 since it
> > is delta operator, Right?
>
> Yes, 0x82 is for the mantissa. No, the decoded mantissa value is 2. Why
> do you think the value should be 1?
>
> > BTW, if the length field of a sequence field is greater than 1, does
> > the sequence pmap appear each iteration?
>
> yes, as noted in my mail below
>
> (FAST 1.1 spec section 6.2.5 says: "If any instruction of the group
> needs to allocate a bit in a presence map, each element is represented
> as a segment in the transfer encoding." "element" in this context is
> synonymous with my use of "iteration" in my mail below)
>
> /Rolf
>
> ... snip ...
>
> >> Michael,
> >>
> >> The pmap entry for the length field is located in the _message_ level
> >> pmap (bit 7 in this case). The sequence level pmap occurs for every
> >> iteration (repetition) of the sequence and provides presence info for
> >> the fields in the current iteration.

Rolf Andersson
1798 days ago,(2009/05/14)

that depends on the field definition.
type? operators? inital value?

please be more specific

/Rolf

> Rolf,
>
> Oh I made a mistake that I think mantissa is optional. so the value is
> decreased by 1.
>
> I want to know how to handle if a field is absent.
>
> Michael
>
> > > Rolf,
> > >
> > > I am sorry I got confused again. For tag 271, the pmap bit is 0. so
> > > the default value 0 is used for exponent. Can we say that the
> > > exponent has a value so that we need to decode mantissa? If so, the
> > > encoded value is 0x82 for the mantissa. The decoded value should be
> > > 1 since it is delta operator, Right?
> >
> > Yes, 0x82 is for the mantissa. No, the decoded mantissa value is 2.
> > Why do you think the value should be 1?
> >
> > > BTW, if the length field of a sequence field is greater than 1, does
> > > the sequence pmap appear each iteration?
> >
> > yes, as noted in my mail below
> >
> > (FAST 1.1 spec section 6.2.5 says: "If any instruction of the group
> > needs to allocate a bit in a presence map, each element is represented
> > as a segment in the transfer encoding." "element" in this context is
> > synonymous with my use of "iteration" in my mail below)
> >
> > /Rolf
> >
> > ... snip ...
> >
> > >> Michael,
> > >>
> > >> The pmap entry for the length field is located in the _message_
> > >> level pmap (bit 7 in this case). The sequence level pmap occurs for
> > >> every iteration (repetition) of the sequence and provides presence
> > >> info for the fields in the current iteration.

Dophin Nelson
1798 days ago,(2009/05/14)

Rolf,

Let's say there is a field is optional. operator is tail. field type is string and no initial value.
Then when I recevie 0x80 which means is null value, how to proceed?

Here is another case. There is a field is optional and the operator is constant. If the pmap bit is set, should the value appear in the stream or just use the default value?

BTW Can I say that the initial value is used if the field is absent no matter what operator is?

Michael

> that depends on the field definition. type? operators? inital value?
>
> please be more specific
>
> /Rolf
>
> > Rolf,
> >
> > Oh I made a mistake that I think mantissa is optional. so the value is
> > decreased by 1.
> >
> > I want to know how to handle if a field is absent.
> >
> > Michael
> >
> > > > Rolf,
> > > >
> > > > I am sorry I got confused again. For tag 271, the pmap bit is 0.
> > > > so the default value 0 is used for exponent. Can we say that the
> > > > exponent has a value so that we need to decode mantissa? If so,
> > > > the encoded value is 0x82 for the mantissa. The decoded value
> > > > should be 1 since it is delta operator, Right?
> > >
> > > Yes, 0x82 is for the mantissa. No, the decoded mantissa value is 2.
> > > Why do you think the value should be 1?
> > >
> > > > BTW, if the length field of a sequence field is greater than 1,
> > > > does the sequence pmap appear each iteration?
> > >
> > > yes, as noted in my mail below
> > >
> > > (FAST 1.1 spec section 6.2.5 says: "If any instruction of the group
> > > needs to allocate a bit in a presence map, each element is
> > > represented as a segment in the transfer encoding." "element" in
> > > this context is synonymous with my use of "iteration" in my mail
> > > below)
> > >
> > > /Rolf
> > >
> > > ... snip ...
> > >
> > > >> Michael,
> > > >>
> > > >> The pmap entry for the length field is located in the _message_
> > > >> level pmap (bit 7 in this case). The sequence level pmap occurs
> > > >> for every iteration (repetition) of the sequence and provides
> > > >> presence info for the fields in the current iteration.

Rolf Andersson
1798 days ago,(2009/05/14)

Michael,

It feels like I'm repeatedly paraphrasing the FAST spec to answer your questions. May I suggest that you read the spec, describe how you interpret it for you use cases and then ask any questions that you might have regarding specific sections of the spec.

/Rolf

> Rolf,
>
> Let's say there is a field is optional. operator is tail. field
> type is string and no initial value. Then when I recevie 0x80
> which means is null value, how to proceed?
>
> Here is another case. There is a field is optional and the operator
> is constant. If the pmap bit is set, should the value appear in the
> stream or just use the default value?
>
> BTW Can I say that the initial value is used if the field is absent
> no matter what operator is?
>
> Michael

Dophin Nelson
1798 days ago,(2009/05/15)

Rolf,

Ok. Thank for your help.

Michael

> Michael,
>
> It feels like I'm repeatedly paraphrasing the FAST spec to answer your
> questions. May I suggest that you read the spec, describe how you
> interpret it for you use cases and then ask any questions that you might
> have regarding specific sections of the spec.
>
> /Rolf
>
> > Rolf,
> >
> > Let's say there is a field is optional. operator is tail. field type
> > is string and no initial value. Then when I recevie 0x80 which means
> > is null value, how to proceed?
> >
> > Here is another case. There is a field is optional and the operator is
> > constant. If the pmap bit is set, should the value appear in the
> > stream or just use the default value?
> >
> > BTW Can I say that the initial value is used if the field is absent no
> > matter what operator is?
> >
> > Michael