Optional decimal fields with individual operators

Imported from previous forum

Hello,
I would need a clarification.

The handbook [section 10.5.1 – Presence Map and NULL Utilization] says:

[…]If the decimal has optional presence, the exponent field is treated as an optional integer field and the mantissa field is treated as a mandatory integer field. The presence of the mantissa field and any related bits in the presence map are dependent on the presence of the exponent. The mantissa field appears in the stream iff the exponent value is considered present. If the mantissa has an operator that requires a bit in the presence map, this bit is present iff the exponent value is considered present.[…]

Let suppose I have the following decimal field in my template definition:

< decimal name=“MDEntryPx” id=“270” presence=“optional” >
< exponent > < copy value="-2" / > < / exponent >
< mantissa > < delta / > < / mantissa >
< /decimal >

For the best of my comprehension in this case the exponent is optional, and has its own bit in pmap (due to the copy operator).
If that bit is not set (the exponent is not present in the stream for sure) then the mantissa will be not present in the stream as well.

  1. Does the same worth if the bit in pmap is set but the exponent value is NULL?
  2. What about the new previous value of the Scaled Number if the exponent has to be considered absent?

Moreover, the fact that the exponent bit in pmap is not set should not imply that the value of the exponent field will be not assigned (e.g. it should be assigned to the copy initial value, or to the previous value stored in the dictionary).

3.Let suppose the mantissa is not in the stream (because of the exponent absence), what does it imply in term of the mantissa field value, and in term of the mantissa new previous value?

Many thanks in advance.
Kind regards,
– Ale

I am interpreting that part of the spec a little bit different. I thought that the exponent is considered present if the presence bit is 0. Because the Value is taken from the dictionary then. And then the whole thing makes sense to me.

can anybody confirm?

I hope you are not right, otherwise I can’t understand how can my FAST decoder work.

Usually, we say if the bit in pmap is set then the value is present in the stream…

If the bit is 0 the value is not present in the stream and it is taken from the dictionary only if the dictionary value is ‘assigned’, otherwise it could depend on initial value.

I would like to discuss this issue with you if you don’t agree, because I’m quite concerned regarding my implementation…

Regards,
– Ale

I am interpreting that part of the spec a little bit different. I
thought that the exponent is considered present if the presence bit is
0. Because the Value is taken from the dictionary then. And then the
whole thing makes sense to me.

can anybody confirm?

Ale -

A bit in the pmap indicates how a field operator should be executed. The exact meaning of the bit is dependent on the operator type and its attributes.

The bit doesn’t automatically indicate whether an optional field is NULL or not. Only after exercising the operator according to the bit you’ll know if the value is NULL or not.

When using a decimal field with individual operators, and the value of an exponent field is NULL, the instruction for the mantissa should be skipped.

You may want to have a look a this post (and other posts in the same thread):

http://www.fixprotocol.org/discuss/read/24ed599c

/David

Hello, I would need a clarification.

The handbook [section 10.5.1 – Presence Map and NULL Utilization] says:

[…]If the decimal has optional presence, the exponent field is treated
as an optional integer field and the mantissa field is treated as a
mandatory integer field. The presence of the mantissa field and any
related bits in the presence map are dependent on the presence of the
exponent. The mantissa field appears in the stream iff the exponent
value is considered present. If the mantissa has an operator that
requires a bit in the presence map, this bit is present iff the exponent
value is considered present.[…]

Let suppose I have the following decimal field in my template
definition:

< decimal name=“MDEntryPx” id=“270” presence=“optional” > < exponent > <
copy value=“-2” / > < / exponent > < mantissa > < delta / > < / mantissa

< /decimal >

For the best of my comprehension in this case the exponent is optional,
and has its own bit in pmap (due to the copy operator). If that bit is
not set (the exponent is not present in the stream for sure) then the
mantissa will be not present in the stream as well.

  1. Does the same worth if the bit in pmap is set but the exponent
    value is NULL?
  2. What about the new previous value of the Scaled Number if the
    exponent has to be considered absent?

Moreover, the fact that the exponent bit in pmap is not set should not
imply that the value of the exponent field will be not assigned (e.g. it
should be assigned to the copy initial value, or to the previous value
stored in the dictionary).

3.Let suppose the mantissa is not in the stream (because of the exponent
absence), what does it imply in term of the mantissa field value, and in
term of the mantissa new previous value?

Many thanks in advance. Kind regards, – Ale

Actually may be I was not so clear.

In the specific case:

< decimal name=“MDEntryPx” id=“270” presence=“optional” >
< exponent > < copy value=“-2” / > < / exponent >
< mantissa > < delta / > < / mantissa >
< /decimal >

since the decimal is optional, then the exponent is optional.
Moreover, since the exponent has the individual copy operator, then the exponent will have a bit in the pmap (no matter if it is set or not).

The exponent will be considered absent in two distinct cases:

a) The bit is not set.
b) The bit is set but, since the exponent is optional, it is present in the stream in its NULL representation.

In both these cases the mantissa will be not present in the stream as well and has to be considered absent.

The only case in which the mantissa is present in the stream is when the exponent bit in pmap is set and the exponent value is not NULL.

  1. Is all that right?

  2. How should we set the new previous value of the decimal (the corresponding Scaled Number) if the exponent has to be considered absent?

Note that even if the exponent bit in pmap was not set, the value of the exponent field could result assigned (for example it should be assigned to the copy initial value, or to the previous value stored in the dictionary).

  1. Let suppose the mantissa is not in the stream (because of the exponent absence), what does it imply in term of the mantissa field value, and what in term of the mantissa new previous value?

Many thanks in advance.

Regards,
– Ale

Ale -

A bit in the pmap indicates how a field operator should be executed. The
exact meaning of the bit is dependent on the operator type and its
attributes.

The bit doesn’t automatically indicate whether an optional field is NULL
or not. Only after exercising the operator according to the bit you’ll
know if the value is NULL or not.

