You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@daffodil.apache.org by "Mike Beckerle (Jira)" <ji...@apache.org> on 2024/01/18 18:54:00 UTC

[jira] [Assigned] (DAFFODIL-2873) zoned EBCDIC signed negative numbers not parsed correctly

     [ https://issues.apache.org/jira/browse/DAFFODIL-2873?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mike Beckerle reassigned DAFFODIL-2873:
---------------------------------------

    Assignee: Mike Beckerle

> zoned EBCDIC signed negative numbers not parsed correctly
> ---------------------------------------------------------
>
>                 Key: DAFFODIL-2873
>                 URL: https://issues.apache.org/jira/browse/DAFFODIL-2873
>             Project: Daffodil
>          Issue Type: Bug
>          Components: Back End
>    Affects Versions: 3.6.0
>            Reporter: Mike Beckerle
>            Assignee: Mike Beckerle
>            Priority: Major
>
> For zoned decimal numbers, if the encoding is ascii-based then the proeprty dfdl:textZonedSignStyle is used to determine how the signs are overpunched.
>  
> But if the encoding is ebcdic based, then this property is supposed to be ignored. 
> This appears to not be happening. 
>  
> In the COBOL1 example (on DFDLSchemas github), a number has this type:
>  
> {code:java}
> <simpleType
>   name="displayMoney7Digits"
>   dfdl:representation="text"
>   dfdl:textNumberRep="zoned"
>   dfdl:encoding="ebcdic-cp-us"
>   dfdl:decimalSigned="yes"
>   dfdl:textNumberPattern="+0000000V00"
>   dfdl:length="9">
>   <restriction base="xs:decimal" >
>     <maxInclusive value="9999999.99"/>
>     <minInclusive value="-9999999.99"/>
>   </restriction>
> </simpleType> {code}
> The data is:
> {code:java}
> R99999999 {code}
> But the R is not accepted as a -9 digit with negative overpunched. This is EBCDIC character D9 which is the D minus indicator overpunched on the zone of the 9 digit. 
> The error message is:
> {code:java}
> org.apache.daffodil.tdml.TDMLExceptionImpl: (Implementation: daffodil) ParseError: Parse Error: Unable to parse zoned xs:decimal from text: R99999999. Invalid zoned digit: R
> Schema context: TOTAL-CHARGES Location line 84 column 8 in .../Cobol/target/classes/cobol1.dfdl.xsd
> Data location was preceding byte 90 {code}



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