1616
1717package za .co .absa .cobrix .cobol .parser .decoders
1818
19- import java .nio .charset .{Charset , StandardCharsets }
2019import za .co .absa .cobrix .cobol .parser .ast .datatype ._
2120import za .co .absa .cobrix .cobol .parser .common .Constants
2221import za .co .absa .cobrix .cobol .parser .common .Constants .{maxIntegerPrecision , maxLongPrecision }
@@ -25,6 +24,7 @@ import za.co.absa.cobrix.cobol.parser.encoding._
2524import za .co .absa .cobrix .cobol .parser .encoding .codepage .{CodePage , CodePageCommon }
2625import za .co .absa .cobrix .cobol .parser .position .Position
2726
27+ import java .nio .charset .{Charset , StandardCharsets }
2828import scala .util .control .NonFatal
2929
3030object DecoderSelector {
@@ -128,14 +128,14 @@ object DecoderSelector {
128128 case None =>
129129 if (decimalType.explicitDecimal) {
130130 if (isEbcidic)
131- StringDecoders .decodeEbcdicBigDecimal(_ , ! isSigned, isSigned || ! strictSignOverpunch, improvedNullDetection)
131+ ( bytes : Array [ Byte ]) => StringDecoders .decodeEbcdicBigDecimal(bytes , ! isSigned, isSigned || ! strictSignOverpunch, ! strictSignOverpunch, improvedNullDetection)
132132 else
133- StringDecoders .decodeAsciiBigDecimal(_, ! isSigned, isSigned || ! strictSignOverpunch, improvedNullDetection)
133+ StringDecoders .decodeAsciiBigDecimal(_, ! isSigned, isSigned || ! strictSignOverpunch, ! strictSignOverpunch, improvedNullDetection)
134134 } else {
135135 if (isEbcidic)
136- StringDecoders .decodeEbcdicBigNumber(_ , ! isSigned, isSigned || ! strictSignOverpunch, improvedNullDetection, decimalType.scale, decimalType.scaleFactor)
136+ ( bytes : Array [ Byte ]) => StringDecoders .decodeEbcdicBigNumber(bytes , ! isSigned, isSigned || ! strictSignOverpunch, ! strictSignOverpunch, improvedNullDetection, decimalType.scale, decimalType.scaleFactor)
137137 else
138- StringDecoders .decodeAsciiBigNumber(_, ! isSigned, isSigned || ! strictSignOverpunch, improvedNullDetection, decimalType.scale, decimalType.scaleFactor)
138+ StringDecoders .decodeAsciiBigNumber(_, ! isSigned, isSigned || ! strictSignOverpunch, ! strictSignOverpunch, improvedNullDetection, decimalType.scale, decimalType.scaleFactor)
139139 }
140140// case Some(COMP()) =>
141141// // COMP aka BINARY encoded number
@@ -207,24 +207,24 @@ object DecoderSelector {
207207 case None =>
208208 if (strictIntegralPrecision) {
209209 if (isEbcidic)
210- StringDecoders .decodeEbcdicBigNumber(_ , ! isSigned, isSigned || ! strictSignOverpunch, improvedNullDetection)
210+ ( bytes : Array [ Byte ]) => StringDecoders .decodeEbcdicBigNumber(bytes , ! isSigned, isSigned || ! strictSignOverpunch, ! strictSignOverpunch, improvedNullDetection)
211211 else
212- StringDecoders .decodeAsciiBigNumber(_, ! isSigned, isSigned || ! strictSignOverpunch, improvedNullDetection)
212+ StringDecoders .decodeAsciiBigNumber(_, ! isSigned, isSigned || ! strictSignOverpunch, ! strictSignOverpunch, improvedNullDetection)
213213 } else if (integralType.precision <= Constants .maxIntegerPrecision) {
214214 if (isEbcidic)
215- StringDecoders .decodeEbcdicInt(_ , ! isSigned, isSigned || ! strictSignOverpunch, improvedNullDetection)
215+ ( bytes : Array [ Byte ]) => StringDecoders .decodeEbcdicInt(bytes , ! isSigned, isSigned || ! strictSignOverpunch, ! strictSignOverpunch, improvedNullDetection)
216216 else
217- StringDecoders .decodeAsciiInt(_, ! isSigned, isSigned || ! strictSignOverpunch, improvedNullDetection)
217+ StringDecoders .decodeAsciiInt(_, ! isSigned, isSigned || ! strictSignOverpunch, ! strictSignOverpunch, improvedNullDetection)
218218 } else if (integralType.precision <= Constants .maxLongPrecision) {
219219 if (isEbcidic)
220- StringDecoders .decodeEbcdicLong(_, ! isSigned, isSigned || ! strictSignOverpunch, improvedNullDetection)
220+ StringDecoders .decodeEbcdicLong(_, ! isSigned, isSigned || ! strictSignOverpunch, improvedNullDetection, ! strictSignOverpunch )
221221 else
222- StringDecoders .decodeAsciiLong(_, ! isSigned, isSigned || ! strictSignOverpunch, improvedNullDetection)
222+ StringDecoders .decodeAsciiLong(_, ! isSigned, isSigned || ! strictSignOverpunch, ! strictSignOverpunch, improvedNullDetection)
223223 } else {
224224 if (isEbcidic)
225- StringDecoders .decodeEbcdicBigNumber(_ , ! isSigned, isSigned || ! strictSignOverpunch, improvedNullDetection)
225+ ( bytes : Array [ Byte ]) => StringDecoders .decodeEbcdicBigNumber(bytes , ! isSigned, isSigned || ! strictSignOverpunch, ! strictSignOverpunch, improvedNullDetection)
226226 else
227- StringDecoders .decodeAsciiBigNumber(_, ! isSigned, isSigned || ! strictSignOverpunch, improvedNullDetection)
227+ StringDecoders .decodeAsciiBigNumber(_, ! isSigned, isSigned || ! strictSignOverpunch, ! strictSignOverpunch, improvedNullDetection)
228228 }
229229// case Some(Constants.compBinary1) =>
230230// // COMP aka BINARY encoded number
@@ -267,11 +267,11 @@ object DecoderSelector {
267267
268268 if (isEbcdic) {
269269 bytes : Array [Byte ] => {
270- StringDecoders .decodeEbcdicNumber(bytes, ! isSigned, allowedSignOverpunch, improvedNullDetection)
270+ StringDecoders .decodeEbcdicNumber(bytes, ! isSigned, allowedSignOverpunch, ! strictSignOverpunch, improvedNullDetection)
271271 }
272272 } else {
273273 bytes : Array [Byte ] => {
274- StringDecoders .decodeAsciiNumber(bytes, ! isSigned, allowedSignOverpunch, improvedNullDetection)
274+ StringDecoders .decodeAsciiNumber(bytes, ! isSigned, allowedSignOverpunch, ! strictSignOverpunch, improvedNullDetection)
275275 }
276276 }
277277 }
0 commit comments