When using a decimal field with individual operators, and the value
of an exponent field is NULL, the instruction for the mantissa should
be skipped.

You may want to have a look a this post (and other posts in the
same thread):

http://www.fixprotocol.org/discuss/read/24ed599c

/David

Hello, I would need a clarification.

The handbook [section 10.5.1 – Presence Map and NULL
Utilization] says:

[…]If the decimal has optional presence, the exponent field is
treated as an optional integer field and the mantissa field is treated
as a mandatory integer field. The presence of the mantissa field and
any related bits in the presence map are dependent on the presence of
the exponent. The mantissa field appears in the stream iff the
exponent value is considered present. If the mantissa has an operator
that requires a bit in the presence map, this bit is present iff the
exponent value is considered present.[…]

Let suppose I have the following decimal field in my template
definition:

< decimal name=“MDEntryPx” id=“270” presence=“optional” > < exponent >
< copy value=“-2” / > < / exponent > < mantissa > < delta / > < /
mantissa

< /decimal >

For the best of my comprehension in this case the exponent is
optional, and has its own bit in pmap (due to the copy operator). If
that bit is not set (the exponent is not present in the stream for
sure) then the mantissa will be not present in the stream as well.

  1. Does the same worth if the bit in pmap is set but the exponent
    value is NULL?
  2. What about the new previous value of the Scaled Number if the
    exponent has to be considered absent?

Moreover, the fact that the exponent bit in pmap is not set should not
imply that the value of the exponent field will be not assigned (e.g.
it should be assigned to the copy initial value, or to the previous
value stored in the dictionary).

3.Let suppose the mantissa is not in the stream (because of the
exponent absence), what does it imply in term of the mantissa field
value, and in term of the mantissa new previous value?

Many thanks in advance. Kind regards, – Ale

Ale -

  1. No. Whether you should process the mantissa or not is only dependent on a single thing: if the exponent is NULL or not. Whether you use a operator on the exponent doesn’t change this property.

In your example you use the copy operator. If the bit is not set this means “copy the previous value”. If the previous value is not NULL, then the value of the exponent is not NULL and the mantissa is present.

  1. The mantissa and exponent parts are treated as two individual fields in the dictionary so there are one or two separate signed integer fields in the dictionary to manage. There is no corresponding scaled number field in the dictionary in this case. However, when you communicate the value of the field from the decoder to the application you would typically combine them into a scaled number or similar.

/David

Actually may be I was not so clear.

In the specific case:

< decimal name=“MDEntryPx” id=“270” presence=“optional” > < exponent >
< copy value=“-2” / > < / exponent > < mantissa > < delta / > < /
mantissa > < /decimal >

since the decimal is optional, then the exponent is optional. Moreover,
since the exponent has the individual copy operator, then the exponent
will have a bit in the pmap (no matter if it is set or not).

The exponent will be considered absent in two distinct cases:

a) The bit is not set.
b) The bit is set but, since the exponent is optional, it is present in
the stream in its NULL representation.

In both these cases the mantissa will be not present in the stream as
well and has to be considered absent.

The only case in which the mantissa is present in the stream is when the
exponent bit in pmap is set and the exponent value is not NULL.

  1. Is all that right?

  2. How should we set the new previous value of the decimal (the
    corresponding Scaled Number) if the exponent has to be considered
    absent?

Note that even if the exponent bit in pmap was not set, the value of the
exponent field could result assigned (for example it should be assigned
to the copy initial value, or to the previous value stored in the
dictionary).

  1. Let suppose the mantissa is not in the stream (because of the
    exponent absence), what does it imply in term of the mantissa field
    value, and what in term of the mantissa new previous value?

Many thanks in advance.

Regards, – Ale

Ale -

A bit in the pmap indicates how a field operator should be executed.
The exact meaning of the bit is dependent on the operator type and its
attributes.

The bit doesn’t automatically indicate whether an optional field is
NULL or not. Only after exercising the operator according to the bit
you’ll know if the value is NULL or not.

When using a decimal field with individual operators, and the value of
an exponent field is NULL, the instruction for the mantissa should be
skipped.

You may want to have a look a this post (and other posts in the same
thread):

http://www.fixprotocol.org/discuss/read/24ed599c

/David

Hello, I would need a clarification.

The handbook [section 10.5.1 – Presence Map and NULL
Utilization] says:

[…]If the decimal has optional presence, the exponent field is
treated as an optional integer field and the mantissa field is
treated as a mandatory integer field. The presence of the mantissa
field and any related bits in the presence map are dependent on the
presence of the exponent. The mantissa field appears in the stream
iff the exponent value is considered present. If the mantissa has an
operator that requires a bit in the presence map, this bit is
present iff the exponent value is considered present.[…]

Let suppose I have the following decimal field in my template
definition:

< decimal name=“MDEntryPx” id=“270” presence=“optional” > < exponent

< copy value=“-2” / > < / exponent > < mantissa > < delta / > < /
mantissa
< /decimal >

For the best of my comprehension in this case the exponent is
optional, and has its own bit in pmap (due to the copy operator). If
that bit is not set (the exponent is not present in the stream for
sure) then the mantissa will be not present in the stream as well.

  1. Does the same worth if the bit in pmap is set but the exponent
    value is NULL?
  2. What about the new previous value of the Scaled Number if the
    exponent has to be considered absent?

Moreover, the fact that the exponent bit in pmap is not set should
not imply that the value of the exponent field will be not assigned
(e.g. it should be assigned to the copy initial value, or to the
previous value stored in the dictionary).

3.Let suppose the mantissa is not in the stream (because of the
exponent absence), what does it imply in term of the mantissa field
value, and in term of the mantissa new previous value?

Many thanks in advance. Kind regards, – Ale

Thank you very much for your prompt and clear reply.

Just a little question: what if the exponent bit isn’t set and the previous value is empty?
Is this a particular case of NULL exponent?

Regards,
– Ale

