[This message was posted by David Rosenborg of Pantor Engineering AB <[email protected]> to the "FAST Protocol" discussion forum at http://fixprotocol.org/discuss/46. You can reply to it on-line at http://fixprotocol.org/discuss/read/7bada0d4 - PLEASE DO NOT REPLY BY MAIL.]
The first pmap bit is used for the implicit copy operator for the template identifier (TID). This is specified in section 10 Transfer Encoding, in the paragraph defining 'segment'. Thus the bit for PossResend is 0. /D > Thanks David. > > The only issue I have now is getting the pmap bits to correspond > directly to the operators in the template and the incoming message > > See my illustration below with this message: > > 00 D4 F7 01 C8 53 57 58 47 52 4F 55 50 2D 4D 44 .....SWXGROUP-MD 49 2E > 50 30 B1 03 09 57 BE 32 30 30 39 30 39 32 I.P0...W.2009092 35 2D 31 30 > 3A 32 31 3A 35 30 2E 35 31 B7 81 81 5-10:21:50.51... 57 B8 B1 43 48 30 > 30 33 31 30 31 34 38 37 B8 A1 W..CH003101487.. 80 31 30 3A 32 31 3A 35 > 30 2E 34 39 B3 44 45 D3 .10:21:50.49.DE. 80 80 80 80 01 BC ...... > > 00 D4 is the block length stop bit encoded The size is 84 > > Next stop bit entity is F7 Pmap byte hex 0xF7 When encoded = 1110111 > > This give me 7 bits > > > [string name="BeginString" id="8"] [constant value="FIXT.1.1"/] > [/string] [string name="MessageType" id="35"] [constant > value="X"/] [/string] [string name="ApplVerID" id="1128"] > [constant value="7"/] [/string] [!-- 7: FIX50 --] 1 [string > name="SenderCompID" id="49"] [copy/] [/string] [string > name="TargetCompID" id="56"] [constant value="SWXGROUP-MDC"/] > [/string] [!-- Market Data Consumer --] 1 [uInt32 > name="MsgSeqNum" id="34"] [increment/] [/uInt32] 1 [string > name="PossResend" id="97"][copy value="N"/][/string] [!-- N: > Original Transmission --] [string name="SendingTime" id="52"] > [tail/] [/string] > > > I have put the pmap bits on the left above. > > I know that the PossResend is not in the feed and the pmap value for > PossResend should be 0. I can't get the pmap bits to correspond to the > entities. From the spec I can determine that the pmap bits would not > apply to a mandatory constant. > > > > > > Naresh - > > > > The use of pbits is specified in section 10.5.1 Presence Map and NULL > > Utilization, in the FAST specification. > > > > For the copy operator, the corresponding bit in the pmap indicates > > whether the value is present in the stream or if it should be the same > > as the previous occurence of the field. If the bit is 1, then the > > value is in the stream, if it is 0, then it isn't and the previous > > value should be used. > > > > The value specified in the value attribute on the operator is called > > the initial value. The initial value is only used for the very first > > instance of the field and only if the corresponding bit is 0 at the > > same time. > > > > The fact that a field is optional isn't related to the use of bits in > > the pmap. An absent optional field is indicated by the special value > > NULL in the stream. > > > > /David > > > > > Please can you help with this query. > > > > > > If I can get this resolved then it will further help in the logic > > > and scope of using the presence map. > > > > > > I have a template as below: > > > > > > [Please read “less than char“ as “(” and “greater than char” as “)”] > > > > > > "(template name="StandardHeaderPart2") (string name="ApplVerID" > > > id="1128") (constant value="7"/) (/string) (string > > > name="SenderCompID" id="49") (copy/) (/string) (string > > > name="TargetCompID" id="56") (constant value="SWXGROUP-MDC"/) > > > (/string) (uInt32 name="MsgSeqNum" id="34") (increment/) (/uInt32) > > > (string name="PossResend" id="97")(copy value="N"/)(/string) (string > > > name="SendingTime" id="52") (tail/) (/string) (/template)" > > > > > > > > > And here is the data output that I see from the stream as I process > > > the message. > > > > > > [OUTPUT] SenderCompID:SWXGROUP-MDI.P01| MsgSeqNum:1290984| > > > PossResend:20090929- > > > 12:31:06.532| SendingTime > > > > > > > > > Note the PossResend was not in the stream so the next entity read > > > inadvertently was the Sendtime and this was added the field > > > PossResend. This happened because there was no way to determine if > > > the PossResend value was in the stream or not. > > > > > > If indicated then I would have read the next data entity as the > > > field SendingTime instead. > > > > > > I refer to the template above and the line: (string > > > name="PossResend" id="97")(copy value="N"/)(/string) > > > > > > The FAST Spec confirms the copy operator value of a field can be > > > optional and may or may not be in the stream. So I intepret this as > > > :- "if not in the stream add 'N' as part of your message > > > construction". "else if present in the stream use and copy the > > > value". > > > > > > The question is :- How do I determine if present in the stream? > > > > > > Do I use the presence map in the messsage to determine if the > > > PossResend is in the stream? Or is the Presence map bits reserved > > > only for fields that have the optional tag? > > > > > > e.g. below: > > > > > > (string name="MDExecTime" id="6572" presence="optional") > > > (tail/) > > > > > > > > > > > > Regards > > > > > > > > > Naresh [You can unsubscribe from this discussion group by sending a message to mailto:[email protected]] --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Financial Information eXchange" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/fix-protocol?hl=en -~----------~----~----~----~------~----~------~--~---
