[ 
https://issues.apache.org/jira/browse/DAFFODIL-2957?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17899219#comment-17899219
 ] 

Mike Beckerle commented on DAFFODIL-2957:
-----------------------------------------

Basically, Daffodil is not doing a good job with xs:decimal when 
dfdl:decimalSigned="no".

See the files TestDecimalSigned.scala and TestDecimalSigned.tdml in 

[https://github.com/apache/daffodil/pull/1376/files]

As suspected, for both packed and ibm4690Packed, Daffodil happily creates 
negative values when parsing despite dfdl:decimalSigned="no", and when 
unparsing happily converts negative values into negative representations. This 
means just "fixing" this to detect these errors would potentially break schemas 
that users are currently using. So for daffodil, fixing these to check will 
perhaps require a switch to enforce decimalSigned="no" checking both when 
parsing and unparsing. 

For BCD, there is no case of parsing a negative rep as BCD is inherently 
unsigned. When unparsing a negative value to BCD, Daffodil puts a negative sign 
nibble first, the same as for ibm4690Packed. This is simply broken data being 
output. This needs a check that is NOT controlled by the above mentioned 
switch. 

For binary, parsing properly interprets all the bits as a positive value. For 
unparsing, a negative value results in an Assertion failure in the code. A user 
will get a bug traceback that says "This is a bug, please report...". This 
needs a bug fix which will NOT need to have any switched behavior. 

 

> dfdl:decimalSigned="no" bugs with negative values and data representations
> --------------------------------------------------------------------------
>
>                 Key: DAFFODIL-2957
>                 URL: https://issues.apache.org/jira/browse/DAFFODIL-2957
>             Project: Daffodil
>          Issue Type: Bug
>          Components: Back End
>    Affects Versions: 3.9.0
>            Reporter: Mike Beckerle
>            Assignee: Mike Beckerle
>            Priority: Minor
>
> Tests are needed for whether unparsing a negative value as an element of type 
> xs:decimal with dfdl:decimalSigned="no" detects an error or not. 
> When dfdl:binaryNumberRep="bcd" this is definitely an error and should 
> produce an Unparse error. (IBM DFDL does detect this.)
> When dfdl:binaryNumberRep is 'binary', 'packed', or 'ibm4790Packed', the data 
> stream can represent a negative sign, the question is whether this error is 
> detected or not. 
> The DFDL Workgroup wants all implementations to test if this error is 
> detected currently because if this was clarified in the spec as causing an 
> unparse error, but current implementations are not detecting this currently, 
> then this would be a breaking change that would require more careful 
> analysis, and possibly switches to provide backward compatibility. Or the 
> behavior would just become "implementation defined". 
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to