Ale -

  1. No. Whether you should process the mantissa or not is only dependent
    on a single thing: if the exponent is NULL or not. Whether you use a
    operator on the exponent doesn’t change this property.

In your example you use the copy operator. If the bit is not set this
means “copy the previous value”. If the previous value is not NULL, then
the value of the exponent is not NULL and the mantissa is present.

  1. The mantissa and exponent parts are treated as two individual
    fields in the dictionary so there are one or two separate signed
    integer fields in the dictionary to manage. There is no
    corresponding scaled number field in the dictionary in this case.
    However, when you communicate the value of the field from the
    decoder to the application you would typically combine them into a
    scaled number or similar.

/David

Actually may be I was not so clear.

In the specific case:

< decimal name=“MDEntryPx” id=“270” presence=“optional” > < exponent

< copy value=“-2” / > < / exponent > < mantissa > < delta / > < /
mantissa > < /decimal >

since the decimal is optional, then the exponent is optional.
Moreover, since the exponent has the individual copy operator,
then the exponent will have a bit in the pmap (no matter if it is
set or not).

The exponent will be considered absent in two distinct cases:

a) The bit is not set.
b) The bit is set but, since the exponent is optional, it is present
in the stream in its NULL representation.

In both these cases the mantissa will be not present in the stream as
well and has to be considered absent.

The only case in which the mantissa is present in the stream is when
the exponent bit in pmap is set and the exponent value is not NULL.

  1. Is all that right?

  2. How should we set the new previous value of the decimal (the
    corresponding Scaled Number) if the exponent has to be
    considered absent?

Note that even if the exponent bit in pmap was not set, the value of
the exponent field could result assigned (for example it should be
assigned to the copy initial value, or to the previous value stored in
the dictionary).

  1. Let suppose the mantissa is not in the stream (because of the
    exponent absence), what does it imply in term of the mantissa field
    value, and what in term of the mantissa new previous value?

Many thanks in advance.

Regards, – Ale

Ale -

A bit in the pmap indicates how a field operator should be executed.
The exact meaning of the bit is dependent on the operator type and
its attributes.

The bit doesn’t automatically indicate whether an optional field is
NULL or not. Only after exercising the operator according to the bit
you’ll know if the value is NULL or not.

When using a decimal field with individual operators, and the value
of an exponent field is NULL, the instruction for the mantissa
should be skipped.

You may want to have a look a this post (and other posts in the same
thread):

http://www.fixprotocol.org/discuss/read/24ed599c

/David

Hello, I would need a clarification.

The handbook [section 10.5.1 – Presence Map and NULL Utilization]
says:

[…]If the decimal has optional presence, the exponent field is
treated as an optional integer field and the mantissa field is
treated as a mandatory integer field. The presence of the mantissa
field and any related bits in the presence map are dependent on
the presence of the exponent. The mantissa field appears in the
stream iff the exponent value is considered present. If the
mantissa has an operator that requires a bit in the presence map,
this bit is present iff the exponent value is considered
present.[…]

Let suppose I have the following decimal field in my template
definition:

< decimal name=“MDEntryPx” id=“270” presence=“optional” > <
exponent

< copy value=“-2” / > < / exponent > < mantissa > < delta / >
< /
mantissa
< /decimal >

For the best of my comprehension in this case the exponent is
optional, and has its own bit in pmap (due to the copy operator).
If that bit is not set (the exponent is not present in the stream
for sure) then the mantissa will be not present in the stream as
well.

  1. Does the same worth if the bit in pmap is set but the exponent
    value is NULL?
  2. What about the new previous value of the Scaled Number if the
    exponent has to be considered absent?

Moreover, the fact that the exponent bit in pmap is not set should
not imply that the value of the exponent field will be not
assigned (e.g. it should be assigned to the copy initial value, or
to the previous value stored in the dictionary).

3.Let suppose the mantissa is not in the stream (because of the
exponent absence), what does it imply in term of the mantissa
field value, and in term of the mantissa new previous value?

Many thanks in advance. Kind regards, – Ale

Yes, if the previous value has the state empty and the bit is not set, then the exponent is NULL.

/David

Thank you very much for your prompt and clear reply.

Just a little question: what if the exponent bit isn’t set and the
previous value is empty? Is this a particular case of NULL exponent?

Regards, – Ale

Ale -

  1. No. Whether you should process the mantissa or not is only
    dependent on a single thing: if the exponent is NULL or not.
    Whether you use a operator on the exponent doesn’t change this
    property.

In your example you use the copy operator. If the bit is not set this
means “copy the previous value”. If the previous value is not NULL,
then the value of the exponent is not NULL and the mantissa is
present.

  1. The mantissa and exponent parts are treated as two individual
    fields in the dictionary so there are one or two separate signed
    integer fields in the dictionary to manage. There is no
    corresponding scaled number field in the dictionary in this case.
    However, when you communicate the value of the field from the
    decoder to the application you would typically combine them into a
    scaled number or similar.

/David

Actually may be I was not so clear.

In the specific case:

< decimal name=“MDEntryPx” id=“270” presence=“optional” > <
exponent

< copy value=“-2” / > < / exponent > < mantissa > < delta / > < /
mantissa > < /decimal >

since the decimal is optional, then the exponent is optional.
Moreover, since the exponent has the individual copy operator,
then the exponent will have a bit in the pmap (no matter if it is
set or not).

The exponent will be considered absent in two distinct cases:

a) The bit is not set.
b) The bit is set but, since the exponent is optional, it is present
in the stream in its NULL representation.

In both these cases the mantissa will be not present in the stream
as well and has to be considered absent.

The only case in which the mantissa is present in the stream is when
the exponent bit in pmap is set and the exponent value is not NULL.

  1. Is all that right?

  2. How should we set the new previous value of the decimal (the
    corresponding Scaled Number) if the exponent has to be considered
    absent?

Note that even if the exponent bit in pmap was not set, the value of
the exponent field could result assigned (for example it should be
assigned to the copy initial value, or to the previous value stored
in the dictionary).

  1. Let suppose the mantissa is not in the stream (because of the
    exponent absence), what does it imply in term of the mantissa field
    value, and what in term of the mantissa new previous value?

Many thanks in advance.

Regards, – Ale

Ale -

A bit in the pmap indicates how a field operator should be
executed. The exact meaning of the bit is dependent on the
operator type and its attributes.

The bit doesn’t automatically indicate whether an optional field
is NULL or not. Only after exercising the operator according to
the bit you’ll know if the value is NULL or not.

When using a decimal field with individual operators, and the
value of an exponent field is NULL, the instruction for the
mantissa should be skipped.

You may want to have a look a this post (and other posts in the
same thread):

http://www.fixprotocol.org/discuss/read/24ed599c

/David

Hello, I would need a clarification.

The handbook [section 10.5.1 – Presence Map and NULL
Utilization] says:

[…]If the decimal has optional presence, the exponent field is
treated as an optional integer field and the mantissa field is
treated as a mandatory integer field. The presence of the
mantissa field and any related bits in the presence map are
dependent on the presence of the exponent. The mantissa field
appears in the stream iff the exponent value is considered
present. If the mantissa has an operator that requires a bit in
the presence map, this bit is present iff the exponent value is
considered present.[…]

Let suppose I have the following decimal field in my template
definition:

< decimal name=“MDEntryPx” id=“270” presence=“optional” > <
exponent

< copy value=“-2” / > < / exponent > < mantissa > < delta / >
< /
mantissa
< /decimal >

For the best of my comprehension in this case the exponent is
optional, and has its own bit in pmap (due to the copy
operator). If that bit is not set (the exponent is not present
in the stream for sure) then the mantissa will be not present in
the stream as well.

  1. Does the same worth if the bit in pmap is set but the
    exponent value is NULL?
  2. What about the new previous value of the Scaled Number if the
    exponent has to be considered absent?

Moreover, the fact that the exponent bit in pmap is not set
should not imply that the value of the exponent field will be
not assigned (e.g. it should be assigned to the copy initial
value, or to the previous value stored in the dictionary).

3.Let suppose the mantissa is not in the stream (because of the
exponent absence), what does it imply in term of the mantissa
field value, and in term of the mantissa new previous value?

Many thanks in advance. Kind regards, – Ale

Sorry David, I would need another particular detail:

As you replied to the question number 2, the mantissa and exponent parts have to be treated as two individual fields in the dictionary, and they will be somehow combined…

My doubt is: how should I combine the status (assigned, undefined, empty) of the exponent and the mantissa when I combine them into a scaled number or similar?

In particular do I have to expect the exponent is assigned and the mantissa is not and/or vice versa?

Thanks in advance.
Regards,
– Ale

Yes, if the previous value has the state empty and the bit is not set,
then the exponent is NULL.

/David

Thank you very much for your prompt and clear reply.

Just a little question: what if the exponent bit isn’t set and the
previous value is empty? Is this a particular case of NULL exponent?

Regards, – Ale

Ale -

  1. No. Whether you should process the mantissa or not is only
    dependent on a single thing: if the exponent is NULL or not.
    Whether you use a operator on the exponent doesn’t change this
    property.

In your example you use the copy operator. If the bit is not set
this means “copy the previous value”. If the previous value is not
NULL, then the value of the exponent is not NULL and the mantissa is
present.

  1. The mantissa and exponent parts are treated as two individual
    fields in the dictionary so there are one or two separate signed
    integer fields in the dictionary to manage. There is no
    corresponding scaled number field in the dictionary in this case.
    However, when you communicate the value of the field from the
    decoder to the application you would typically combine them into
    a scaled number or similar.

/David

Actually may be I was not so clear.

In the specific case:

< decimal name=“MDEntryPx” id=“270” presence=“optional” > <
exponent

< copy value=“-2” / > < / exponent > < mantissa > < delta / > <
/
mantissa > < /decimal >

since the decimal is optional, then the exponent is optional.
Moreover, since the exponent has the individual copy operator,
then the exponent will have a bit in the pmap (no matter if it is
set or not).

The exponent will be considered absent in two distinct cases:

a) The bit is not set.
b) The bit is set but, since the exponent is optional, it is
present in the stream in its NULL representation.

In both these cases the mantissa will be not present in the stream
as well and has to be considered absent.

The only case in which the mantissa is present in the stream is
when the exponent bit in pmap is set and the exponent value is not
NULL.

  1. Is all that right?

  2. How should we set the new previous value of the decimal (the
    corresponding Scaled Number) if the exponent has to be considered
    absent?

Note that even if the exponent bit in pmap was not set, the value
of the exponent field could result assigned (for example it should
be assigned to the copy initial value, or to the previous value
stored in the dictionary).

  1. Let suppose the mantissa is not in the stream (because of the
    exponent absence), what does it imply in term of the mantissa
    field value, and what in term of the mantissa new previous value?

Many thanks in advance.

Regards, – Ale

Ale -

A bit in the pmap indicates how a field operator should be
executed. The exact meaning of the bit is dependent on the
operator type and its attributes.

The bit doesn’t automatically indicate whether an optional field
is NULL or not. Only after exercising the operator according to
the bit you’ll know if the value is NULL or not.

When using a decimal field with individual operators, and the
value of an exponent field is NULL, the instruction for the
mantissa should be skipped.

You may want to have a look a this post (and other posts in the
same thread):

http://www.fixprotocol.org/discuss/read/24ed599c

/David

Hello, I would need a clarification.

The handbook [section 10.5.1 – Presence Map and NULL
Utilization] says:

[…]If the decimal has optional presence, the exponent field
is treated as an optional integer field and the mantissa field
is treated as a mandatory integer field. The presence of the
mantissa field and any related bits in the presence map are
dependent on the presence of the exponent. The mantissa field
appears in the stream iff the exponent value is considered
present. If the mantissa has an operator that requires a bit
in the presence map, this bit is present iff the exponent
value is considered present.[…]

Let suppose I have the following decimal field in my template
definition:

< decimal name=“MDEntryPx” id=“270” presence=“optional” > <
exponent

< copy value=“-2” / > < / exponent > < mantissa > < delta /

< /
mantissa
< /decimal >

For the best of my comprehension in this case the exponent is
optional, and has its own bit in pmap (due to the copy
operator). If that bit is not set (the exponent is not present
in the stream for sure) then the mantissa will be not present
in the stream as well.

  1. Does the same worth if the bit in pmap is set but the
    exponent value is NULL?
  2. What about the new previous value of the Scaled Number if
    the exponent has to be considered absent?

Moreover, the fact that the exponent bit in pmap is not set
should not imply that the value of the exponent field will be
not assigned (e.g. it should be assigned to the copy initial
value, or to the previous value stored in the dictionary).

3.Let suppose the mantissa is not in the stream (because of
the exponent absence), what does it imply in term of the
mantissa field value, and in term of the mantissa new previous
value?

Many thanks in advance. Kind regards, – Ale

I believe it is easiest to think of them as two completely independent fields in all other regards than this: when the exponent is NULL you don’t process the mantissa field - in any way - no operator, no change in dictionary, no pbit, no value to read from the stream.

The state of the previous value is an artifact of the dictionary so it’s not significant when you pass values to your application and there’s nothing to combine in this case.

A typical decoder would pass NULL to the application if the expoenent is NULL, and a scalar number in all other cases.

/David

Sorry David, I would need another particular detail:

As you replied to the question number 2, the mantissa and exponent parts
have to be treated as two individual fields in the dictionary, and they
will be somehow combined…

My doubt is: how should I combine the status (assigned, undefined,
empty) of the exponent and the mantissa when I combine them into a
scaled number or similar?

In particular do I have to expect the exponent is assigned and the
mantissa is not and/or vice versa?

Thanks in advance. Regards, – Ale

Yes, if the previous value has the state empty and the bit is not set,
then the exponent is NULL.

/David

Thank you very much for your prompt and clear reply.

Just a little question: what if the exponent bit isn’t set and the
previous value is empty? Is this a particular case of NULL exponent?

Regards, – Ale

Ale -

  1. No. Whether you should process the mantissa or not is only
    dependent on a single thing: if the exponent is NULL or not.
    Whether you use a operator on the exponent doesn’t change this
    property.

In your example you use the copy operator. If the bit is not set
this means “copy the previous value”. If the previous value is not
NULL, then the value of the exponent is not NULL and the mantissa
is present.

  1. The mantissa and exponent parts are treated as two individual
    fields in the dictionary so there are one or two separate
    signed integer fields in the dictionary to manage. There is no
    corresponding scaled number field in the dictionary in this
    case. However, when you communicate the value of the field from
    the decoder to the application you would typically combine them
    into a scaled number or similar.

/David

Actually may be I was not so clear.

In the specific case:

< decimal name=“MDEntryPx” id=“270” presence=“optional” > <
exponent

< copy value=“-2” / > < / exponent > < mantissa > < delta / >
< /
mantissa > < /decimal >

since the decimal is optional, then the exponent is optional.
Moreover, since the exponent has the individual copy operator,
then the exponent will have a bit in the pmap (no matter if it
is set or not).

The exponent will be considered absent in two distinct cases:

a) The bit is not set.
b) The bit is set but, since the exponent is optional, it is
present in the stream in its NULL representation.

In both these cases the mantissa will be not present in the
stream as well and has to be considered absent.

The only case in which the mantissa is present in the stream is
when the exponent bit in pmap is set and the exponent value is
not NULL.

  1. Is all that right?

  2. How should we set the new previous value of the decimal (the
    corresponding Scaled Number) if the exponent has to be
    considered absent?

Note that even if the exponent bit in pmap was not set, the
value of the exponent field could result assigned (for example
it should be assigned to the copy initial value, or to the
previous value stored in the dictionary).

  1. Let suppose the mantissa is not in the stream (because of the
    exponent absence), what does it imply in term of the mantissa
    field value, and what in term of the mantissa new previous
    value?

Many thanks in advance.

Regards, – Ale

Ale -

A bit in the pmap indicates how a field operator should be
executed. The exact meaning of the bit is dependent on the
operator type and its attributes.

The bit doesn’t automatically indicate whether an optional
field is NULL or not. Only after exercising the operator
according to the bit you’ll know if the value is NULL or not.

When using a decimal field with individual operators, and the
value of an exponent field is NULL, the instruction for the
mantissa should be skipped.

You may want to have a look a this post (and other posts in
the same thread):

http://www.fixprotocol.org/discuss/read/24ed599c

/David

Hello, I would need a clarification.

The handbook [section 10.5.1 – Presence Map and NULL
Utilization] says:

[…]If the decimal has optional presence, the exponent
field is treated as an optional integer field and the
mantissa field is treated as a mandatory integer field. The
presence of the mantissa field and any related bits in the
presence map are dependent on the presence of the exponent.
The mantissa field appears in the stream iff the exponent
value is considered present. If the mantissa has an operator
that requires a bit in the presence map, this bit is present
iff the exponent value is considered present.[…]

Let suppose I have the following decimal field in my
template definition:

< decimal name=“MDEntryPx” id=“270” presence=“optional” > <
exponent

< copy value=“-2” / > < / exponent > < mantissa > < delta
/

< /
mantissa
< /decimal >

For the best of my comprehension in this case the exponent
is optional, and has its own bit in pmap (due to the copy
operator). If that bit is not set (the exponent is not
present in the stream for sure) then the mantissa will be
not present in the stream as well.

  1. Does the same worth if the bit in pmap is set but the
    exponent value is NULL?
  2. What about the new previous value of the Scaled Number if
    the exponent has to be considered absent?

Moreover, the fact that the exponent bit in pmap is not set
should not imply that the value of the exponent field will
be not assigned (e.g. it should be assigned to the copy
initial value, or to the previous value stored in the
dictionary).

3.Let suppose the mantissa is not in the stream (because of
the exponent absence), what does it imply in term of the
mantissa field value, and in term of the mantissa new
previous value?

Many thanks in advance. Kind regards, – Ale

OK,
But is it possible that exponent is not NULL and mantissa is NULL?

And what’s the resulting ‘scaled number’ in this case?

Thanks in advance,
– Ale

I believe it is easiest to think of them as two completely independent
fields in all other regards than this: when the exponent is NULL you
don’t process the mantissa field - in any way - no operator, no change
in dictionary, no pbit, no value to read from the stream.

The state of the previous value is an artifact of the dictionary so it’s
not significant when you pass values to your application and there’s
nothing to combine in this case.

A typical decoder would pass NULL to the application if the expoenent is
NULL, and a scalar number in all other cases.

/David

Sorry David, I would need another particular detail:

As you replied to the question number 2, the mantissa and exponent
parts have to be treated as two individual fields in the dictionary,
and they will be somehow combined…

My doubt is: how should I combine the status (assigned, undefined,
empty) of the exponent and the mantissa when I combine them into a
scaled number or similar?

In particular do I have to expect the exponent is assigned and the
mantissa is not and/or vice versa?

Thanks in advance. Regards, – Ale

Yes, if the previous value has the state empty and the bit is not
set, then the exponent is NULL.

/David

Thank you very much for your prompt and clear reply.

Just a little question: what if the exponent bit isn’t set and the
previous value is empty? Is this a particular case of NULL
exponent?

Regards, – Ale

Ale -

  1. No. Whether you should process the mantissa or not is only
    dependent on a single thing: if the exponent is NULL or not.
    Whether you use a operator on the exponent doesn’t change
    this property.

In your example you use the copy operator. If the bit is not set
this means “copy the previous value”. If the previous value is
not NULL, then the value of the exponent is not NULL and the
mantissa is present.

  1. The mantissa and exponent parts are treated as two individual
    fields in the dictionary so there are one or two separate
    signed integer fields in the dictionary to manage. There is
    no corresponding scaled number field in the dictionary in
    this case. However, when you communicate the value of the
    field from the decoder to the application you would typically
    combine them into a scaled number or similar.

/David

Actually may be I was not so clear.

In the specific case:

< decimal name=“MDEntryPx” id=“270” presence=“optional” > <
exponent

< copy value=“-2” / > < / exponent > < mantissa > < delta /

< /
mantissa > < /decimal >

since the decimal is optional, then the exponent is optional.
Moreover, since the exponent has the individual copy operator,
then the exponent will have a bit in the pmap (no matter if it
is set or not).

The exponent will be considered absent in two distinct cases:

a) The bit is not set.
b) The bit is set but, since the exponent is optional, it is
present in the stream in its NULL representation.

In both these cases the mantissa will be not present in the
stream as well and has to be considered absent.

The only case in which the mantissa is present in the stream
is when the exponent bit in pmap is set and the exponent value
is not NULL.

  1. Is all that right?

  2. How should we set the new previous value of the decimal
    (the corresponding Scaled Number) if the exponent has to be
    considered absent?

Note that even if the exponent bit in pmap was not set, the
value of the exponent field could result assigned (for example
it should be assigned to the copy initial value, or to the
previous value stored in the dictionary).

  1. Let suppose the mantissa is not in the stream (because of
    the exponent absence), what does it imply in term of the
    mantissa field value, and what in term of the mantissa new
    previous value?

Many thanks in advance.

Regards, – Ale

Ale -

A bit in the pmap indicates how a field operator should be
executed. The exact meaning of the bit is dependent on the
operator type and its attributes.

The bit doesn’t automatically indicate whether an optional
field is NULL or not. Only after exercising the operator
according to the bit you’ll know if the value is NULL or
not.

When using a decimal field with individual operators, and
the value of an exponent field is NULL, the instruction for
the mantissa should be skipped.

You may want to have a look a this post (and other posts in
the same thread):

http://www.fixprotocol.org/discuss/read/24ed599c

/David

Hello, I would need a clarification.

The handbook [section 10.5.1 – Presence Map and NULL
Utilization] says:

[…]If the decimal has optional presence, the exponent
field is treated as an optional integer field and the
mantissa field is treated as a mandatory integer field.
The presence of the mantissa field and any related bits in
the presence map are dependent on the presence of the
exponent. The mantissa field appears in the stream iff the
exponent value is considered present. If the mantissa has
an operator that requires a bit in the presence map, this
bit is present iff the exponent value is considered
present.[…]

Let suppose I have the following decimal field in my
template definition:

< decimal name=“MDEntryPx” id=“270” presence=“optional” >
< exponent

< copy value=“-2” / > < / exponent > < mantissa > <
delta /

< /
mantissa
< /decimal >

For the best of my comprehension in this case the exponent
is optional, and has its own bit in pmap (due to the copy
operator). If that bit is not set (the exponent is not
present in the stream for sure) then the mantissa will be
not present in the stream as well.

  1. Does the same worth if the bit in pmap is set but the
    exponent value is NULL?
  2. What about the new previous value of the Scaled Number
    if the exponent has to be considered absent?

Moreover, the fact that the exponent bit in pmap is not
set should not imply that the value of the exponent field
will be not assigned (e.g. it should be assigned to the
copy initial value, or to the previous value stored in the
dictionary).

3.Let suppose the mantissa is not in the stream (because
of the exponent absence), what does it imply in term of
the mantissa field value, and in term of the mantissa new
previous value?

Many thanks in advance. Kind regards, – Ale

No, the mantissa is always mandatory, see the specification at section 10.5.1:

"Decimal fields with individual operators have the following utilization:

  • If the decimal has mandatory presence, the exponent and mantissa fields are treated as two separate mandatory integer fields as described above.

  • If the decimal has optional presence, the exponent field is treated as an optional integer field and the mantissa field is treated as a mandatory integer field. The presence of the mantissa field and any related bits in the presence map are dependent on the presence of the exponent. The mantissa field appears in the stream iff the exponent value is considered present. If the mantissa has an operator that requires a bit in the presence map, this bit is present iff the exponent value is considered present."

/David

OK, But is it possible that exponent is not NULL and mantissa is NULL?

And what’s the resulting ‘scaled number’ in this case?

Thanks in advance, – Ale

I believe it is easiest to think of them as two completely independent
fields in all other regards than this: when the exponent is NULL you
don’t process the mantissa field - in any way - no operator, no change
in dictionary, no pbit, no value to read from the stream.

The state of the previous value is an artifact of the dictionary so
it’s not significant when you pass values to your application and
there’s nothing to combine in this case.

A typical decoder would pass NULL to the application if the expoenent
is NULL, and a scalar number in all other cases.

/David

Sorry David, I would need another particular detail:

As you replied to the question number 2, the mantissa and exponent
parts have to be treated as two individual fields in the dictionary,
and they will be somehow combined…

My doubt is: how should I combine the status (assigned, undefined,
empty) of the exponent and the mantissa when I combine them into a
scaled number or similar?

In particular do I have to expect the exponent is assigned and the
mantissa is not and/or vice versa?

Thanks in advance. Regards, – Ale

Yes, if the previous value has the state empty and the bit is not
set, then the exponent is NULL.

/David

Thank you very much for your prompt and clear reply.

Just a little question: what if the exponent bit isn’t set and
the previous value is empty? Is this a particular case of NULL
exponent?

Regards, – Ale

Ale -

  1. No. Whether you should process the mantissa or not is only
    dependent on a single thing: if the exponent is NULL or
    not. Whether you use a operator on the exponent doesn’t
    change this property.

In your example you use the copy operator. If the bit is not
set this means “copy the previous value”. If the previous
value is not NULL, then the value of the exponent is not NULL
and the mantissa is present.

  1. The mantissa and exponent parts are treated as two
    individual fields in the dictionary so there are one or two
    separate signed integer fields in the dictionary to manage.
    There is no corresponding scaled number field in the
    dictionary in this case. However, when you communicate the
    value of the field from the decoder to the application you
    would typically combine them into a scaled number or
    similar.

/David

Actually may be I was not so clear.

In the specific case:

< decimal name=“MDEntryPx” id=“270” presence=“optional” > <
exponent

< copy value=“-2” / > < / exponent > < mantissa > < delta
/

< /
mantissa > < /decimal >

since the decimal is optional, then the exponent is
optional. Moreover, since the exponent has the individual
copy operator, then the exponent will have a bit in the pmap
(no matter if it is set or not).

The exponent will be considered absent in two distinct
cases:

a) The bit is not set.
b) The bit is set but, since the exponent is optional, it is
present in the stream in its NULL representation.

In both these cases the mantissa will be not present in the
stream as well and has to be considered absent.

The only case in which the mantissa is present in the stream
is when the exponent bit in pmap is set and the exponent
value is not NULL.

  1. Is all that right?

  2. How should we set the new previous value of the decimal
    (the corresponding Scaled Number) if the exponent has to
    be considered absent?

Note that even if the exponent bit in pmap was not set, the
value of the exponent field could result assigned (for
example it should be assigned to the copy initial value, or
to the previous value stored in the dictionary).

  1. Let suppose the mantissa is not in the stream (because of
    the exponent absence), what does it imply in term of the
    mantissa field value, and what in term of the mantissa new
    previous value?

Many thanks in advance.

Regards, – Ale

Ale -

A bit in the pmap indicates how a field operator should be
executed. The exact meaning of the bit is dependent on the
operator type and its attributes.

The bit doesn’t automatically indicate whether an optional
field is NULL or not. Only after exercising the operator
according to the bit you’ll know if the value is NULL or
not.

When using a decimal field with individual operators, and
the value of an exponent field is NULL, the instruction
for the mantissa should be skipped.

You may want to have a look a this post (and other posts
in the same thread):

http://www.fixprotocol.org/discuss/read/24ed599c

/David

Hello, I would need a clarification.

The handbook [section 10.5.1 – Presence Map and NULL
Utilization] says:

[…]If the decimal has optional presence, the exponent
field is treated as an optional integer field and the
mantissa field is treated as a mandatory integer field.
The presence of the mantissa field and any related bits
in the presence map are dependent on the presence of the
exponent. The mantissa field appears in the stream iff
the exponent value is considered present. If the
mantissa has an operator that requires a bit in the
presence map, this bit is present iff the exponent value
is considered present.[…]

Let suppose I have the following decimal field in my
template definition:

< decimal name=“MDEntryPx” id=“270” presence=“optional”

< exponent
< copy value=“-2” / > < / exponent > < mantissa > <
delta /

< /
mantissa
< /decimal >

For the best of my comprehension in this case the
exponent is optional, and has its own bit in pmap (due
to the copy operator). If that bit is not set (the
exponent is not present in the stream for sure) then the
mantissa will be not present in the stream as well.

  1. Does the same worth if the bit in pmap is set but the
    exponent value is NULL?
  2. What about the new previous value of the Scaled
    Number if the exponent has to be considered absent?

Moreover, the fact that the exponent bit in pmap is not
set should not imply that the value of the exponent
field will be not assigned (e.g. it should be assigned
to the copy initial value, or to the previous value
stored in the dictionary).

3.Let suppose the mantissa is not in the stream (because
of the exponent absence), what does it imply in term of
the mantissa field value, and in term of the mantissa
new previous value?

Many thanks in advance. Kind regards, – Ale

OK, perfect.
Thank you very much.
– Ale

No, the mantissa is always mandatory, see the specification at
section 10.5.1:

"Decimal fields with individual operators have the following
utilization:

  • If the decimal has mandatory presence, the exponent and mantissa
    fields are treated as two separate mandatory integer fields as
    described above.

  • If the decimal has optional presence, the exponent field is treated as
    an optional integer field and the mantissa field is treated as a
    mandatory integer field. The presence of the mantissa field and any
    related bits in the presence map are dependent on the presence of the
    exponent. The mantissa field appears in the stream iff the exponent
    value is considered present. If the mantissa has an operator that
    requires a bit in the presence map, this bit is present iff the
    exponent value is considered present."

/David

OK, But is it possible that exponent is not NULL and mantissa is NULL?

And what’s the resulting ‘scaled number’ in this case?

Thanks in advance, – Ale

I believe it is easiest to think of them as two completely
independent fields in all other regards than this: when the exponent
is NULL you don’t process the mantissa field - in any way - no
operator, no change in dictionary, no pbit, no value to read from
the stream.

The state of the previous value is an artifact of the dictionary so
it’s not significant when you pass values to your application and
there’s nothing to combine in this case.

A typical decoder would pass NULL to the application if the
expoenent is NULL, and a scalar number in all other cases.

/David

Sorry David, I would need another particular detail:

As you replied to the question number 2, the mantissa and exponent
parts have to be treated as two individual fields in the
dictionary, and they will be somehow combined…

My doubt is: how should I combine the status (assigned, undefined,
empty) of the exponent and the mantissa when I combine them into a
scaled number or similar?

In particular do I have to expect the exponent is assigned and the
mantissa is not and/or vice versa?

Thanks in advance. Regards, – Ale

Yes, if the previous value has the state empty and the bit is
not set, then the exponent is NULL.

/David

Thank you very much for your prompt and clear reply.

Just a little question: what if the exponent bit isn’t set and
the previous value is empty? Is this a particular case of NULL
exponent?

Regards, – Ale

Ale -

  1. No. Whether you should process the mantissa or not is
    only dependent on a single thing: if the exponent is NULL
    or not. Whether you use a operator on the exponent
    doesn’t change this property.

In your example you use the copy operator. If the bit is not
set this means “copy the previous value”. If the previous
value is not NULL, then the value of the exponent is not
NULL and the mantissa is present.

  1. The mantissa and exponent parts are treated as two
    individual fields in the dictionary so there are one or
    two separate signed integer fields in the dictionary to
    manage. There is no corresponding scaled number field in
    the dictionary in this case. However, when you
    communicate the value of the field from the decoder to
    the application you would typically combine them into a
    scaled number or similar.

/David

Actually may be I was not so clear.

In the specific case:

< decimal name=“MDEntryPx” id=“270” presence=“optional” >
< exponent

< copy value=“-2” / > < / exponent > < mantissa > <
delta /

< /
mantissa > < /decimal >

since the decimal is optional, then the exponent is
optional. Moreover, since the exponent has the individual
copy operator, then the exponent will have a bit in the
pmap (no matter if it is set or not).

The exponent will be considered absent in two distinct
cases:

a) The bit is not set.
b) The bit is set but, since the exponent is optional, it
is present in the stream in its NULL representation.

In both these cases the mantissa will be not present in
the stream as well and has to be considered absent.

The only case in which the mantissa is present in the
stream is when the exponent bit in pmap is set and the
exponent value is not NULL.

  1. Is all that right?

  2. How should we set the new previous value of the decimal
    (the corresponding Scaled Number) if the exponent has
    to be considered absent?

Note that even if the exponent bit in pmap was not set,
the value of the exponent field could result assigned (for
example it should be assigned to the copy initial value,
or to the previous value stored in the dictionary).

  1. Let suppose the mantissa is not in the stream (because
    of the exponent absence), what does it imply in term of
    the mantissa field value, and what in term of the mantissa
    new previous value?

Many thanks in advance.

Regards, – Ale

Ale -

A bit in the pmap indicates how a field operator should
be executed. The exact meaning of the bit is dependent
on the operator type and its attributes.

The bit doesn’t automatically indicate whether an
optional field is NULL or not. Only after exercising the
operator according to the bit you’ll know if the value
is NULL or not.

When using a decimal field with individual operators,
and the value of an exponent field is NULL, the
instruction for the mantissa should be skipped.

You may want to have a look a this post (and other posts
in the same thread):

http://www.fixprotocol.org/discuss/read/24ed599c

/David

Hello, I would need a clarification.

The handbook [section 10.5.1 – Presence Map and NULL
Utilization] says:

[…]If the decimal has optional presence, the
exponent field is treated as an optional integer field
and the mantissa field is treated as a mandatory
integer field. The presence of the mantissa field and
any related bits in the presence map are dependent on
the presence of the exponent. The mantissa field
appears in the stream iff the exponent value is
considered present. If the mantissa has an operator
that requires a bit in the presence map, this bit is
present iff the exponent value is considered
present.[…]

Let suppose I have the following decimal field in my
template definition:

< decimal name=“MDEntryPx” id=“270”
presence=“optional”

< exponent < copy value=“-2” / > < / exponent > <
mantissa > < delta /

< /
mantissa
< /decimal >

For the best of my comprehension in this case the
exponent is optional, and has its own bit in pmap (due
to the copy operator). If that bit is not set (the
exponent is not present in the stream for sure) then
the mantissa will be not present in the stream as
well.

  1. Does the same worth if the bit in pmap is set but
    the exponent value is NULL?
  2. What about the new previous value of the Scaled
    Number if the exponent has to be considered absent?

Moreover, the fact that the exponent bit in pmap is
not set should not imply that the value of the
exponent field will be not assigned (e.g. it should be
assigned to the copy initial value, or to the previous
value stored in the dictionary).

3.Let suppose the mantissa is not in the stream
(because of the exponent absence), what does it imply
in term of the mantissa field value, and in term of
the mantissa new previous value?

Many thanks in advance. Kind regards, – Ale