From cfeb6ad5568984fc3bb2ae0116e26717d63fa28c Mon Sep 17 00:00:00 2001 From: Ruslan Iushchenko Date: Mon, 26 Jul 2021 08:03:24 +0200 Subject: [PATCH 01/10] #405 Add a test that demonstrates the issue --- .../Test14AsciiMergedCopybooks.scala | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test14AsciiMergedCopybooks.scala diff --git a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test14AsciiMergedCopybooks.scala b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test14AsciiMergedCopybooks.scala new file mode 100644 index 00000000..16d4776d --- /dev/null +++ b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test14AsciiMergedCopybooks.scala @@ -0,0 +1,77 @@ +/* + * Copyright 2018 ABSA Group Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package za.co.absa.cobrix.spark.cobol.source.regression + +import org.scalatest.WordSpec +import org.slf4j.{Logger, LoggerFactory} +import za.co.absa.cobrix.spark.cobol.source.base.{SimpleComparisonBase, SparkTestBase} +import za.co.absa.cobrix.spark.cobol.source.fixtures.BinaryFileFixture + +import java.nio.charset.StandardCharsets +import java.nio.file.{Files, Paths} + +class Test14AsciiMergedCopybooks extends WordSpec with SparkTestBase with BinaryFileFixture with SimpleComparisonBase { + + private implicit val logger: Logger = LoggerFactory.getLogger(this.getClass) + + private val copybook1 = + """ 01 ENTITY1. + 05 A PIC X. + """ + + private val copybook2 = + """ 01 ENTITY2. + 05 B PIC X. + """ + + val textFileContents: String = "1\n2\n3\n4" + + "Test ASCII CRLF text file with merged copybooks" should { + "correctly identify empty lines when read as a text file" in { + withTempDirectory("merged_copybook") { tempDir => + val copybook1Path = Paths.get(tempDir, "copybook1.cpy") + val copybook2Path = Paths.get(tempDir, "copybook2.cpy") + + Files.write(copybook1Path, copybook1.getBytes) + Files.write(copybook2Path, copybook2.getBytes) + + + withTempTextFile("merged_crlf", ".dat", StandardCharsets.UTF_8, textFileContents) { tmpFileName => + val df = spark + .read + .format("cobol") + .option("copybooks", s"$copybook1Path,$copybook2Path") + .option("pedantic", "true") + .option("is_text", "true") + .option("encoding", "ascii") + .option("schema_retention_policy", "collapse_root") + .load(tmpFileName) + + // This is an error. Should be: + //val expected = """[{"A":"1","B":"1"},{"A":"2","B":"2"},{"A":"3","B":"3"},{"A":"4","B":"4"}]""" + val expected = """[{"A":"1","B":""},{"A":"2","B":""},{"A":"3","B":""},{"A":"4","B":""}]""" + + val count = df.count() + val actual = df.toJSON.collect().mkString("[", ",", "]") + + assert(count == 4) + assertEqualsMultiline(actual, expected) + } + } + } + } +} From cc59bdcf755d10d1c5015a56f816e6a2b0f353ac Mon Sep 17 00:00:00 2001 From: Ruslan Iushchenko Date: Mon, 26 Jul 2021 08:57:21 +0200 Subject: [PATCH 02/10] #405 Fix the way layout is drawn - fix parser unit tests --- .../absa/cobrix/cobol/parser/Copybook.scala | 21 +++--- .../copybooks/CopybooksOperationsSpec.scala | 46 ++++++------ .../parser/copybooks/MergeCopybooksSpec.scala | 71 ++++++++++--------- .../parser/copybooks/ParseCommentsSpec.scala | 6 +- .../copybooks/ParseDebugRedefinedSpec.scala | 23 +++--- .../copybooks/ParseFieldNamesSpec.scala | 24 +++---- .../copybooks/ParseFieldsNestingSpec.scala | 14 ++-- .../Test14AsciiMergedCopybooks.scala | 54 +++++++++++++- 8 files changed, 152 insertions(+), 107 deletions(-) diff --git a/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/Copybook.scala b/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/Copybook.scala index 15c7926a..482d38dd 100644 --- a/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/Copybook.scala +++ b/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/Copybook.scala @@ -251,19 +251,9 @@ class Copybook(val ast: CopybookAST) extends Serializable { fieldStrings.mkString("\n") } - val strings = for (grp <- ast.children) yield { - val start = grp.binaryProperties.offset + 1 - val length = grp.binaryProperties.actualSize - val end = start + length - 1 - val groupStr = generateGroupLayoutPositions(grp.asInstanceOf[Group]) - val namePart = alignLeft(s"${grp.name}", 55) - val fieldStartPart = alignRight(s"$start", 7) - val fieldEndPart = alignRight(s"$end", 7) - val fieldLengthPart = alignRight(s"$length", 7) - s"$namePart$fieldStartPart$fieldEndPart$fieldLengthPart\n$groupStr" - } + val layout = generateGroupLayoutPositions(ast) val header = "-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH\n\n" - header + strings.mkString("\n") + header + layout } def dropRoot(): Copybook = { @@ -313,10 +303,14 @@ class Copybook(val ast: CopybookAST) extends Serializable { object Copybook { - def merge(copybooks: Iterable[Copybook]): Copybook = { + def merge(copybooks: Seq[Copybook]): Copybook = { if (copybooks.isEmpty) throw new RuntimeException("Cannot merge an empty iterable of copybooks.") + if (copybooks.size == 1) { + return copybooks.head + } + // make sure all segments are the same level val rootLevels: Set[Int] = copybooks.flatMap(cb => cb.ast.children.map({ case x: Group => x.level @@ -354,6 +348,7 @@ object Copybook { case x: Group => x.copy(redefines = None, isRedefined = true)(Some(newRoot)) case x: Primitive => x.copy(redefines = None, isRedefined = true)(Some(newRoot)) }) + newRoot.children ++= copybooks.head.ast.children.tail.map({ case x: Group => x.copy(redefines = Option(targetName), isRedefined = false)(Some(newRoot)) case x: Primitive => x.copy(redefines = Option(targetName), isRedefined = false)(Some(newRoot)) diff --git a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/CopybooksOperationsSpec.scala b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/CopybooksOperationsSpec.scala index bedf9e21..912824d2 100644 --- a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/CopybooksOperationsSpec.scala +++ b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/CopybooksOperationsSpec.scala @@ -42,7 +42,17 @@ class CopybooksOperationsSpec extends FunSuite { assert(copybook1.generateRecordLayoutPositions == """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH | - |RECORD_COPYBOOK_1 1 30 30 + | 1 RECORD_COPYBOOK_1 7 1 30 30 + | 5 GROUP_1 7 1 30 30 + | 6 FIELD_1 3 1 10 10 + | 6 FILLER 4 11 15 5 + | 6 GROUP_2 7 16 30 15 + | 10 NESTED_FIELD_1 6 16 25 10 + | 10 FILLER 7 26 30 5""" + .stripMargin.replace("\r\n", "\n")) + assert(copybookDR1.generateRecordLayoutPositions == + """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH + | | 5 GROUP_1 6 1 30 30 | 6 FIELD_1 2 1 10 10 | 6 FILLER 3 11 15 5 @@ -50,16 +60,6 @@ class CopybooksOperationsSpec extends FunSuite { | 10 NESTED_FIELD_1 5 16 25 10 | 10 FILLER 6 26 30 5""" .stripMargin.replace("\r\n", "\n")) - assert(copybookDR1.generateRecordLayoutPositions == - """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH - | - |GROUP_1 1 30 30 - | 6 FIELD_1 1 1 10 10 - | 6 FILLER 2 11 15 5 - | 6 GROUP_2 5 16 30 15 - | 10 NESTED_FIELD_1 4 16 25 10 - | 10 FILLER 5 26 30 5""" - .stripMargin.replace("\r\n", "\n")) val exception = intercept[RuntimeException] { copybookDR1.dropRoot() @@ -126,22 +126,22 @@ class CopybooksOperationsSpec extends FunSuite { assert(copybookR1.generateRecordLayoutPositions == """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH | - |GROUP_1A 1 30 30 - | 6 FIELD_1 1 1 10 10 - | 6 FILLER 2 11 15 5 - | 6 GROUP_2A 5 16 30 15 - | 10 NESTED_FIELD_1 4 16 25 10 - | 10 FILLER 5 26 30 5""" + | 5 GROUP_1A 6 1 30 30 + | 6 FIELD_1 2 1 10 10 + | 6 FILLER 3 11 15 5 + | 6 GROUP_2A 6 16 30 15 + | 10 NESTED_FIELD_1 5 16 25 10 + | 10 FILLER 6 26 30 5""" .stripMargin.replace("\r\n", "\n")) assert(copybookR2.generateRecordLayoutPositions == """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH | - |GROUP_1B 1 60 60 - | 6 FIELD_1 1 1 20 20 - | 6 FILLER 2 21 30 10 - | 6 GROUP_2B 5 31 60 30 - | 10 NESTED_FIELD_1 4 31 50 20 - | 10 FILLER 5 51 60 10""" + | 5 GROUP_1B 6 1 60 60 + | 6 FIELD_1 2 1 20 20 + | 6 FILLER 3 21 30 10 + | 6 GROUP_2B 6 31 60 30 + | 10 NESTED_FIELD_1 5 31 50 20 + | 10 FILLER 6 51 60 10""" .stripMargin.replace("\r\n", "\n")) val exception1 = intercept[RuntimeException] { diff --git a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/MergeCopybooksSpec.scala b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/MergeCopybooksSpec.scala index 8d4b6c40..b0d5ae5b 100644 --- a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/MergeCopybooksSpec.scala +++ b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/MergeCopybooksSpec.scala @@ -76,34 +76,34 @@ class MergeCopybooksSpec extends FunSuite { assert(copybook123.generateRecordLayoutPositions == """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH | - |RECORD_COPYBOOK_1 1 90 90 - | 5 GROUP_1 6 1 30 30 - | 6 FIELD_1 2 1 10 10 - | 6 FILLER 3 11 15 5 - | 6 GROUP_2 6 16 30 15 - | 10 NESTED_FIELD_1 5 16 25 10 - | 10 FILLER 6 26 30 5 - |RECORD_COPYBOOK_2A 1 90 90 - | 5 GROUP_1 12 1 60 60 - | 6 FIELD_1 8 1 20 20 - | 6 FILLER 9 21 30 10 - | 6 GROUP_2 12 31 60 30 - | 10 NESTED_FIELD_1 11 31 50 20 - | 10 FILLER 12 51 60 10 - |RECORD_COPYBOOK_2B 1 90 90 - | 5 GROUP_1 18 1 60 60 - | 6 FIELD_1 14 1 20 20 - | 6 FILLER 15 21 30 10 - | 6 GROUP_2 18 31 60 30 - | 10 NESTED_FIELD_1 17 31 50 20 - | 10 FILLER 18 51 60 10 - |RECORD_COPYBOOK_3 1 90 90 - | 5 GROUP_1 24 1 90 90 - | 6 FIELD_1 20 1 30 30 - | 6 FILLER 21 31 45 15 - | 6 GROUP_2 24 46 90 45 - | 10 NESTED_FIELD_1 23 46 75 30 - | 10 FILLER 24 76 90 15""" + | 1 RECORD_COPYBOOK_1 r 7 1 90 90 + | 5 GROUP_1 7 1 30 30 + | 6 FIELD_1 3 1 10 10 + | 6 FILLER 4 11 15 5 + | 6 GROUP_2 7 16 30 15 + | 10 NESTED_FIELD_1 6 16 25 10 + | 10 FILLER 7 26 30 5 + | 1 RECORD_COPYBOOK_2A rR 14 1 90 90 + | 5 GROUP_1 14 1 60 60 + | 6 FIELD_1 10 1 20 20 + | 6 FILLER 11 21 30 10 + | 6 GROUP_2 14 31 60 30 + | 10 NESTED_FIELD_1 13 31 50 20 + | 10 FILLER 14 51 60 10 + | 1 RECORD_COPYBOOK_2B rR 21 1 90 90 + | 5 GROUP_1 21 1 60 60 + | 6 FIELD_1 17 1 20 20 + | 6 FILLER 18 21 30 10 + | 6 GROUP_2 21 31 60 30 + | 10 NESTED_FIELD_1 20 31 50 20 + | 10 FILLER 21 51 60 10 + | 1 RECORD_COPYBOOK_3 R 28 1 90 90 + | 5 GROUP_1 28 1 90 90 + | 6 FIELD_1 24 1 30 30 + | 6 FILLER 25 31 45 15 + | 6 GROUP_2 28 46 90 45 + | 10 NESTED_FIELD_1 27 46 75 30 + | 10 FILLER 28 76 90 15""" .stripMargin.replace("\r\n", "\n")) } @@ -126,16 +126,17 @@ class MergeCopybooksSpec extends FunSuite { assert(copybook1M.getRecordSize == 30) assert(copybook1M.generateRecordLayoutPositions == copybook1.generateRecordLayoutPositions) + assert(copybook1M.generateRecordLayoutPositions == """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH | - |RECORD_COPYBOOK_1 1 30 30 - | 5 GROUP_1 6 1 30 30 - | 6 FIELD_1 2 1 10 10 - | 6 FILLER 3 11 15 5 - | 6 GROUP_2 6 16 30 15 - | 10 NESTED_FIELD_1 5 16 25 10 - | 10 FILLER 6 26 30 5""" + | 1 RECORD_COPYBOOK_1 7 1 30 30 + | 5 GROUP_1 7 1 30 30 + | 6 FIELD_1 3 1 10 10 + | 6 FILLER 4 11 15 5 + | 6 GROUP_2 7 16 30 15 + | 10 NESTED_FIELD_1 6 16 25 10 + | 10 FILLER 7 26 30 5""" .stripMargin.replace("\r\n", "\n")) } diff --git a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseCommentsSpec.scala b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseCommentsSpec.scala index 314ec773..4ecb2d49 100644 --- a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseCommentsSpec.scala +++ b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseCommentsSpec.scala @@ -27,9 +27,9 @@ class ParseCommentsSpec extends FunSuite { private val expectedLayout = """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH | - |GRP_01 1 11 11 - | 3 FIELD1 1 1 1 1 - | 3 FIELD2 2 2 11 10""" + | 1 GRP_01 3 1 11 11 + | 3 FIELD1 2 1 1 1 + | 3 FIELD2 3 2 11 10""" .stripMargin.replace("\r\n", "\n") test("Test copybook parser handles comment lines") { diff --git a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseDebugRedefinedSpec.scala b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseDebugRedefinedSpec.scala index 9c146937..b5e3722f 100644 --- a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseDebugRedefinedSpec.scala +++ b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseDebugRedefinedSpec.scala @@ -64,22 +64,21 @@ class ParseDebugRedefinedSpec extends FunSuite { val expectedLayout = """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH | - |TRANSDATA 1 7 7 - | 10 CURRENCY r 1 1 3 3 - | 10 CURRENCY_debug R 2 1 3 3 - | 10 FIELD1 r 3 4 7 4 - | 10 FIELD1_debug rR 4 4 7 4 - | 10 FIELD2 rR 5 4 7 4 - | 10 FIELD2_debug rR 6 4 7 4 - | 10 FIELD3 rR 7 4 7 4 - | 10 FIELD3_debug rR 8 4 7 4 - | 10 FIELD4 rR 9 4 7 4 - | 10 FIELD4_debug R 10 4 7 4""" + | 1 TRANSDATA 11 1 7 7 + | 10 CURRENCY r 2 1 3 3 + | 10 CURRENCY_debug R 3 1 3 3 + | 10 FIELD1 r 4 4 7 4 + | 10 FIELD1_debug rR 5 4 7 4 + | 10 FIELD2 rR 6 4 7 4 + | 10 FIELD2_debug rR 7 4 7 4 + | 10 FIELD3 rR 8 4 7 4 + | 10 FIELD3_debug rR 9 4 7 4 + | 10 FIELD4 rR 10 4 7 4 + | 10 FIELD4_debug R 11 4 7 4""" .stripMargin.replace("\r\n", "\n") val copybook = CopybookParser.parseTree(copybookWithRedefined, debugFieldsPolicy = HexValue) - val actualLayout = copybook.generateRecordLayoutPositions() assert(actualLayout == expectedLayout) diff --git a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseFieldNamesSpec.scala b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseFieldNamesSpec.scala index 917715f1..495c18f7 100644 --- a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseFieldNamesSpec.scala +++ b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseFieldNamesSpec.scala @@ -44,18 +44,18 @@ class ParseFieldNamesSpec extends FunSuite { val expectedLayout = """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH | - |GRP_01_02 1 11 11 - | 3 FIELD_1 1 1 1 1 - | 3 FIELD_2 2 2 11 10 - |GRP_01_02 12 22 11 - | 3 FIELD_1 3 12 12 1 - | 3 FIELD_2 4 13 22 10 - |GRP0102 23 33 11 - | 3 FIELD1 5 23 23 1 - | 3 FIELD2 6 24 33 10 - |SOMETHING_SOMETHING_DATE_NUM 34 44 11 - | 3 FIELD1 7 34 34 1 - | 3 FIELD2 8 35 44 10""" + | 1 GRP_01_02 3 1 11 11 + | 3 FIELD_1 2 1 1 1 + | 3 FIELD_2 3 2 11 10 + | 1 GRP_01_02 6 12 22 11 + | 3 FIELD_1 5 12 12 1 + | 3 FIELD_2 6 13 22 10 + | 1 GRP0102 9 23 33 11 + | 3 FIELD1 8 23 23 1 + | 3 FIELD2 9 24 33 10 + | 1 SOMETHING_SOMETHING_DATE_NUM 12 34 44 11 + | 3 FIELD1 11 34 34 1 + | 3 FIELD2 12 35 44 10""" .stripMargin.replace("\r\n", "\n") val copybook = CopybookParser.parseTree(copybookWithCommentLines) diff --git a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseFieldsNestingSpec.scala b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseFieldsNestingSpec.scala index 1748e104..0254fa32 100644 --- a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseFieldsNestingSpec.scala +++ b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseFieldsNestingSpec.scala @@ -40,13 +40,13 @@ class ParseFieldsNestingSpec extends FunSuite { val expectedLayout = """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH | - |ROOT_GROUP 1 20 20 - | 3 NESTED_PRIMITIVE_01 1 1 4 4 - | 3 NESTED_GRP_01 3 5 11 7 - | 5 NESTED_NESTED_02 3 5 11 7 - | 3 FILL 4 12 18 7 - | 2 FILLER_1 6 19 20 2 - | 3 NUMERIC_FIELD_01 6 19 20 2""" + | 1 ROOT_GROUP 7 1 20 20 + | 3 NESTED_PRIMITIVE_01 2 1 4 4 + | 3 NESTED_GRP_01 4 5 11 7 + | 5 NESTED_NESTED_02 4 5 11 7 + | 3 FILL 5 12 18 7 + | 2 FILLER_1 7 19 20 2 + | 3 NUMERIC_FIELD_01 7 19 20 2""" .stripMargin.replace("\r\n", "\n") val copybook = CopybookParser.parseTree(copybookWithCommentLines) diff --git a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test14AsciiMergedCopybooks.scala b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test14AsciiMergedCopybooks.scala index 16d4776d..0e087f52 100644 --- a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test14AsciiMergedCopybooks.scala +++ b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test14AsciiMergedCopybooks.scala @@ -18,6 +18,7 @@ package za.co.absa.cobrix.spark.cobol.source.regression import org.scalatest.WordSpec import org.slf4j.{Logger, LoggerFactory} +import za.co.absa.cobrix.cobol.parser.CopybookParser import za.co.absa.cobrix.spark.cobol.source.base.{SimpleComparisonBase, SparkTestBase} import za.co.absa.cobrix.spark.cobol.source.fixtures.BinaryFileFixture @@ -38,10 +39,27 @@ class Test14AsciiMergedCopybooks extends WordSpec with SparkTestBase with Binary 05 B PIC X. """ + private val copybookMerged = + """ 01 ROOT. + 05 ENTITY1. + 10 A PIC X. + 05 ENTITY2 REDEFINES ENTITY1. + 10 B PIC X. + """ + val textFileContents: String = "1\n2\n3\n4" - "Test ASCII CRLF text file with merged copybooks" should { - "correctly identify empty lines when read as a text file" in { + "Test ASCII CRLF text file " should { + "with merged copybooks" in { + val expectedLayout = + """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH + | + |ENTITY1 1 1 1 + | 5 A 1 1 1 1 + |ENTITY2 1 1 1 + | 5 B 2 1 1 1 + |""".stripMargin + withTempDirectory("merged_copybook") { tempDir => val copybook1Path = Paths.get(tempDir, "copybook1.cpy") val copybook2Path = Paths.get(tempDir, "copybook2.cpy") @@ -73,5 +91,37 @@ class Test14AsciiMergedCopybooks extends WordSpec with SparkTestBase with Binary } } } + + "with a single copybook" in { + val expectedLayout = + """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH + | + |ROOT 1 1 1 + | 5 ENTITY1 r 2 1 1 1 + | 10 A 2 1 1 1 + | 5 ENTITY2 R 4 1 1 1 + | 10 B 4 1 1 1 + |""".stripMargin + withTempTextFile("merged_crlf", ".dat", StandardCharsets.UTF_8, textFileContents) { tmpFileName => + val df = spark + .read + .format("cobol") + .option("copybook_contents", copybookMerged) + .option("pedantic", "true") + .option("is_text", "true") + .option("encoding", "ascii") + .option("schema_retention_policy", "collapse_root") + .load(tmpFileName) + + val expected = """[{"ENTITY1":{"A":"1"},"ENTITY2":{"B":"1"}},{"ENTITY1":{"A":"2"},"ENTITY2":{"B":"2"}},{"ENTITY1":{"A":"3"},"ENTITY2":{"B":"3"}},{"ENTITY1":{"A":"4"},"ENTITY2":{"B":"4"}}]""" + + val count = df.count() + val actual = df.toJSON.collect().mkString("[", ",", "]") + + assert(count == 4) + assertEqualsMultiline(actual, expected) + } + } + } } From eda0d189254149a15ab2f13bb5241c17c72615cd Mon Sep 17 00:00:00 2001 From: Ruslan Iushchenko Date: Mon, 26 Jul 2021 09:40:55 +0200 Subject: [PATCH 03/10] #405 Fix fix spark-cobol unit tests related to the change in layout generation --- data/test11_expected/test11_layout.txt | 26 +- data/test13_expected/test13a_layout.txt | 14 +- data/test13_expected/test13b_layout.txt | 26 +- data/test16_expected/test16_layout.txt | 28 +- data/test17_expected/test17a_layout.txt | 64 +- .../test18a_layout.txt | 64 +- data/test24_expected/test24_layout.txt | 782 +++++++++--------- data/test24_expected/test24b_layout.txt | 782 +++++++++--------- data/test4_expected/test4_schema_actual.json | 1 - data/test6_expected/test6_layout.txt | 392 ++++----- data/test7_expected/test7_layout.txt | 40 +- data/test7_expected/test7a_layout.txt | 40 +- data/test7_expected/test7b_layout.txt | 40 +- data/test7_expected/test7c_layout.txt | 40 +- .../cobol/source/CommentsTruncationSpec.scala | 6 +- 15 files changed, 1172 insertions(+), 1173 deletions(-) delete mode 100644 data/test4_expected/test4_schema_actual.json diff --git a/data/test11_expected/test11_layout.txt b/data/test11_expected/test11_layout.txt index 9243ec6a..2a5fd4b7 100644 --- a/data/test11_expected/test11_layout.txt +++ b/data/test11_expected/test11_layout.txt @@ -1,15 +1,15 @@ -------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH -COMPANY_DETAILS 1 64 64 - 5 SEGMENT_ID 1 1 5 5 - 5 COMPANY_ID 2 6 15 10 - 5 STATIC_DETAILS r 9 16 64 49 - 10 COMPANY_NAME 4 16 30 15 - 10 ADDRESS 5 31 55 25 - 10 TAXPAYER 9 56 64 9 - 15 TAXPAYER_TYPE 7 56 56 1 - 15 TAXPAYER_STR r 8 57 64 8 - 15 TAXPAYER_NUM R 9 57 64 8 - 5 CONTACTS R 12 16 64 49 - 10 PHONE_NUMBER 11 16 32 17 - 10 CONTACT_PERSON 12 33 60 28 \ No newline at end of file + 1 COMPANY_DETAILS 13 1 64 64 + 5 SEGMENT_ID 2 1 5 5 + 5 COMPANY_ID 3 6 15 10 + 5 STATIC_DETAILS r 10 16 64 49 + 10 COMPANY_NAME 5 16 30 15 + 10 ADDRESS 6 31 55 25 + 10 TAXPAYER 10 56 64 9 + 15 TAXPAYER_TYPE 8 56 56 1 + 15 TAXPAYER_STR r 9 57 64 8 + 15 TAXPAYER_NUM R 10 57 64 8 + 5 CONTACTS R 13 16 64 49 + 10 PHONE_NUMBER 12 16 32 17 + 10 CONTACT_PERSON 13 33 60 28 \ No newline at end of file diff --git a/data/test13_expected/test13a_layout.txt b/data/test13_expected/test13a_layout.txt index 5eb4586b..54ff9705 100644 --- a/data/test13_expected/test13a_layout.txt +++ b/data/test13_expected/test13a_layout.txt @@ -1,9 +1,9 @@ -------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH -TRANSDATA 1 45 45 - 5 CURRENCY 1 1 3 3 - 5 SIGNATURE 2 4 11 8 - 5 COMPANY_NAME 3 12 26 15 - 5 COMPANY_ID 4 27 36 10 - 5 WEALTH_QFY 5 37 37 1 - 5 AMOUNT 6 38 45 8 \ No newline at end of file + 1 TRANSDATA 7 1 45 45 + 5 CURRENCY 2 1 3 3 + 5 SIGNATURE 3 4 11 8 + 5 COMPANY_NAME 4 12 26 15 + 5 COMPANY_ID 5 27 36 10 + 5 WEALTH_QFY 6 37 37 1 + 5 AMOUNT 7 38 45 8 \ No newline at end of file diff --git a/data/test13_expected/test13b_layout.txt b/data/test13_expected/test13b_layout.txt index 9243ec6a..2a5fd4b7 100644 --- a/data/test13_expected/test13b_layout.txt +++ b/data/test13_expected/test13b_layout.txt @@ -1,15 +1,15 @@ -------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH -COMPANY_DETAILS 1 64 64 - 5 SEGMENT_ID 1 1 5 5 - 5 COMPANY_ID 2 6 15 10 - 5 STATIC_DETAILS r 9 16 64 49 - 10 COMPANY_NAME 4 16 30 15 - 10 ADDRESS 5 31 55 25 - 10 TAXPAYER 9 56 64 9 - 15 TAXPAYER_TYPE 7 56 56 1 - 15 TAXPAYER_STR r 8 57 64 8 - 15 TAXPAYER_NUM R 9 57 64 8 - 5 CONTACTS R 12 16 64 49 - 10 PHONE_NUMBER 11 16 32 17 - 10 CONTACT_PERSON 12 33 60 28 \ No newline at end of file + 1 COMPANY_DETAILS 13 1 64 64 + 5 SEGMENT_ID 2 1 5 5 + 5 COMPANY_ID 3 6 15 10 + 5 STATIC_DETAILS r 10 16 64 49 + 10 COMPANY_NAME 5 16 30 15 + 10 ADDRESS 6 31 55 25 + 10 TAXPAYER 10 56 64 9 + 15 TAXPAYER_TYPE 8 56 56 1 + 15 TAXPAYER_STR r 9 57 64 8 + 15 TAXPAYER_NUM R 10 57 64 8 + 5 CONTACTS R 13 16 64 49 + 10 PHONE_NUMBER 12 16 32 17 + 10 CONTACT_PERSON 13 33 60 28 \ No newline at end of file diff --git a/data/test16_expected/test16_layout.txt b/data/test16_expected/test16_layout.txt index cacb0b19..e1fb0756 100644 --- a/data/test16_expected/test16_layout.txt +++ b/data/test16_expected/test16_layout.txt @@ -1,16 +1,16 @@ -------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH -ENTITY 1 64 64 - 5 SEGMENT_ID 1 1 1 1 - 5 COMPANY r 5 2 64 63 - 10 COMPANY_NAME 3 2 21 20 - 10 ADDRESS 4 22 51 30 - 10 TAXPAYER 5 52 59 8 - 5 PERSON rR 10 2 64 63 - 10 FIRST_NAME 7 2 17 16 - 10 LAST_NAME 8 18 33 16 - 10 ADDRESS 9 34 53 20 - 10 PHONE_NUM 10 54 64 11 - 5 PO_BOX R 13 2 64 63 - 10 PO_NUMBER 12 2 13 12 - 10 BRANCH_ADDRESS 13 14 33 20 \ No newline at end of file + 1 ENTITY 14 1 64 64 + 5 SEGMENT_ID 2 1 1 1 + 5 COMPANY r 6 2 64 63 + 10 COMPANY_NAME 4 2 21 20 + 10 ADDRESS 5 22 51 30 + 10 TAXPAYER 6 52 59 8 + 5 PERSON rR 11 2 64 63 + 10 FIRST_NAME 8 2 17 16 + 10 LAST_NAME 9 18 33 16 + 10 ADDRESS 10 34 53 20 + 10 PHONE_NUM 11 54 64 11 + 5 PO_BOX R 14 2 64 63 + 10 PO_NUMBER 13 2 13 12 + 10 BRANCH_ADDRESS 14 14 33 20 \ No newline at end of file diff --git a/data/test17_expected/test17a_layout.txt b/data/test17_expected/test17a_layout.txt index e75abf93..8aa60624 100644 --- a/data/test17_expected/test17a_layout.txt +++ b/data/test17_expected/test17a_layout.txt @@ -1,34 +1,34 @@ -------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH -ENTITY 1 108 108 - 5 SEGMENT_ID 1 1 1 1 - 5 COMPANY r 5 2 108 107 - 10 COMPANY_NAME 3 2 21 20 - 10 ADDRESS 4 22 51 30 - 10 TAXPAYER 5 52 55 4 - 5 DEPT rR 8 2 108 107 - 10 DEPT_NAME 7 2 23 22 - 10 EXTENSION 8 24 29 6 - 5 EMPLOYEE rR 14 2 108 107 - 10 FIRST_NAME 10 2 17 16 - 10 LAST_NAME 11 18 33 16 - 10 ROLE 12 34 51 18 - 10 HOME_ADDRESS 13 52 91 40 - 10 PHONE_NUM 14 92 108 17 - 5 OFFICE rR 18 2 108 107 - 10 ADDRESS 16 2 31 30 - 10 FLOOR 17 32 34 3 - 10 ROOM_NUMBER 18 35 38 4 - 5 CUSTOMER rR 22 2 108 107 - 10 CUSTOMER_NAME 20 2 21 20 - 10 POSTAL_ADDRESS 21 22 51 30 - 10 ZIP 22 52 61 10 - 5 CONTACT rR 26 2 108 107 - 10 FIRST_NAME 24 2 17 16 - 10 LAST_NAME 25 18 33 16 - 10 PHONE_NUM 26 34 50 17 - 5 CONTRACT R 31 2 108 107 - 10 CONTRACT_NUMBER 28 2 16 15 - 10 STATE 29 17 24 8 - 10 DUE_DATE 30 25 34 10 - 10 AMOUNT 31 35 41 7 \ No newline at end of file + 1 ENTITY 32 1 108 108 + 5 SEGMENT_ID 2 1 1 1 + 5 COMPANY r 6 2 108 107 + 10 COMPANY_NAME 4 2 21 20 + 10 ADDRESS 5 22 51 30 + 10 TAXPAYER 6 52 55 4 + 5 DEPT rR 9 2 108 107 + 10 DEPT_NAME 8 2 23 22 + 10 EXTENSION 9 24 29 6 + 5 EMPLOYEE rR 15 2 108 107 + 10 FIRST_NAME 11 2 17 16 + 10 LAST_NAME 12 18 33 16 + 10 ROLE 13 34 51 18 + 10 HOME_ADDRESS 14 52 91 40 + 10 PHONE_NUM 15 92 108 17 + 5 OFFICE rR 19 2 108 107 + 10 ADDRESS 17 2 31 30 + 10 FLOOR 18 32 34 3 + 10 ROOM_NUMBER 19 35 38 4 + 5 CUSTOMER rR 23 2 108 107 + 10 CUSTOMER_NAME 21 2 21 20 + 10 POSTAL_ADDRESS 22 22 51 30 + 10 ZIP 23 52 61 10 + 5 CONTACT rR 27 2 108 107 + 10 FIRST_NAME 25 2 17 16 + 10 LAST_NAME 26 18 33 16 + 10 PHONE_NUM 27 34 50 17 + 5 CONTRACT R 32 2 108 107 + 10 CONTRACT_NUMBER 29 2 16 15 + 10 STATE 30 17 24 8 + 10 DUE_DATE 31 25 34 10 + 10 AMOUNT 32 35 41 7 \ No newline at end of file diff --git a/data/test18 special_char_expected/test18a_layout.txt b/data/test18 special_char_expected/test18a_layout.txt index e75abf93..8aa60624 100644 --- a/data/test18 special_char_expected/test18a_layout.txt +++ b/data/test18 special_char_expected/test18a_layout.txt @@ -1,34 +1,34 @@ -------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH -ENTITY 1 108 108 - 5 SEGMENT_ID 1 1 1 1 - 5 COMPANY r 5 2 108 107 - 10 COMPANY_NAME 3 2 21 20 - 10 ADDRESS 4 22 51 30 - 10 TAXPAYER 5 52 55 4 - 5 DEPT rR 8 2 108 107 - 10 DEPT_NAME 7 2 23 22 - 10 EXTENSION 8 24 29 6 - 5 EMPLOYEE rR 14 2 108 107 - 10 FIRST_NAME 10 2 17 16 - 10 LAST_NAME 11 18 33 16 - 10 ROLE 12 34 51 18 - 10 HOME_ADDRESS 13 52 91 40 - 10 PHONE_NUM 14 92 108 17 - 5 OFFICE rR 18 2 108 107 - 10 ADDRESS 16 2 31 30 - 10 FLOOR 17 32 34 3 - 10 ROOM_NUMBER 18 35 38 4 - 5 CUSTOMER rR 22 2 108 107 - 10 CUSTOMER_NAME 20 2 21 20 - 10 POSTAL_ADDRESS 21 22 51 30 - 10 ZIP 22 52 61 10 - 5 CONTACT rR 26 2 108 107 - 10 FIRST_NAME 24 2 17 16 - 10 LAST_NAME 25 18 33 16 - 10 PHONE_NUM 26 34 50 17 - 5 CONTRACT R 31 2 108 107 - 10 CONTRACT_NUMBER 28 2 16 15 - 10 STATE 29 17 24 8 - 10 DUE_DATE 30 25 34 10 - 10 AMOUNT 31 35 41 7 \ No newline at end of file + 1 ENTITY 32 1 108 108 + 5 SEGMENT_ID 2 1 1 1 + 5 COMPANY r 6 2 108 107 + 10 COMPANY_NAME 4 2 21 20 + 10 ADDRESS 5 22 51 30 + 10 TAXPAYER 6 52 55 4 + 5 DEPT rR 9 2 108 107 + 10 DEPT_NAME 8 2 23 22 + 10 EXTENSION 9 24 29 6 + 5 EMPLOYEE rR 15 2 108 107 + 10 FIRST_NAME 11 2 17 16 + 10 LAST_NAME 12 18 33 16 + 10 ROLE 13 34 51 18 + 10 HOME_ADDRESS 14 52 91 40 + 10 PHONE_NUM 15 92 108 17 + 5 OFFICE rR 19 2 108 107 + 10 ADDRESS 17 2 31 30 + 10 FLOOR 18 32 34 3 + 10 ROOM_NUMBER 19 35 38 4 + 5 CUSTOMER rR 23 2 108 107 + 10 CUSTOMER_NAME 21 2 21 20 + 10 POSTAL_ADDRESS 22 22 51 30 + 10 ZIP 23 52 61 10 + 5 CONTACT rR 27 2 108 107 + 10 FIRST_NAME 25 2 17 16 + 10 LAST_NAME 26 18 33 16 + 10 PHONE_NUM 27 34 50 17 + 5 CONTRACT R 32 2 108 107 + 10 CONTRACT_NUMBER 29 2 16 15 + 10 STATE 30 17 24 8 + 10 DUE_DATE 31 25 34 10 + 10 AMOUNT 32 35 41 7 \ No newline at end of file diff --git a/data/test24_expected/test24_layout.txt b/data/test24_expected/test24_layout.txt index 5f0f0eb2..84c7536f 100644 --- a/data/test24_expected/test24_layout.txt +++ b/data/test24_expected/test24_layout.txt @@ -1,393 +1,393 @@ -------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH -RECORD 1 1493 1493 - 10 ID r 1 1 4 4 - 10 ID_debug R 2 1 4 4 - 10 STRING_VAL r 3 5 14 10 - 10 STRING_VAL_debug R 4 5 14 10 - 10 NUM_STR_INT01 r 5 15 15 1 - 10 NUM_STR_INT01_debug R 6 15 15 1 - 10 NUM_STR_INT02 r 7 16 17 2 - 10 NUM_STR_INT02_debug R 8 16 17 2 - 10 NUM_STR_INT03 r 9 18 20 3 - 10 NUM_STR_INT03_debug R 10 18 20 3 - 10 NUM_STR_INT04 r 11 21 24 4 - 10 NUM_STR_INT04_debug R 12 21 24 4 - 10 NUM_STR_INT05 r 13 25 29 5 - 10 NUM_STR_INT05_debug R 14 25 29 5 - 10 NUM_STR_INT06 r 15 30 37 8 - 10 NUM_STR_INT06_debug R 16 30 37 8 - 10 NUM_STR_INT07 r 17 38 46 9 - 10 NUM_STR_INT07_debug R 18 38 46 9 - 10 NUM_STR_INT08 r 19 47 56 10 - 10 NUM_STR_INT08_debug R 20 47 56 10 - 10 NUM_STR_INT09 r 21 57 67 11 - 10 NUM_STR_INT09_debug R 22 57 67 11 - 10 NUM_STR_INT10 r 23 68 84 17 - 10 NUM_STR_INT10_debug R 24 68 84 17 - 10 NUM_STR_INT11 r 25 85 102 18 - 10 NUM_STR_INT11_debug R 26 85 102 18 - 10 NUM_STR_INT12 r 27 103 121 19 - 10 NUM_STR_INT12_debug R 28 103 121 19 - 10 NUM_STR_INT13 r 29 122 141 20 - 10 NUM_STR_INT13_debug R 30 122 141 20 - 10 NUM_STR_INT14 r 31 142 178 37 - 10 NUM_STR_INT14_debug R 32 142 178 37 - 10 NUM_STR_SINT02 r 33 179 180 2 - 10 NUM_STR_SINT02_debug R 34 179 180 2 - 10 NUM_STR_SINT03 r 35 181 183 3 - 10 NUM_STR_SINT03_debug R 36 181 183 3 - 10 NUM_STR_SINT04 r 37 184 187 4 - 10 NUM_STR_SINT04_debug R 38 184 187 4 - 10 NUM_STR_SINT05 r 39 188 192 5 - 10 NUM_STR_SINT05_debug R 40 188 192 5 - 10 NUM_STR_SINT06 r 41 193 200 8 - 10 NUM_STR_SINT06_debug R 42 193 200 8 - 10 NUM_STR_SINT07 r 43 201 209 9 - 10 NUM_STR_SINT07_debug R 44 201 209 9 - 10 NUM_STR_SINT08 r 45 210 219 10 - 10 NUM_STR_SINT08_debug R 46 210 219 10 - 10 NUM_STR_SINT09 r 47 220 230 11 - 10 NUM_STR_SINT09_debug R 48 220 230 11 - 10 NUM_STR_SINT10 r 49 231 247 17 - 10 NUM_STR_SINT10_debug R 50 231 247 17 - 10 NUM_STR_SINT11 r 51 248 265 18 - 10 NUM_STR_SINT11_debug R 52 248 265 18 - 10 NUM_STR_SINT12 r 53 266 284 19 - 10 NUM_STR_SINT12_debug R 54 266 284 19 - 10 NUM_STR_SINT13 r 55 285 304 20 - 10 NUM_STR_SINT13_debug R 56 285 304 20 - 10 NUM_STR_SINT14 r 57 305 341 37 - 10 NUM_STR_SINT14_debug R 58 305 341 37 - 10 NUM_STR_DEC01 r 59 342 344 3 - 10 NUM_STR_DEC01_debug R 60 342 344 3 - 10 NUM_STR_DEC02 r 61 345 348 4 - 10 NUM_STR_DEC02_debug R 62 345 348 4 - 10 NUM_STR_DEC03 r 63 349 353 5 - 10 NUM_STR_DEC03_debug R 64 349 353 5 - 10 NUM_STR_DEC04 r 65 354 361 8 - 10 NUM_STR_DEC04_debug R 66 354 361 8 - 10 NUM_STR_DEC05 r 67 362 370 9 - 10 NUM_STR_DEC05_debug R 68 362 370 9 - 10 NUM_STR_DEC06 r 69 371 380 10 - 10 NUM_STR_DEC06_debug R 70 371 380 10 - 10 NUM_STR_DEC07 r 71 381 397 17 - 10 NUM_STR_DEC07_debug R 72 381 397 17 - 10 NUM_STR_DEC08 r 73 398 415 18 - 10 NUM_STR_DEC08_debug R 74 398 415 18 - 10 NUM_STR_DEC09 r 75 416 434 19 - 10 NUM_STR_DEC09_debug R 76 416 434 19 - 10 NUM_STR_DEC10 r 77 435 462 28 - 10 NUM_STR_DEC10_debug R 78 435 462 28 - 10 NUM_STR_SDEC01 r 79 463 465 3 - 10 NUM_STR_SDEC01_debug R 80 463 465 3 - 10 NUM_STR_SDEC02 r 81 466 469 4 - 10 NUM_STR_SDEC02_debug R 82 466 469 4 - 10 NUM_STR_SDEC03 r 83 470 474 5 - 10 NUM_STR_SDEC03_debug R 84 470 474 5 - 10 NUM_STR_SDEC04 r 85 475 482 8 - 10 NUM_STR_SDEC04_debug R 86 475 482 8 - 10 NUM_STR_SDEC05 r 87 483 491 9 - 10 NUM_STR_SDEC05_debug R 88 483 491 9 - 10 NUM_STR_SDEC06 r 89 492 501 10 - 10 NUM_STR_SDEC06_debug R 90 492 501 10 - 10 NUM_STR_SDEC07 r 91 502 518 17 - 10 NUM_STR_SDEC07_debug R 92 502 518 17 - 10 NUM_STR_SDEC08 r 93 519 536 18 - 10 NUM_STR_SDEC08_debug R 94 519 536 18 - 10 NUM_STR_SDEC09 r 95 537 555 19 - 10 NUM_STR_SDEC09_debug R 96 537 555 19 - 10 NUM_STR_SDEC10 r 97 556 583 28 - 10 NUM_STR_SDEC10_debug R 98 556 583 28 - 10 NUM_STR_EDEC03 r 99 584 589 6 - 10 NUM_STR_EDEC03_debug R 100 584 589 6 - 10 NUM_STR_EDEC04 r 101 590 598 9 - 10 NUM_STR_EDEC04_debug R 102 590 598 9 - 10 NUM_STR_EDEC05 r 103 599 608 10 - 10 NUM_STR_EDEC05_debug R 104 599 608 10 - 10 NUM_STR_EDEC06 r 105 609 619 11 - 10 NUM_STR_EDEC06_debug R 106 609 619 11 - 10 NUM_BIN_INT01 r 107 620 621 2 - 10 NUM_BIN_INT01_debug R 108 620 621 2 - 10 NUM_BIN_INT02 r 109 622 623 2 - 10 NUM_BIN_INT02_debug R 110 622 623 2 - 10 NUM_BIN_INT03 r 111 624 625 2 - 10 NUM_BIN_INT03_debug R 112 624 625 2 - 10 NUM_BIN_INT04 r 113 626 627 2 - 10 NUM_BIN_INT04_debug R 114 626 627 2 - 10 NUM_BIN_INT05 r 115 628 631 4 - 10 NUM_BIN_INT05_debug R 116 628 631 4 - 10 NUM_BIN_INT06 r 117 632 635 4 - 10 NUM_BIN_INT06_debug R 118 632 635 4 - 10 NUM_BIN_INT07 r 119 636 639 4 - 10 NUM_BIN_INT07_debug R 120 636 639 4 - 10 NUM_BIN_INT08 r 121 640 647 8 - 10 NUM_BIN_INT08_debug R 122 640 647 8 - 10 NUM_BIN_INT09 r 123 648 655 8 - 10 NUM_BIN_INT09_debug R 124 648 655 8 - 10 NUM_BIN_INT10 r 125 656 663 8 - 10 NUM_BIN_INT10_debug R 126 656 663 8 - 10 NUM_BIN_INT11 r 127 664 671 8 - 10 NUM_BIN_INT11_debug R 128 664 671 8 - 10 NUM_BIN_INT12 r 129 672 680 9 - 10 NUM_BIN_INT12_debug R 130 672 680 9 - 10 NUM_BIN_INT13 r 131 681 689 9 - 10 NUM_BIN_INT13_debug R 132 681 689 9 - 10 NUM_BIN_INT14 r 133 690 705 16 - 10 NUM_BIN_INT14_debug R 134 690 705 16 - 10 NUM_SBIN_SINT01 r 135 706 707 2 - 10 NUM_SBIN_SINT01_debug R 136 706 707 2 - 10 NUM_SBIN_SINT02 r 137 708 709 2 - 10 NUM_SBIN_SINT02_debug R 138 708 709 2 - 10 NUM_SBIN_SINT03 r 139 710 711 2 - 10 NUM_SBIN_SINT03_debug R 140 710 711 2 - 10 NUM_SBIN_SINT04 r 141 712 713 2 - 10 NUM_SBIN_SINT04_debug R 142 712 713 2 - 10 NUM_SBIN_SINT05 r 143 714 717 4 - 10 NUM_SBIN_SINT05_debug R 144 714 717 4 - 10 NUM_SBIN_SINT06 r 145 718 721 4 - 10 NUM_SBIN_SINT06_debug R 146 718 721 4 - 10 NUM_SBIN_SINT07 r 147 722 725 4 - 10 NUM_SBIN_SINT07_debug R 148 722 725 4 - 10 NUM_SBIN_SINT08 r 149 726 733 8 - 10 NUM_SBIN_SINT08_debug R 150 726 733 8 - 10 NUM_SBIN_SINT09 r 151 734 741 8 - 10 NUM_SBIN_SINT09_debug R 152 734 741 8 - 10 NUM_SBIN_SINT10 r 153 742 749 8 - 10 NUM_SBIN_SINT10_debug R 154 742 749 8 - 10 NUM_SBIN_SINT11 r 155 750 757 8 - 10 NUM_SBIN_SINT11_debug R 156 750 757 8 - 10 NUM_SBIN_SINT12 r 157 758 766 9 - 10 NUM_SBIN_SINT12_debug R 158 758 766 9 - 10 NUM_SBIN_SINT13 r 159 767 775 9 - 10 NUM_SBIN_SINT13_debug R 160 767 775 9 - 10 NUM_SBIN_SINT14 r 161 776 791 16 - 10 NUM_SBIN_SINT14_debug R 162 776 791 16 - 10 NUM_BIN_DEC01 r 163 792 793 2 - 10 NUM_BIN_DEC01_debug R 164 792 793 2 - 10 NUM_BIN_DEC02 r 165 794 795 2 - 10 NUM_BIN_DEC02_debug R 166 794 795 2 - 10 NUM_BIN_DEC03 r 167 796 799 4 - 10 NUM_BIN_DEC03_debug R 168 796 799 4 - 10 NUM_BIN_DEC04 r 169 800 803 4 - 10 NUM_BIN_DEC04_debug R 170 800 803 4 - 10 NUM_BIN_DEC05 r 171 804 807 4 - 10 NUM_BIN_DEC05_debug R 172 804 807 4 - 10 NUM_BIN_DEC06 r 173 808 815 8 - 10 NUM_BIN_DEC06_debug R 174 808 815 8 - 10 NUM_BIN_DEC07 r 175 816 823 8 - 10 NUM_BIN_DEC07_debug R 176 816 823 8 - 10 NUM_BIN_DEC08 r 177 824 831 8 - 10 NUM_BIN_DEC08_debug R 178 824 831 8 - 10 NUM_BIN_DEC09 r 179 832 840 9 - 10 NUM_BIN_DEC09_debug R 180 832 840 9 - 10 NUM_BIN_DEC10 r 181 841 852 12 - 10 NUM_BIN_DEC10_debug R 182 841 852 12 - 10 NUM_SBIN_DEC01 r 183 853 854 2 - 10 NUM_SBIN_DEC01_debug R 184 853 854 2 - 10 NUM_SBIN_DEC02 r 185 855 856 2 - 10 NUM_SBIN_DEC02_debug R 186 855 856 2 - 10 NUM_SBIN_DEC03 r 187 857 860 4 - 10 NUM_SBIN_DEC03_debug R 188 857 860 4 - 10 NUM_SBIN_DEC04 r 189 861 864 4 - 10 NUM_SBIN_DEC04_debug R 190 861 864 4 - 10 NUM_SBIN_DEC05 r 191 865 868 4 - 10 NUM_SBIN_DEC05_debug R 192 865 868 4 - 10 NUM_SBIN_DEC06 r 193 869 876 8 - 10 NUM_SBIN_DEC06_debug R 194 869 876 8 - 10 NUM_SBIN_DEC07 r 195 877 884 8 - 10 NUM_SBIN_DEC07_debug R 196 877 884 8 - 10 NUM_SBIN_DEC08 r 197 885 892 8 - 10 NUM_SBIN_DEC08_debug R 198 885 892 8 - 10 NUM_SBIN_DEC09 r 199 893 901 9 - 10 NUM_SBIN_DEC09_debug R 200 893 901 9 - 10 NUM_SBIN_DEC10 r 201 902 913 12 - 10 NUM_SBIN_DEC10_debug R 202 902 913 12 - 10 NUM_BCD_INT01 r 203 914 914 1 - 10 NUM_BCD_INT01_debug R 204 914 914 1 - 10 NUM_BCD_INT02 r 205 915 916 2 - 10 NUM_BCD_INT02_debug R 206 915 916 2 - 10 NUM_BCD_INT03 r 207 917 918 2 - 10 NUM_BCD_INT03_debug R 208 917 918 2 - 10 NUM_BCD_INT04 r 209 919 921 3 - 10 NUM_BCD_INT04_debug R 210 919 921 3 - 10 NUM_BCD_INT05 r 211 922 924 3 - 10 NUM_BCD_INT05_debug R 212 922 924 3 - 10 NUM_BCD_INT06 r 213 925 929 5 - 10 NUM_BCD_INT06_debug R 214 925 929 5 - 10 NUM_BCD_INT07 r 215 930 934 5 - 10 NUM_BCD_INT07_debug R 216 930 934 5 - 10 NUM_BCD_INT08 r 217 935 940 6 - 10 NUM_BCD_INT08_debug R 218 935 940 6 - 10 NUM_BCD_INT09 r 219 941 946 6 - 10 NUM_BCD_INT09_debug R 220 941 946 6 - 10 NUM_BCD_INT10 r 221 947 955 9 - 10 NUM_BCD_INT10_debug R 222 947 955 9 - 10 NUM_BCD_INT11 r 223 956 965 10 - 10 NUM_BCD_INT11_debug R 224 956 965 10 - 10 NUM_BCD_INT12 r 225 966 975 10 - 10 NUM_BCD_INT12_debug R 226 966 975 10 - 10 NUM_BCD_INT13 r 227 976 986 11 - 10 NUM_BCD_INT13_debug R 228 976 986 11 - 10 NUM_BCD_INT14 r 229 987 1005 19 - 10 NUM_BCD_INT14_debug R 230 987 1005 19 - 10 NUM_BCD_SINT01 r 231 1006 1006 1 - 10 NUM_BCD_SINT01_debug R 232 1006 1006 1 - 10 NUM_BCD_SINT02 r 233 1007 1008 2 - 10 NUM_BCD_SINT02_debug R 234 1007 1008 2 - 10 NUM_BCD_SINT03 r 235 1009 1010 2 - 10 NUM_BCD_SINT03_debug R 236 1009 1010 2 - 10 NUM_BCD_SINT04 r 237 1011 1013 3 - 10 NUM_BCD_SINT04_debug R 238 1011 1013 3 - 10 NUM_BCD_SINT05 r 239 1014 1016 3 - 10 NUM_BCD_SINT05_debug R 240 1014 1016 3 - 10 NUM_BCD_SINT06 r 241 1017 1021 5 - 10 NUM_BCD_SINT06_debug R 242 1017 1021 5 - 10 NUM_BCD_SINT07 r 243 1022 1026 5 - 10 NUM_BCD_SINT07_debug R 244 1022 1026 5 - 10 NUM_BCD_SINT08 r 245 1027 1032 6 - 10 NUM_BCD_SINT08_debug R 246 1027 1032 6 - 10 NUM_BCD_SINT09 r 247 1033 1038 6 - 10 NUM_BCD_SINT09_debug R 248 1033 1038 6 - 10 NUM_BCD_SINT10 r 249 1039 1047 9 - 10 NUM_BCD_SINT10_debug R 250 1039 1047 9 - 10 NUM_BCD_SINT11 r 251 1048 1057 10 - 10 NUM_BCD_SINT11_debug R 252 1048 1057 10 - 10 NUM_BCD_SINT12 r 253 1058 1067 10 - 10 NUM_BCD_SINT12_debug R 254 1058 1067 10 - 10 NUM_BCD_SINT13 r 255 1068 1078 11 - 10 NUM_BCD_SINT13_debug R 256 1068 1078 11 - 10 NUM_BCD_SINT14 r 257 1079 1097 19 - 10 NUM_BCD_SINT14_debug R 258 1079 1097 19 - 10 NUM_BCD_DEC01 r 259 1098 1099 2 - 10 NUM_BCD_DEC01_debug R 260 1098 1099 2 - 10 NUM_BCD_DEC02 r 261 1100 1102 3 - 10 NUM_BCD_DEC02_debug R 262 1100 1102 3 - 10 NUM_BCD_DEC03 r 263 1103 1105 3 - 10 NUM_BCD_DEC03_debug R 264 1103 1105 3 - 10 NUM_BCD_DEC04 r 265 1106 1110 5 - 10 NUM_BCD_DEC04_debug R 266 1106 1110 5 - 10 NUM_BCD_DEC05 r 267 1111 1115 5 - 10 NUM_BCD_DEC05_debug R 268 1111 1115 5 - 10 NUM_BCD_DEC06 r 269 1116 1121 6 - 10 NUM_BCD_DEC06_debug R 270 1116 1121 6 - 10 NUM_BCD_DEC07 r 271 1122 1130 9 - 10 NUM_BCD_DEC07_debug R 272 1122 1130 9 - 10 NUM_BCD_DEC08 r 273 1131 1140 10 - 10 NUM_BCD_DEC08_debug R 274 1131 1140 10 - 10 NUM_BCD_DEC09 r 275 1141 1150 10 - 10 NUM_BCD_DEC09_debug R 276 1141 1150 10 - 10 NUM_BCD_DEC10 r 277 1151 1165 15 - 10 NUM_BCD_DEC10_debug R 278 1151 1165 15 - 10 NUM_BCD_SDEC01 r 279 1166 1167 2 - 10 NUM_BCD_SDEC01_debug R 280 1166 1167 2 - 10 NUM_BCD_SDEC02 r 281 1168 1170 3 - 10 NUM_BCD_SDEC02_debug R 282 1168 1170 3 - 10 NUM_BCD_SDEC03 r 283 1171 1173 3 - 10 NUM_BCD_SDEC03_debug R 284 1171 1173 3 - 10 NUM_BCD_SDEC04 r 285 1174 1178 5 - 10 NUM_BCD_SDEC04_debug R 286 1174 1178 5 - 10 NUM_BCD_SDEC05 r 287 1179 1183 5 - 10 NUM_BCD_SDEC05_debug R 288 1179 1183 5 - 10 NUM_BCD_SDEC06 r 289 1184 1189 6 - 10 NUM_BCD_SDEC06_debug R 290 1184 1189 6 - 10 NUM_BCD_SDEC07 r 291 1190 1198 9 - 10 NUM_BCD_SDEC07_debug R 292 1190 1198 9 - 10 NUM_BCD_SDEC08 r 293 1199 1208 10 - 10 NUM_BCD_SDEC08_debug R 294 1199 1208 10 - 10 NUM_BCD_SDEC09 r 295 1209 1218 10 - 10 NUM_BCD_SDEC09_debug R 296 1209 1218 10 - 10 NUM_BCD_SDEC10 r 297 1219 1233 15 - 10 NUM_BCD_SDEC10_debug R 298 1219 1233 15 - 10 NUM_SL_STR_INT01 r 299 1234 1243 10 - 10 NUM_SL_STR_INT01_debug R 300 1234 1243 10 - 10 NUM_SL_STR_DEC01 r 301 1244 1248 5 - 10 NUM_SL_STR_DEC01_debug R 302 1244 1248 5 - 10 NUM_ST_STR_INT01 r 303 1249 1258 10 - 10 NUM_ST_STR_INT01_debug R 304 1249 1258 10 - 10 NUM_ST_STR_DEC01 r 305 1259 1263 5 - 10 NUM_ST_STR_DEC01_debug R 306 1259 1263 5 - 10 NUM_SLI_STR_DEC01 r 307 1264 1270 7 - 10 NUM_SLI_STR_DEC01_debug R 308 1264 1270 7 - 10 NUM_STI_STR_DEC01 r 309 1271 1277 7 - 10 NUM_STI_STR_DEC01_debug R 310 1271 1277 7 - 10 NUM_SLI_DEBUG r 311 1278 1284 7 - 10 NUM_SLI_DEBUG_debug R 312 1278 1284 7 - 10 NUM_STI_DEBUG r 313 1285 1291 7 - 10 NUM_STI_DEBUG_debug R 314 1285 1291 7 - 10 FLOAT_01 r 315 1292 1295 4 - 10 FLOAT_01_debug R 316 1292 1295 4 - 10 DOUBLE_01 r 317 1296 1303 8 - 10 DOUBLE_01_debug R 318 1296 1303 8 - 10 COMMON_8_BIN r 319 1304 1307 4 - 10 COMMON_8_BIN_debug R 320 1304 1307 4 - 10 COMMON_S3_BIN r 321 1308 1309 2 - 10 COMMON_S3_BIN_debug R 322 1308 1309 2 - 10 COMMON_S94COMP r 323 1310 1311 2 - 10 COMMON_S94COMP_debug R 324 1310 1311 2 - 10 COMMON_S8_BIN r 325 1312 1315 4 - 10 COMMON_S8_BIN_debug R 326 1312 1315 4 - 10 COMMON_DDC97_BIN r 327 1316 1319 4 - 10 COMMON_DDC97_BIN_debug R 328 1316 1319 4 - 10 COMMON_97COMP3 r 329 1320 1323 4 - 10 COMMON_97COMP3_debug R 330 1320 1323 4 - 10 COMMON_915COMP3 r 331 1324 1331 8 - 10 COMMON_915COMP3_debug R 332 1324 1331 8 - 10 COMMON_S95COMP3 r 333 1332 1334 3 - 10 COMMON_S95COMP3_debug R 334 1332 1334 3 - 10 COMMON_S999DCCOMP3 r 335 1335 1340 6 - 10 COMMON_S999DCCOMP3_debug R 336 1335 1340 6 - 10 COMMON_S913COMP3 r 337 1341 1347 7 - 10 COMMON_S913COMP3_debug R 338 1341 1347 7 - 10 COMMON_S913DCCOMP3 r 339 1348 1355 8 - 10 COMMON_S913DCCOMP3_debug R 340 1348 1355 8 - 10 COMMON_S911DCC2 r 341 1356 1362 7 - 10 COMMON_S911DCC2_debug R 342 1356 1362 7 - 10 COMMON_S910DCC3 r 343 1363 1369 7 - 10 COMMON_S910DCC3_debug R 344 1363 1369 7 - 10 COMMON_S03DDC r 345 1370 1372 3 - 10 COMMON_S03DDC_debug R 346 1370 1372 3 - 10 COMMON_U03DDC r 347 1373 1375 3 - 10 COMMON_U03DDC_debug R 348 1373 1375 3 - 10 COMMON_UPC5DDC r 349 1376 1378 3 - 10 COMMON_UPC5DDC_debug R 350 1376 1378 3 - 10 COMMON_SPC5DDC r 351 1379 1381 3 - 10 COMMON_SPC5DDC_debug R 352 1379 1381 3 - 10 COMMON_UPI5DDC r 353 1382 1384 3 - 10 COMMON_UPI5DDC_debug R 354 1382 1384 3 - 10 COMMON_SPI5DDC r 355 1385 1387 3 - 10 COMMON_SPI5DDC_debug R 356 1385 1387 3 - 10 COMMON_UPC5DISP r 357 1388 1392 5 - 10 COMMON_UPC5DISP_debug R 358 1388 1392 5 - 10 COMMON_UPI5DISP r 359 1393 1397 5 - 10 COMMON_UPI5DISP_debug R 360 1393 1397 5 - 10 COMMON_UPC1BIN r 361 1398 1399 2 - 10 COMMON_UPC1BIN_debug R 362 1398 1399 2 - 10 COMMON_UPI1BIN r 363 1400 1401 2 - 10 COMMON_UPI1BIN_debug R 364 1400 1401 2 - 10 COMMON_UPC3BIN r 365 1402 1403 2 - 10 COMMON_UPC3BIN_debug R 366 1402 1403 2 - 10 COMMON_UPI3BIN r 367 1404 1405 2 - 10 COMMON_UPI3BIN_debug R 368 1404 1405 2 - 10 COMMON_UPC5BIN r 369 1406 1409 4 - 10 COMMON_UPC5BIN_debug R 370 1406 1409 4 - 10 COMMON_UPI5BIN r 371 1410 1413 4 - 10 COMMON_UPI5BIN_debug R 372 1410 1413 4 - 10 COMMON_UPC10BIN r 373 1414 1421 8 - 10 COMMON_UPC10BIN_debug R 374 1414 1421 8 - 10 COMMON_UPI10BIN r 375 1422 1429 8 - 10 COMMON_UPI10BIN_debug R 376 1422 1429 8 - 10 EX_NUM_INT01 r 377 1430 1438 9 - 10 EX_NUM_INT01_debug R 378 1430 1438 9 - 10 EX_NUM_INT02 r 379 1439 1447 9 - 10 EX_NUM_INT02_debug R 380 1439 1447 9 - 10 EX_NUM_INT03 r 381 1448 1456 9 - 10 EX_NUM_INT03_debug R 382 1448 1456 9 - 10 EX_NUM_INT04 r 383 1457 1465 9 - 10 EX_NUM_INT04_debug R 384 1457 1465 9 - 10 EX_NUM_DEC01 r 385 1466 1474 9 - 10 EX_NUM_DEC01_debug R 386 1466 1474 9 - 10 EX_NUM_DEC02 r 387 1475 1483 9 - 10 EX_NUM_DEC02_debug R 388 1475 1483 9 - 10 EX_NUM_DEC03 r 389 1484 1493 10 - 10 EX_NUM_DEC03_debug R 390 1484 1493 10 \ No newline at end of file + 1 RECORD 391 1 1493 1493 + 10 ID r 2 1 4 4 + 10 ID_debug R 3 1 4 4 + 10 STRING_VAL r 4 5 14 10 + 10 STRING_VAL_debug R 5 5 14 10 + 10 NUM_STR_INT01 r 6 15 15 1 + 10 NUM_STR_INT01_debug R 7 15 15 1 + 10 NUM_STR_INT02 r 8 16 17 2 + 10 NUM_STR_INT02_debug R 9 16 17 2 + 10 NUM_STR_INT03 r 10 18 20 3 + 10 NUM_STR_INT03_debug R 11 18 20 3 + 10 NUM_STR_INT04 r 12 21 24 4 + 10 NUM_STR_INT04_debug R 13 21 24 4 + 10 NUM_STR_INT05 r 14 25 29 5 + 10 NUM_STR_INT05_debug R 15 25 29 5 + 10 NUM_STR_INT06 r 16 30 37 8 + 10 NUM_STR_INT06_debug R 17 30 37 8 + 10 NUM_STR_INT07 r 18 38 46 9 + 10 NUM_STR_INT07_debug R 19 38 46 9 + 10 NUM_STR_INT08 r 20 47 56 10 + 10 NUM_STR_INT08_debug R 21 47 56 10 + 10 NUM_STR_INT09 r 22 57 67 11 + 10 NUM_STR_INT09_debug R 23 57 67 11 + 10 NUM_STR_INT10 r 24 68 84 17 + 10 NUM_STR_INT10_debug R 25 68 84 17 + 10 NUM_STR_INT11 r 26 85 102 18 + 10 NUM_STR_INT11_debug R 27 85 102 18 + 10 NUM_STR_INT12 r 28 103 121 19 + 10 NUM_STR_INT12_debug R 29 103 121 19 + 10 NUM_STR_INT13 r 30 122 141 20 + 10 NUM_STR_INT13_debug R 31 122 141 20 + 10 NUM_STR_INT14 r 32 142 178 37 + 10 NUM_STR_INT14_debug R 33 142 178 37 + 10 NUM_STR_SINT02 r 34 179 180 2 + 10 NUM_STR_SINT02_debug R 35 179 180 2 + 10 NUM_STR_SINT03 r 36 181 183 3 + 10 NUM_STR_SINT03_debug R 37 181 183 3 + 10 NUM_STR_SINT04 r 38 184 187 4 + 10 NUM_STR_SINT04_debug R 39 184 187 4 + 10 NUM_STR_SINT05 r 40 188 192 5 + 10 NUM_STR_SINT05_debug R 41 188 192 5 + 10 NUM_STR_SINT06 r 42 193 200 8 + 10 NUM_STR_SINT06_debug R 43 193 200 8 + 10 NUM_STR_SINT07 r 44 201 209 9 + 10 NUM_STR_SINT07_debug R 45 201 209 9 + 10 NUM_STR_SINT08 r 46 210 219 10 + 10 NUM_STR_SINT08_debug R 47 210 219 10 + 10 NUM_STR_SINT09 r 48 220 230 11 + 10 NUM_STR_SINT09_debug R 49 220 230 11 + 10 NUM_STR_SINT10 r 50 231 247 17 + 10 NUM_STR_SINT10_debug R 51 231 247 17 + 10 NUM_STR_SINT11 r 52 248 265 18 + 10 NUM_STR_SINT11_debug R 53 248 265 18 + 10 NUM_STR_SINT12 r 54 266 284 19 + 10 NUM_STR_SINT12_debug R 55 266 284 19 + 10 NUM_STR_SINT13 r 56 285 304 20 + 10 NUM_STR_SINT13_debug R 57 285 304 20 + 10 NUM_STR_SINT14 r 58 305 341 37 + 10 NUM_STR_SINT14_debug R 59 305 341 37 + 10 NUM_STR_DEC01 r 60 342 344 3 + 10 NUM_STR_DEC01_debug R 61 342 344 3 + 10 NUM_STR_DEC02 r 62 345 348 4 + 10 NUM_STR_DEC02_debug R 63 345 348 4 + 10 NUM_STR_DEC03 r 64 349 353 5 + 10 NUM_STR_DEC03_debug R 65 349 353 5 + 10 NUM_STR_DEC04 r 66 354 361 8 + 10 NUM_STR_DEC04_debug R 67 354 361 8 + 10 NUM_STR_DEC05 r 68 362 370 9 + 10 NUM_STR_DEC05_debug R 69 362 370 9 + 10 NUM_STR_DEC06 r 70 371 380 10 + 10 NUM_STR_DEC06_debug R 71 371 380 10 + 10 NUM_STR_DEC07 r 72 381 397 17 + 10 NUM_STR_DEC07_debug R 73 381 397 17 + 10 NUM_STR_DEC08 r 74 398 415 18 + 10 NUM_STR_DEC08_debug R 75 398 415 18 + 10 NUM_STR_DEC09 r 76 416 434 19 + 10 NUM_STR_DEC09_debug R 77 416 434 19 + 10 NUM_STR_DEC10 r 78 435 462 28 + 10 NUM_STR_DEC10_debug R 79 435 462 28 + 10 NUM_STR_SDEC01 r 80 463 465 3 + 10 NUM_STR_SDEC01_debug R 81 463 465 3 + 10 NUM_STR_SDEC02 r 82 466 469 4 + 10 NUM_STR_SDEC02_debug R 83 466 469 4 + 10 NUM_STR_SDEC03 r 84 470 474 5 + 10 NUM_STR_SDEC03_debug R 85 470 474 5 + 10 NUM_STR_SDEC04 r 86 475 482 8 + 10 NUM_STR_SDEC04_debug R 87 475 482 8 + 10 NUM_STR_SDEC05 r 88 483 491 9 + 10 NUM_STR_SDEC05_debug R 89 483 491 9 + 10 NUM_STR_SDEC06 r 90 492 501 10 + 10 NUM_STR_SDEC06_debug R 91 492 501 10 + 10 NUM_STR_SDEC07 r 92 502 518 17 + 10 NUM_STR_SDEC07_debug R 93 502 518 17 + 10 NUM_STR_SDEC08 r 94 519 536 18 + 10 NUM_STR_SDEC08_debug R 95 519 536 18 + 10 NUM_STR_SDEC09 r 96 537 555 19 + 10 NUM_STR_SDEC09_debug R 97 537 555 19 + 10 NUM_STR_SDEC10 r 98 556 583 28 + 10 NUM_STR_SDEC10_debug R 99 556 583 28 + 10 NUM_STR_EDEC03 r 100 584 589 6 + 10 NUM_STR_EDEC03_debug R 101 584 589 6 + 10 NUM_STR_EDEC04 r 102 590 598 9 + 10 NUM_STR_EDEC04_debug R 103 590 598 9 + 10 NUM_STR_EDEC05 r 104 599 608 10 + 10 NUM_STR_EDEC05_debug R 105 599 608 10 + 10 NUM_STR_EDEC06 r 106 609 619 11 + 10 NUM_STR_EDEC06_debug R 107 609 619 11 + 10 NUM_BIN_INT01 r 108 620 621 2 + 10 NUM_BIN_INT01_debug R 109 620 621 2 + 10 NUM_BIN_INT02 r 110 622 623 2 + 10 NUM_BIN_INT02_debug R 111 622 623 2 + 10 NUM_BIN_INT03 r 112 624 625 2 + 10 NUM_BIN_INT03_debug R 113 624 625 2 + 10 NUM_BIN_INT04 r 114 626 627 2 + 10 NUM_BIN_INT04_debug R 115 626 627 2 + 10 NUM_BIN_INT05 r 116 628 631 4 + 10 NUM_BIN_INT05_debug R 117 628 631 4 + 10 NUM_BIN_INT06 r 118 632 635 4 + 10 NUM_BIN_INT06_debug R 119 632 635 4 + 10 NUM_BIN_INT07 r 120 636 639 4 + 10 NUM_BIN_INT07_debug R 121 636 639 4 + 10 NUM_BIN_INT08 r 122 640 647 8 + 10 NUM_BIN_INT08_debug R 123 640 647 8 + 10 NUM_BIN_INT09 r 124 648 655 8 + 10 NUM_BIN_INT09_debug R 125 648 655 8 + 10 NUM_BIN_INT10 r 126 656 663 8 + 10 NUM_BIN_INT10_debug R 127 656 663 8 + 10 NUM_BIN_INT11 r 128 664 671 8 + 10 NUM_BIN_INT11_debug R 129 664 671 8 + 10 NUM_BIN_INT12 r 130 672 680 9 + 10 NUM_BIN_INT12_debug R 131 672 680 9 + 10 NUM_BIN_INT13 r 132 681 689 9 + 10 NUM_BIN_INT13_debug R 133 681 689 9 + 10 NUM_BIN_INT14 r 134 690 705 16 + 10 NUM_BIN_INT14_debug R 135 690 705 16 + 10 NUM_SBIN_SINT01 r 136 706 707 2 + 10 NUM_SBIN_SINT01_debug R 137 706 707 2 + 10 NUM_SBIN_SINT02 r 138 708 709 2 + 10 NUM_SBIN_SINT02_debug R 139 708 709 2 + 10 NUM_SBIN_SINT03 r 140 710 711 2 + 10 NUM_SBIN_SINT03_debug R 141 710 711 2 + 10 NUM_SBIN_SINT04 r 142 712 713 2 + 10 NUM_SBIN_SINT04_debug R 143 712 713 2 + 10 NUM_SBIN_SINT05 r 144 714 717 4 + 10 NUM_SBIN_SINT05_debug R 145 714 717 4 + 10 NUM_SBIN_SINT06 r 146 718 721 4 + 10 NUM_SBIN_SINT06_debug R 147 718 721 4 + 10 NUM_SBIN_SINT07 r 148 722 725 4 + 10 NUM_SBIN_SINT07_debug R 149 722 725 4 + 10 NUM_SBIN_SINT08 r 150 726 733 8 + 10 NUM_SBIN_SINT08_debug R 151 726 733 8 + 10 NUM_SBIN_SINT09 r 152 734 741 8 + 10 NUM_SBIN_SINT09_debug R 153 734 741 8 + 10 NUM_SBIN_SINT10 r 154 742 749 8 + 10 NUM_SBIN_SINT10_debug R 155 742 749 8 + 10 NUM_SBIN_SINT11 r 156 750 757 8 + 10 NUM_SBIN_SINT11_debug R 157 750 757 8 + 10 NUM_SBIN_SINT12 r 158 758 766 9 + 10 NUM_SBIN_SINT12_debug R 159 758 766 9 + 10 NUM_SBIN_SINT13 r 160 767 775 9 + 10 NUM_SBIN_SINT13_debug R 161 767 775 9 + 10 NUM_SBIN_SINT14 r 162 776 791 16 + 10 NUM_SBIN_SINT14_debug R 163 776 791 16 + 10 NUM_BIN_DEC01 r 164 792 793 2 + 10 NUM_BIN_DEC01_debug R 165 792 793 2 + 10 NUM_BIN_DEC02 r 166 794 795 2 + 10 NUM_BIN_DEC02_debug R 167 794 795 2 + 10 NUM_BIN_DEC03 r 168 796 799 4 + 10 NUM_BIN_DEC03_debug R 169 796 799 4 + 10 NUM_BIN_DEC04 r 170 800 803 4 + 10 NUM_BIN_DEC04_debug R 171 800 803 4 + 10 NUM_BIN_DEC05 r 172 804 807 4 + 10 NUM_BIN_DEC05_debug R 173 804 807 4 + 10 NUM_BIN_DEC06 r 174 808 815 8 + 10 NUM_BIN_DEC06_debug R 175 808 815 8 + 10 NUM_BIN_DEC07 r 176 816 823 8 + 10 NUM_BIN_DEC07_debug R 177 816 823 8 + 10 NUM_BIN_DEC08 r 178 824 831 8 + 10 NUM_BIN_DEC08_debug R 179 824 831 8 + 10 NUM_BIN_DEC09 r 180 832 840 9 + 10 NUM_BIN_DEC09_debug R 181 832 840 9 + 10 NUM_BIN_DEC10 r 182 841 852 12 + 10 NUM_BIN_DEC10_debug R 183 841 852 12 + 10 NUM_SBIN_DEC01 r 184 853 854 2 + 10 NUM_SBIN_DEC01_debug R 185 853 854 2 + 10 NUM_SBIN_DEC02 r 186 855 856 2 + 10 NUM_SBIN_DEC02_debug R 187 855 856 2 + 10 NUM_SBIN_DEC03 r 188 857 860 4 + 10 NUM_SBIN_DEC03_debug R 189 857 860 4 + 10 NUM_SBIN_DEC04 r 190 861 864 4 + 10 NUM_SBIN_DEC04_debug R 191 861 864 4 + 10 NUM_SBIN_DEC05 r 192 865 868 4 + 10 NUM_SBIN_DEC05_debug R 193 865 868 4 + 10 NUM_SBIN_DEC06 r 194 869 876 8 + 10 NUM_SBIN_DEC06_debug R 195 869 876 8 + 10 NUM_SBIN_DEC07 r 196 877 884 8 + 10 NUM_SBIN_DEC07_debug R 197 877 884 8 + 10 NUM_SBIN_DEC08 r 198 885 892 8 + 10 NUM_SBIN_DEC08_debug R 199 885 892 8 + 10 NUM_SBIN_DEC09 r 200 893 901 9 + 10 NUM_SBIN_DEC09_debug R 201 893 901 9 + 10 NUM_SBIN_DEC10 r 202 902 913 12 + 10 NUM_SBIN_DEC10_debug R 203 902 913 12 + 10 NUM_BCD_INT01 r 204 914 914 1 + 10 NUM_BCD_INT01_debug R 205 914 914 1 + 10 NUM_BCD_INT02 r 206 915 916 2 + 10 NUM_BCD_INT02_debug R 207 915 916 2 + 10 NUM_BCD_INT03 r 208 917 918 2 + 10 NUM_BCD_INT03_debug R 209 917 918 2 + 10 NUM_BCD_INT04 r 210 919 921 3 + 10 NUM_BCD_INT04_debug R 211 919 921 3 + 10 NUM_BCD_INT05 r 212 922 924 3 + 10 NUM_BCD_INT05_debug R 213 922 924 3 + 10 NUM_BCD_INT06 r 214 925 929 5 + 10 NUM_BCD_INT06_debug R 215 925 929 5 + 10 NUM_BCD_INT07 r 216 930 934 5 + 10 NUM_BCD_INT07_debug R 217 930 934 5 + 10 NUM_BCD_INT08 r 218 935 940 6 + 10 NUM_BCD_INT08_debug R 219 935 940 6 + 10 NUM_BCD_INT09 r 220 941 946 6 + 10 NUM_BCD_INT09_debug R 221 941 946 6 + 10 NUM_BCD_INT10 r 222 947 955 9 + 10 NUM_BCD_INT10_debug R 223 947 955 9 + 10 NUM_BCD_INT11 r 224 956 965 10 + 10 NUM_BCD_INT11_debug R 225 956 965 10 + 10 NUM_BCD_INT12 r 226 966 975 10 + 10 NUM_BCD_INT12_debug R 227 966 975 10 + 10 NUM_BCD_INT13 r 228 976 986 11 + 10 NUM_BCD_INT13_debug R 229 976 986 11 + 10 NUM_BCD_INT14 r 230 987 1005 19 + 10 NUM_BCD_INT14_debug R 231 987 1005 19 + 10 NUM_BCD_SINT01 r 232 1006 1006 1 + 10 NUM_BCD_SINT01_debug R 233 1006 1006 1 + 10 NUM_BCD_SINT02 r 234 1007 1008 2 + 10 NUM_BCD_SINT02_debug R 235 1007 1008 2 + 10 NUM_BCD_SINT03 r 236 1009 1010 2 + 10 NUM_BCD_SINT03_debug R 237 1009 1010 2 + 10 NUM_BCD_SINT04 r 238 1011 1013 3 + 10 NUM_BCD_SINT04_debug R 239 1011 1013 3 + 10 NUM_BCD_SINT05 r 240 1014 1016 3 + 10 NUM_BCD_SINT05_debug R 241 1014 1016 3 + 10 NUM_BCD_SINT06 r 242 1017 1021 5 + 10 NUM_BCD_SINT06_debug R 243 1017 1021 5 + 10 NUM_BCD_SINT07 r 244 1022 1026 5 + 10 NUM_BCD_SINT07_debug R 245 1022 1026 5 + 10 NUM_BCD_SINT08 r 246 1027 1032 6 + 10 NUM_BCD_SINT08_debug R 247 1027 1032 6 + 10 NUM_BCD_SINT09 r 248 1033 1038 6 + 10 NUM_BCD_SINT09_debug R 249 1033 1038 6 + 10 NUM_BCD_SINT10 r 250 1039 1047 9 + 10 NUM_BCD_SINT10_debug R 251 1039 1047 9 + 10 NUM_BCD_SINT11 r 252 1048 1057 10 + 10 NUM_BCD_SINT11_debug R 253 1048 1057 10 + 10 NUM_BCD_SINT12 r 254 1058 1067 10 + 10 NUM_BCD_SINT12_debug R 255 1058 1067 10 + 10 NUM_BCD_SINT13 r 256 1068 1078 11 + 10 NUM_BCD_SINT13_debug R 257 1068 1078 11 + 10 NUM_BCD_SINT14 r 258 1079 1097 19 + 10 NUM_BCD_SINT14_debug R 259 1079 1097 19 + 10 NUM_BCD_DEC01 r 260 1098 1099 2 + 10 NUM_BCD_DEC01_debug R 261 1098 1099 2 + 10 NUM_BCD_DEC02 r 262 1100 1102 3 + 10 NUM_BCD_DEC02_debug R 263 1100 1102 3 + 10 NUM_BCD_DEC03 r 264 1103 1105 3 + 10 NUM_BCD_DEC03_debug R 265 1103 1105 3 + 10 NUM_BCD_DEC04 r 266 1106 1110 5 + 10 NUM_BCD_DEC04_debug R 267 1106 1110 5 + 10 NUM_BCD_DEC05 r 268 1111 1115 5 + 10 NUM_BCD_DEC05_debug R 269 1111 1115 5 + 10 NUM_BCD_DEC06 r 270 1116 1121 6 + 10 NUM_BCD_DEC06_debug R 271 1116 1121 6 + 10 NUM_BCD_DEC07 r 272 1122 1130 9 + 10 NUM_BCD_DEC07_debug R 273 1122 1130 9 + 10 NUM_BCD_DEC08 r 274 1131 1140 10 + 10 NUM_BCD_DEC08_debug R 275 1131 1140 10 + 10 NUM_BCD_DEC09 r 276 1141 1150 10 + 10 NUM_BCD_DEC09_debug R 277 1141 1150 10 + 10 NUM_BCD_DEC10 r 278 1151 1165 15 + 10 NUM_BCD_DEC10_debug R 279 1151 1165 15 + 10 NUM_BCD_SDEC01 r 280 1166 1167 2 + 10 NUM_BCD_SDEC01_debug R 281 1166 1167 2 + 10 NUM_BCD_SDEC02 r 282 1168 1170 3 + 10 NUM_BCD_SDEC02_debug R 283 1168 1170 3 + 10 NUM_BCD_SDEC03 r 284 1171 1173 3 + 10 NUM_BCD_SDEC03_debug R 285 1171 1173 3 + 10 NUM_BCD_SDEC04 r 286 1174 1178 5 + 10 NUM_BCD_SDEC04_debug R 287 1174 1178 5 + 10 NUM_BCD_SDEC05 r 288 1179 1183 5 + 10 NUM_BCD_SDEC05_debug R 289 1179 1183 5 + 10 NUM_BCD_SDEC06 r 290 1184 1189 6 + 10 NUM_BCD_SDEC06_debug R 291 1184 1189 6 + 10 NUM_BCD_SDEC07 r 292 1190 1198 9 + 10 NUM_BCD_SDEC07_debug R 293 1190 1198 9 + 10 NUM_BCD_SDEC08 r 294 1199 1208 10 + 10 NUM_BCD_SDEC08_debug R 295 1199 1208 10 + 10 NUM_BCD_SDEC09 r 296 1209 1218 10 + 10 NUM_BCD_SDEC09_debug R 297 1209 1218 10 + 10 NUM_BCD_SDEC10 r 298 1219 1233 15 + 10 NUM_BCD_SDEC10_debug R 299 1219 1233 15 + 10 NUM_SL_STR_INT01 r 300 1234 1243 10 + 10 NUM_SL_STR_INT01_debug R 301 1234 1243 10 + 10 NUM_SL_STR_DEC01 r 302 1244 1248 5 + 10 NUM_SL_STR_DEC01_debug R 303 1244 1248 5 + 10 NUM_ST_STR_INT01 r 304 1249 1258 10 + 10 NUM_ST_STR_INT01_debug R 305 1249 1258 10 + 10 NUM_ST_STR_DEC01 r 306 1259 1263 5 + 10 NUM_ST_STR_DEC01_debug R 307 1259 1263 5 + 10 NUM_SLI_STR_DEC01 r 308 1264 1270 7 + 10 NUM_SLI_STR_DEC01_debug R 309 1264 1270 7 + 10 NUM_STI_STR_DEC01 r 310 1271 1277 7 + 10 NUM_STI_STR_DEC01_debug R 311 1271 1277 7 + 10 NUM_SLI_DEBUG r 312 1278 1284 7 + 10 NUM_SLI_DEBUG_debug R 313 1278 1284 7 + 10 NUM_STI_DEBUG r 314 1285 1291 7 + 10 NUM_STI_DEBUG_debug R 315 1285 1291 7 + 10 FLOAT_01 r 316 1292 1295 4 + 10 FLOAT_01_debug R 317 1292 1295 4 + 10 DOUBLE_01 r 318 1296 1303 8 + 10 DOUBLE_01_debug R 319 1296 1303 8 + 10 COMMON_8_BIN r 320 1304 1307 4 + 10 COMMON_8_BIN_debug R 321 1304 1307 4 + 10 COMMON_S3_BIN r 322 1308 1309 2 + 10 COMMON_S3_BIN_debug R 323 1308 1309 2 + 10 COMMON_S94COMP r 324 1310 1311 2 + 10 COMMON_S94COMP_debug R 325 1310 1311 2 + 10 COMMON_S8_BIN r 326 1312 1315 4 + 10 COMMON_S8_BIN_debug R 327 1312 1315 4 + 10 COMMON_DDC97_BIN r 328 1316 1319 4 + 10 COMMON_DDC97_BIN_debug R 329 1316 1319 4 + 10 COMMON_97COMP3 r 330 1320 1323 4 + 10 COMMON_97COMP3_debug R 331 1320 1323 4 + 10 COMMON_915COMP3 r 332 1324 1331 8 + 10 COMMON_915COMP3_debug R 333 1324 1331 8 + 10 COMMON_S95COMP3 r 334 1332 1334 3 + 10 COMMON_S95COMP3_debug R 335 1332 1334 3 + 10 COMMON_S999DCCOMP3 r 336 1335 1340 6 + 10 COMMON_S999DCCOMP3_debug R 337 1335 1340 6 + 10 COMMON_S913COMP3 r 338 1341 1347 7 + 10 COMMON_S913COMP3_debug R 339 1341 1347 7 + 10 COMMON_S913DCCOMP3 r 340 1348 1355 8 + 10 COMMON_S913DCCOMP3_debug R 341 1348 1355 8 + 10 COMMON_S911DCC2 r 342 1356 1362 7 + 10 COMMON_S911DCC2_debug R 343 1356 1362 7 + 10 COMMON_S910DCC3 r 344 1363 1369 7 + 10 COMMON_S910DCC3_debug R 345 1363 1369 7 + 10 COMMON_S03DDC r 346 1370 1372 3 + 10 COMMON_S03DDC_debug R 347 1370 1372 3 + 10 COMMON_U03DDC r 348 1373 1375 3 + 10 COMMON_U03DDC_debug R 349 1373 1375 3 + 10 COMMON_UPC5DDC r 350 1376 1378 3 + 10 COMMON_UPC5DDC_debug R 351 1376 1378 3 + 10 COMMON_SPC5DDC r 352 1379 1381 3 + 10 COMMON_SPC5DDC_debug R 353 1379 1381 3 + 10 COMMON_UPI5DDC r 354 1382 1384 3 + 10 COMMON_UPI5DDC_debug R 355 1382 1384 3 + 10 COMMON_SPI5DDC r 356 1385 1387 3 + 10 COMMON_SPI5DDC_debug R 357 1385 1387 3 + 10 COMMON_UPC5DISP r 358 1388 1392 5 + 10 COMMON_UPC5DISP_debug R 359 1388 1392 5 + 10 COMMON_UPI5DISP r 360 1393 1397 5 + 10 COMMON_UPI5DISP_debug R 361 1393 1397 5 + 10 COMMON_UPC1BIN r 362 1398 1399 2 + 10 COMMON_UPC1BIN_debug R 363 1398 1399 2 + 10 COMMON_UPI1BIN r 364 1400 1401 2 + 10 COMMON_UPI1BIN_debug R 365 1400 1401 2 + 10 COMMON_UPC3BIN r 366 1402 1403 2 + 10 COMMON_UPC3BIN_debug R 367 1402 1403 2 + 10 COMMON_UPI3BIN r 368 1404 1405 2 + 10 COMMON_UPI3BIN_debug R 369 1404 1405 2 + 10 COMMON_UPC5BIN r 370 1406 1409 4 + 10 COMMON_UPC5BIN_debug R 371 1406 1409 4 + 10 COMMON_UPI5BIN r 372 1410 1413 4 + 10 COMMON_UPI5BIN_debug R 373 1410 1413 4 + 10 COMMON_UPC10BIN r 374 1414 1421 8 + 10 COMMON_UPC10BIN_debug R 375 1414 1421 8 + 10 COMMON_UPI10BIN r 376 1422 1429 8 + 10 COMMON_UPI10BIN_debug R 377 1422 1429 8 + 10 EX_NUM_INT01 r 378 1430 1438 9 + 10 EX_NUM_INT01_debug R 379 1430 1438 9 + 10 EX_NUM_INT02 r 380 1439 1447 9 + 10 EX_NUM_INT02_debug R 381 1439 1447 9 + 10 EX_NUM_INT03 r 382 1448 1456 9 + 10 EX_NUM_INT03_debug R 383 1448 1456 9 + 10 EX_NUM_INT04 r 384 1457 1465 9 + 10 EX_NUM_INT04_debug R 385 1457 1465 9 + 10 EX_NUM_DEC01 r 386 1466 1474 9 + 10 EX_NUM_DEC01_debug R 387 1466 1474 9 + 10 EX_NUM_DEC02 r 388 1475 1483 9 + 10 EX_NUM_DEC02_debug R 389 1475 1483 9 + 10 EX_NUM_DEC03 r 390 1484 1493 10 + 10 EX_NUM_DEC03_debug R 391 1484 1493 10 \ No newline at end of file diff --git a/data/test24_expected/test24b_layout.txt b/data/test24_expected/test24b_layout.txt index 5f0f0eb2..84c7536f 100644 --- a/data/test24_expected/test24b_layout.txt +++ b/data/test24_expected/test24b_layout.txt @@ -1,393 +1,393 @@ -------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH -RECORD 1 1493 1493 - 10 ID r 1 1 4 4 - 10 ID_debug R 2 1 4 4 - 10 STRING_VAL r 3 5 14 10 - 10 STRING_VAL_debug R 4 5 14 10 - 10 NUM_STR_INT01 r 5 15 15 1 - 10 NUM_STR_INT01_debug R 6 15 15 1 - 10 NUM_STR_INT02 r 7 16 17 2 - 10 NUM_STR_INT02_debug R 8 16 17 2 - 10 NUM_STR_INT03 r 9 18 20 3 - 10 NUM_STR_INT03_debug R 10 18 20 3 - 10 NUM_STR_INT04 r 11 21 24 4 - 10 NUM_STR_INT04_debug R 12 21 24 4 - 10 NUM_STR_INT05 r 13 25 29 5 - 10 NUM_STR_INT05_debug R 14 25 29 5 - 10 NUM_STR_INT06 r 15 30 37 8 - 10 NUM_STR_INT06_debug R 16 30 37 8 - 10 NUM_STR_INT07 r 17 38 46 9 - 10 NUM_STR_INT07_debug R 18 38 46 9 - 10 NUM_STR_INT08 r 19 47 56 10 - 10 NUM_STR_INT08_debug R 20 47 56 10 - 10 NUM_STR_INT09 r 21 57 67 11 - 10 NUM_STR_INT09_debug R 22 57 67 11 - 10 NUM_STR_INT10 r 23 68 84 17 - 10 NUM_STR_INT10_debug R 24 68 84 17 - 10 NUM_STR_INT11 r 25 85 102 18 - 10 NUM_STR_INT11_debug R 26 85 102 18 - 10 NUM_STR_INT12 r 27 103 121 19 - 10 NUM_STR_INT12_debug R 28 103 121 19 - 10 NUM_STR_INT13 r 29 122 141 20 - 10 NUM_STR_INT13_debug R 30 122 141 20 - 10 NUM_STR_INT14 r 31 142 178 37 - 10 NUM_STR_INT14_debug R 32 142 178 37 - 10 NUM_STR_SINT02 r 33 179 180 2 - 10 NUM_STR_SINT02_debug R 34 179 180 2 - 10 NUM_STR_SINT03 r 35 181 183 3 - 10 NUM_STR_SINT03_debug R 36 181 183 3 - 10 NUM_STR_SINT04 r 37 184 187 4 - 10 NUM_STR_SINT04_debug R 38 184 187 4 - 10 NUM_STR_SINT05 r 39 188 192 5 - 10 NUM_STR_SINT05_debug R 40 188 192 5 - 10 NUM_STR_SINT06 r 41 193 200 8 - 10 NUM_STR_SINT06_debug R 42 193 200 8 - 10 NUM_STR_SINT07 r 43 201 209 9 - 10 NUM_STR_SINT07_debug R 44 201 209 9 - 10 NUM_STR_SINT08 r 45 210 219 10 - 10 NUM_STR_SINT08_debug R 46 210 219 10 - 10 NUM_STR_SINT09 r 47 220 230 11 - 10 NUM_STR_SINT09_debug R 48 220 230 11 - 10 NUM_STR_SINT10 r 49 231 247 17 - 10 NUM_STR_SINT10_debug R 50 231 247 17 - 10 NUM_STR_SINT11 r 51 248 265 18 - 10 NUM_STR_SINT11_debug R 52 248 265 18 - 10 NUM_STR_SINT12 r 53 266 284 19 - 10 NUM_STR_SINT12_debug R 54 266 284 19 - 10 NUM_STR_SINT13 r 55 285 304 20 - 10 NUM_STR_SINT13_debug R 56 285 304 20 - 10 NUM_STR_SINT14 r 57 305 341 37 - 10 NUM_STR_SINT14_debug R 58 305 341 37 - 10 NUM_STR_DEC01 r 59 342 344 3 - 10 NUM_STR_DEC01_debug R 60 342 344 3 - 10 NUM_STR_DEC02 r 61 345 348 4 - 10 NUM_STR_DEC02_debug R 62 345 348 4 - 10 NUM_STR_DEC03 r 63 349 353 5 - 10 NUM_STR_DEC03_debug R 64 349 353 5 - 10 NUM_STR_DEC04 r 65 354 361 8 - 10 NUM_STR_DEC04_debug R 66 354 361 8 - 10 NUM_STR_DEC05 r 67 362 370 9 - 10 NUM_STR_DEC05_debug R 68 362 370 9 - 10 NUM_STR_DEC06 r 69 371 380 10 - 10 NUM_STR_DEC06_debug R 70 371 380 10 - 10 NUM_STR_DEC07 r 71 381 397 17 - 10 NUM_STR_DEC07_debug R 72 381 397 17 - 10 NUM_STR_DEC08 r 73 398 415 18 - 10 NUM_STR_DEC08_debug R 74 398 415 18 - 10 NUM_STR_DEC09 r 75 416 434 19 - 10 NUM_STR_DEC09_debug R 76 416 434 19 - 10 NUM_STR_DEC10 r 77 435 462 28 - 10 NUM_STR_DEC10_debug R 78 435 462 28 - 10 NUM_STR_SDEC01 r 79 463 465 3 - 10 NUM_STR_SDEC01_debug R 80 463 465 3 - 10 NUM_STR_SDEC02 r 81 466 469 4 - 10 NUM_STR_SDEC02_debug R 82 466 469 4 - 10 NUM_STR_SDEC03 r 83 470 474 5 - 10 NUM_STR_SDEC03_debug R 84 470 474 5 - 10 NUM_STR_SDEC04 r 85 475 482 8 - 10 NUM_STR_SDEC04_debug R 86 475 482 8 - 10 NUM_STR_SDEC05 r 87 483 491 9 - 10 NUM_STR_SDEC05_debug R 88 483 491 9 - 10 NUM_STR_SDEC06 r 89 492 501 10 - 10 NUM_STR_SDEC06_debug R 90 492 501 10 - 10 NUM_STR_SDEC07 r 91 502 518 17 - 10 NUM_STR_SDEC07_debug R 92 502 518 17 - 10 NUM_STR_SDEC08 r 93 519 536 18 - 10 NUM_STR_SDEC08_debug R 94 519 536 18 - 10 NUM_STR_SDEC09 r 95 537 555 19 - 10 NUM_STR_SDEC09_debug R 96 537 555 19 - 10 NUM_STR_SDEC10 r 97 556 583 28 - 10 NUM_STR_SDEC10_debug R 98 556 583 28 - 10 NUM_STR_EDEC03 r 99 584 589 6 - 10 NUM_STR_EDEC03_debug R 100 584 589 6 - 10 NUM_STR_EDEC04 r 101 590 598 9 - 10 NUM_STR_EDEC04_debug R 102 590 598 9 - 10 NUM_STR_EDEC05 r 103 599 608 10 - 10 NUM_STR_EDEC05_debug R 104 599 608 10 - 10 NUM_STR_EDEC06 r 105 609 619 11 - 10 NUM_STR_EDEC06_debug R 106 609 619 11 - 10 NUM_BIN_INT01 r 107 620 621 2 - 10 NUM_BIN_INT01_debug R 108 620 621 2 - 10 NUM_BIN_INT02 r 109 622 623 2 - 10 NUM_BIN_INT02_debug R 110 622 623 2 - 10 NUM_BIN_INT03 r 111 624 625 2 - 10 NUM_BIN_INT03_debug R 112 624 625 2 - 10 NUM_BIN_INT04 r 113 626 627 2 - 10 NUM_BIN_INT04_debug R 114 626 627 2 - 10 NUM_BIN_INT05 r 115 628 631 4 - 10 NUM_BIN_INT05_debug R 116 628 631 4 - 10 NUM_BIN_INT06 r 117 632 635 4 - 10 NUM_BIN_INT06_debug R 118 632 635 4 - 10 NUM_BIN_INT07 r 119 636 639 4 - 10 NUM_BIN_INT07_debug R 120 636 639 4 - 10 NUM_BIN_INT08 r 121 640 647 8 - 10 NUM_BIN_INT08_debug R 122 640 647 8 - 10 NUM_BIN_INT09 r 123 648 655 8 - 10 NUM_BIN_INT09_debug R 124 648 655 8 - 10 NUM_BIN_INT10 r 125 656 663 8 - 10 NUM_BIN_INT10_debug R 126 656 663 8 - 10 NUM_BIN_INT11 r 127 664 671 8 - 10 NUM_BIN_INT11_debug R 128 664 671 8 - 10 NUM_BIN_INT12 r 129 672 680 9 - 10 NUM_BIN_INT12_debug R 130 672 680 9 - 10 NUM_BIN_INT13 r 131 681 689 9 - 10 NUM_BIN_INT13_debug R 132 681 689 9 - 10 NUM_BIN_INT14 r 133 690 705 16 - 10 NUM_BIN_INT14_debug R 134 690 705 16 - 10 NUM_SBIN_SINT01 r 135 706 707 2 - 10 NUM_SBIN_SINT01_debug R 136 706 707 2 - 10 NUM_SBIN_SINT02 r 137 708 709 2 - 10 NUM_SBIN_SINT02_debug R 138 708 709 2 - 10 NUM_SBIN_SINT03 r 139 710 711 2 - 10 NUM_SBIN_SINT03_debug R 140 710 711 2 - 10 NUM_SBIN_SINT04 r 141 712 713 2 - 10 NUM_SBIN_SINT04_debug R 142 712 713 2 - 10 NUM_SBIN_SINT05 r 143 714 717 4 - 10 NUM_SBIN_SINT05_debug R 144 714 717 4 - 10 NUM_SBIN_SINT06 r 145 718 721 4 - 10 NUM_SBIN_SINT06_debug R 146 718 721 4 - 10 NUM_SBIN_SINT07 r 147 722 725 4 - 10 NUM_SBIN_SINT07_debug R 148 722 725 4 - 10 NUM_SBIN_SINT08 r 149 726 733 8 - 10 NUM_SBIN_SINT08_debug R 150 726 733 8 - 10 NUM_SBIN_SINT09 r 151 734 741 8 - 10 NUM_SBIN_SINT09_debug R 152 734 741 8 - 10 NUM_SBIN_SINT10 r 153 742 749 8 - 10 NUM_SBIN_SINT10_debug R 154 742 749 8 - 10 NUM_SBIN_SINT11 r 155 750 757 8 - 10 NUM_SBIN_SINT11_debug R 156 750 757 8 - 10 NUM_SBIN_SINT12 r 157 758 766 9 - 10 NUM_SBIN_SINT12_debug R 158 758 766 9 - 10 NUM_SBIN_SINT13 r 159 767 775 9 - 10 NUM_SBIN_SINT13_debug R 160 767 775 9 - 10 NUM_SBIN_SINT14 r 161 776 791 16 - 10 NUM_SBIN_SINT14_debug R 162 776 791 16 - 10 NUM_BIN_DEC01 r 163 792 793 2 - 10 NUM_BIN_DEC01_debug R 164 792 793 2 - 10 NUM_BIN_DEC02 r 165 794 795 2 - 10 NUM_BIN_DEC02_debug R 166 794 795 2 - 10 NUM_BIN_DEC03 r 167 796 799 4 - 10 NUM_BIN_DEC03_debug R 168 796 799 4 - 10 NUM_BIN_DEC04 r 169 800 803 4 - 10 NUM_BIN_DEC04_debug R 170 800 803 4 - 10 NUM_BIN_DEC05 r 171 804 807 4 - 10 NUM_BIN_DEC05_debug R 172 804 807 4 - 10 NUM_BIN_DEC06 r 173 808 815 8 - 10 NUM_BIN_DEC06_debug R 174 808 815 8 - 10 NUM_BIN_DEC07 r 175 816 823 8 - 10 NUM_BIN_DEC07_debug R 176 816 823 8 - 10 NUM_BIN_DEC08 r 177 824 831 8 - 10 NUM_BIN_DEC08_debug R 178 824 831 8 - 10 NUM_BIN_DEC09 r 179 832 840 9 - 10 NUM_BIN_DEC09_debug R 180 832 840 9 - 10 NUM_BIN_DEC10 r 181 841 852 12 - 10 NUM_BIN_DEC10_debug R 182 841 852 12 - 10 NUM_SBIN_DEC01 r 183 853 854 2 - 10 NUM_SBIN_DEC01_debug R 184 853 854 2 - 10 NUM_SBIN_DEC02 r 185 855 856 2 - 10 NUM_SBIN_DEC02_debug R 186 855 856 2 - 10 NUM_SBIN_DEC03 r 187 857 860 4 - 10 NUM_SBIN_DEC03_debug R 188 857 860 4 - 10 NUM_SBIN_DEC04 r 189 861 864 4 - 10 NUM_SBIN_DEC04_debug R 190 861 864 4 - 10 NUM_SBIN_DEC05 r 191 865 868 4 - 10 NUM_SBIN_DEC05_debug R 192 865 868 4 - 10 NUM_SBIN_DEC06 r 193 869 876 8 - 10 NUM_SBIN_DEC06_debug R 194 869 876 8 - 10 NUM_SBIN_DEC07 r 195 877 884 8 - 10 NUM_SBIN_DEC07_debug R 196 877 884 8 - 10 NUM_SBIN_DEC08 r 197 885 892 8 - 10 NUM_SBIN_DEC08_debug R 198 885 892 8 - 10 NUM_SBIN_DEC09 r 199 893 901 9 - 10 NUM_SBIN_DEC09_debug R 200 893 901 9 - 10 NUM_SBIN_DEC10 r 201 902 913 12 - 10 NUM_SBIN_DEC10_debug R 202 902 913 12 - 10 NUM_BCD_INT01 r 203 914 914 1 - 10 NUM_BCD_INT01_debug R 204 914 914 1 - 10 NUM_BCD_INT02 r 205 915 916 2 - 10 NUM_BCD_INT02_debug R 206 915 916 2 - 10 NUM_BCD_INT03 r 207 917 918 2 - 10 NUM_BCD_INT03_debug R 208 917 918 2 - 10 NUM_BCD_INT04 r 209 919 921 3 - 10 NUM_BCD_INT04_debug R 210 919 921 3 - 10 NUM_BCD_INT05 r 211 922 924 3 - 10 NUM_BCD_INT05_debug R 212 922 924 3 - 10 NUM_BCD_INT06 r 213 925 929 5 - 10 NUM_BCD_INT06_debug R 214 925 929 5 - 10 NUM_BCD_INT07 r 215 930 934 5 - 10 NUM_BCD_INT07_debug R 216 930 934 5 - 10 NUM_BCD_INT08 r 217 935 940 6 - 10 NUM_BCD_INT08_debug R 218 935 940 6 - 10 NUM_BCD_INT09 r 219 941 946 6 - 10 NUM_BCD_INT09_debug R 220 941 946 6 - 10 NUM_BCD_INT10 r 221 947 955 9 - 10 NUM_BCD_INT10_debug R 222 947 955 9 - 10 NUM_BCD_INT11 r 223 956 965 10 - 10 NUM_BCD_INT11_debug R 224 956 965 10 - 10 NUM_BCD_INT12 r 225 966 975 10 - 10 NUM_BCD_INT12_debug R 226 966 975 10 - 10 NUM_BCD_INT13 r 227 976 986 11 - 10 NUM_BCD_INT13_debug R 228 976 986 11 - 10 NUM_BCD_INT14 r 229 987 1005 19 - 10 NUM_BCD_INT14_debug R 230 987 1005 19 - 10 NUM_BCD_SINT01 r 231 1006 1006 1 - 10 NUM_BCD_SINT01_debug R 232 1006 1006 1 - 10 NUM_BCD_SINT02 r 233 1007 1008 2 - 10 NUM_BCD_SINT02_debug R 234 1007 1008 2 - 10 NUM_BCD_SINT03 r 235 1009 1010 2 - 10 NUM_BCD_SINT03_debug R 236 1009 1010 2 - 10 NUM_BCD_SINT04 r 237 1011 1013 3 - 10 NUM_BCD_SINT04_debug R 238 1011 1013 3 - 10 NUM_BCD_SINT05 r 239 1014 1016 3 - 10 NUM_BCD_SINT05_debug R 240 1014 1016 3 - 10 NUM_BCD_SINT06 r 241 1017 1021 5 - 10 NUM_BCD_SINT06_debug R 242 1017 1021 5 - 10 NUM_BCD_SINT07 r 243 1022 1026 5 - 10 NUM_BCD_SINT07_debug R 244 1022 1026 5 - 10 NUM_BCD_SINT08 r 245 1027 1032 6 - 10 NUM_BCD_SINT08_debug R 246 1027 1032 6 - 10 NUM_BCD_SINT09 r 247 1033 1038 6 - 10 NUM_BCD_SINT09_debug R 248 1033 1038 6 - 10 NUM_BCD_SINT10 r 249 1039 1047 9 - 10 NUM_BCD_SINT10_debug R 250 1039 1047 9 - 10 NUM_BCD_SINT11 r 251 1048 1057 10 - 10 NUM_BCD_SINT11_debug R 252 1048 1057 10 - 10 NUM_BCD_SINT12 r 253 1058 1067 10 - 10 NUM_BCD_SINT12_debug R 254 1058 1067 10 - 10 NUM_BCD_SINT13 r 255 1068 1078 11 - 10 NUM_BCD_SINT13_debug R 256 1068 1078 11 - 10 NUM_BCD_SINT14 r 257 1079 1097 19 - 10 NUM_BCD_SINT14_debug R 258 1079 1097 19 - 10 NUM_BCD_DEC01 r 259 1098 1099 2 - 10 NUM_BCD_DEC01_debug R 260 1098 1099 2 - 10 NUM_BCD_DEC02 r 261 1100 1102 3 - 10 NUM_BCD_DEC02_debug R 262 1100 1102 3 - 10 NUM_BCD_DEC03 r 263 1103 1105 3 - 10 NUM_BCD_DEC03_debug R 264 1103 1105 3 - 10 NUM_BCD_DEC04 r 265 1106 1110 5 - 10 NUM_BCD_DEC04_debug R 266 1106 1110 5 - 10 NUM_BCD_DEC05 r 267 1111 1115 5 - 10 NUM_BCD_DEC05_debug R 268 1111 1115 5 - 10 NUM_BCD_DEC06 r 269 1116 1121 6 - 10 NUM_BCD_DEC06_debug R 270 1116 1121 6 - 10 NUM_BCD_DEC07 r 271 1122 1130 9 - 10 NUM_BCD_DEC07_debug R 272 1122 1130 9 - 10 NUM_BCD_DEC08 r 273 1131 1140 10 - 10 NUM_BCD_DEC08_debug R 274 1131 1140 10 - 10 NUM_BCD_DEC09 r 275 1141 1150 10 - 10 NUM_BCD_DEC09_debug R 276 1141 1150 10 - 10 NUM_BCD_DEC10 r 277 1151 1165 15 - 10 NUM_BCD_DEC10_debug R 278 1151 1165 15 - 10 NUM_BCD_SDEC01 r 279 1166 1167 2 - 10 NUM_BCD_SDEC01_debug R 280 1166 1167 2 - 10 NUM_BCD_SDEC02 r 281 1168 1170 3 - 10 NUM_BCD_SDEC02_debug R 282 1168 1170 3 - 10 NUM_BCD_SDEC03 r 283 1171 1173 3 - 10 NUM_BCD_SDEC03_debug R 284 1171 1173 3 - 10 NUM_BCD_SDEC04 r 285 1174 1178 5 - 10 NUM_BCD_SDEC04_debug R 286 1174 1178 5 - 10 NUM_BCD_SDEC05 r 287 1179 1183 5 - 10 NUM_BCD_SDEC05_debug R 288 1179 1183 5 - 10 NUM_BCD_SDEC06 r 289 1184 1189 6 - 10 NUM_BCD_SDEC06_debug R 290 1184 1189 6 - 10 NUM_BCD_SDEC07 r 291 1190 1198 9 - 10 NUM_BCD_SDEC07_debug R 292 1190 1198 9 - 10 NUM_BCD_SDEC08 r 293 1199 1208 10 - 10 NUM_BCD_SDEC08_debug R 294 1199 1208 10 - 10 NUM_BCD_SDEC09 r 295 1209 1218 10 - 10 NUM_BCD_SDEC09_debug R 296 1209 1218 10 - 10 NUM_BCD_SDEC10 r 297 1219 1233 15 - 10 NUM_BCD_SDEC10_debug R 298 1219 1233 15 - 10 NUM_SL_STR_INT01 r 299 1234 1243 10 - 10 NUM_SL_STR_INT01_debug R 300 1234 1243 10 - 10 NUM_SL_STR_DEC01 r 301 1244 1248 5 - 10 NUM_SL_STR_DEC01_debug R 302 1244 1248 5 - 10 NUM_ST_STR_INT01 r 303 1249 1258 10 - 10 NUM_ST_STR_INT01_debug R 304 1249 1258 10 - 10 NUM_ST_STR_DEC01 r 305 1259 1263 5 - 10 NUM_ST_STR_DEC01_debug R 306 1259 1263 5 - 10 NUM_SLI_STR_DEC01 r 307 1264 1270 7 - 10 NUM_SLI_STR_DEC01_debug R 308 1264 1270 7 - 10 NUM_STI_STR_DEC01 r 309 1271 1277 7 - 10 NUM_STI_STR_DEC01_debug R 310 1271 1277 7 - 10 NUM_SLI_DEBUG r 311 1278 1284 7 - 10 NUM_SLI_DEBUG_debug R 312 1278 1284 7 - 10 NUM_STI_DEBUG r 313 1285 1291 7 - 10 NUM_STI_DEBUG_debug R 314 1285 1291 7 - 10 FLOAT_01 r 315 1292 1295 4 - 10 FLOAT_01_debug R 316 1292 1295 4 - 10 DOUBLE_01 r 317 1296 1303 8 - 10 DOUBLE_01_debug R 318 1296 1303 8 - 10 COMMON_8_BIN r 319 1304 1307 4 - 10 COMMON_8_BIN_debug R 320 1304 1307 4 - 10 COMMON_S3_BIN r 321 1308 1309 2 - 10 COMMON_S3_BIN_debug R 322 1308 1309 2 - 10 COMMON_S94COMP r 323 1310 1311 2 - 10 COMMON_S94COMP_debug R 324 1310 1311 2 - 10 COMMON_S8_BIN r 325 1312 1315 4 - 10 COMMON_S8_BIN_debug R 326 1312 1315 4 - 10 COMMON_DDC97_BIN r 327 1316 1319 4 - 10 COMMON_DDC97_BIN_debug R 328 1316 1319 4 - 10 COMMON_97COMP3 r 329 1320 1323 4 - 10 COMMON_97COMP3_debug R 330 1320 1323 4 - 10 COMMON_915COMP3 r 331 1324 1331 8 - 10 COMMON_915COMP3_debug R 332 1324 1331 8 - 10 COMMON_S95COMP3 r 333 1332 1334 3 - 10 COMMON_S95COMP3_debug R 334 1332 1334 3 - 10 COMMON_S999DCCOMP3 r 335 1335 1340 6 - 10 COMMON_S999DCCOMP3_debug R 336 1335 1340 6 - 10 COMMON_S913COMP3 r 337 1341 1347 7 - 10 COMMON_S913COMP3_debug R 338 1341 1347 7 - 10 COMMON_S913DCCOMP3 r 339 1348 1355 8 - 10 COMMON_S913DCCOMP3_debug R 340 1348 1355 8 - 10 COMMON_S911DCC2 r 341 1356 1362 7 - 10 COMMON_S911DCC2_debug R 342 1356 1362 7 - 10 COMMON_S910DCC3 r 343 1363 1369 7 - 10 COMMON_S910DCC3_debug R 344 1363 1369 7 - 10 COMMON_S03DDC r 345 1370 1372 3 - 10 COMMON_S03DDC_debug R 346 1370 1372 3 - 10 COMMON_U03DDC r 347 1373 1375 3 - 10 COMMON_U03DDC_debug R 348 1373 1375 3 - 10 COMMON_UPC5DDC r 349 1376 1378 3 - 10 COMMON_UPC5DDC_debug R 350 1376 1378 3 - 10 COMMON_SPC5DDC r 351 1379 1381 3 - 10 COMMON_SPC5DDC_debug R 352 1379 1381 3 - 10 COMMON_UPI5DDC r 353 1382 1384 3 - 10 COMMON_UPI5DDC_debug R 354 1382 1384 3 - 10 COMMON_SPI5DDC r 355 1385 1387 3 - 10 COMMON_SPI5DDC_debug R 356 1385 1387 3 - 10 COMMON_UPC5DISP r 357 1388 1392 5 - 10 COMMON_UPC5DISP_debug R 358 1388 1392 5 - 10 COMMON_UPI5DISP r 359 1393 1397 5 - 10 COMMON_UPI5DISP_debug R 360 1393 1397 5 - 10 COMMON_UPC1BIN r 361 1398 1399 2 - 10 COMMON_UPC1BIN_debug R 362 1398 1399 2 - 10 COMMON_UPI1BIN r 363 1400 1401 2 - 10 COMMON_UPI1BIN_debug R 364 1400 1401 2 - 10 COMMON_UPC3BIN r 365 1402 1403 2 - 10 COMMON_UPC3BIN_debug R 366 1402 1403 2 - 10 COMMON_UPI3BIN r 367 1404 1405 2 - 10 COMMON_UPI3BIN_debug R 368 1404 1405 2 - 10 COMMON_UPC5BIN r 369 1406 1409 4 - 10 COMMON_UPC5BIN_debug R 370 1406 1409 4 - 10 COMMON_UPI5BIN r 371 1410 1413 4 - 10 COMMON_UPI5BIN_debug R 372 1410 1413 4 - 10 COMMON_UPC10BIN r 373 1414 1421 8 - 10 COMMON_UPC10BIN_debug R 374 1414 1421 8 - 10 COMMON_UPI10BIN r 375 1422 1429 8 - 10 COMMON_UPI10BIN_debug R 376 1422 1429 8 - 10 EX_NUM_INT01 r 377 1430 1438 9 - 10 EX_NUM_INT01_debug R 378 1430 1438 9 - 10 EX_NUM_INT02 r 379 1439 1447 9 - 10 EX_NUM_INT02_debug R 380 1439 1447 9 - 10 EX_NUM_INT03 r 381 1448 1456 9 - 10 EX_NUM_INT03_debug R 382 1448 1456 9 - 10 EX_NUM_INT04 r 383 1457 1465 9 - 10 EX_NUM_INT04_debug R 384 1457 1465 9 - 10 EX_NUM_DEC01 r 385 1466 1474 9 - 10 EX_NUM_DEC01_debug R 386 1466 1474 9 - 10 EX_NUM_DEC02 r 387 1475 1483 9 - 10 EX_NUM_DEC02_debug R 388 1475 1483 9 - 10 EX_NUM_DEC03 r 389 1484 1493 10 - 10 EX_NUM_DEC03_debug R 390 1484 1493 10 \ No newline at end of file + 1 RECORD 391 1 1493 1493 + 10 ID r 2 1 4 4 + 10 ID_debug R 3 1 4 4 + 10 STRING_VAL r 4 5 14 10 + 10 STRING_VAL_debug R 5 5 14 10 + 10 NUM_STR_INT01 r 6 15 15 1 + 10 NUM_STR_INT01_debug R 7 15 15 1 + 10 NUM_STR_INT02 r 8 16 17 2 + 10 NUM_STR_INT02_debug R 9 16 17 2 + 10 NUM_STR_INT03 r 10 18 20 3 + 10 NUM_STR_INT03_debug R 11 18 20 3 + 10 NUM_STR_INT04 r 12 21 24 4 + 10 NUM_STR_INT04_debug R 13 21 24 4 + 10 NUM_STR_INT05 r 14 25 29 5 + 10 NUM_STR_INT05_debug R 15 25 29 5 + 10 NUM_STR_INT06 r 16 30 37 8 + 10 NUM_STR_INT06_debug R 17 30 37 8 + 10 NUM_STR_INT07 r 18 38 46 9 + 10 NUM_STR_INT07_debug R 19 38 46 9 + 10 NUM_STR_INT08 r 20 47 56 10 + 10 NUM_STR_INT08_debug R 21 47 56 10 + 10 NUM_STR_INT09 r 22 57 67 11 + 10 NUM_STR_INT09_debug R 23 57 67 11 + 10 NUM_STR_INT10 r 24 68 84 17 + 10 NUM_STR_INT10_debug R 25 68 84 17 + 10 NUM_STR_INT11 r 26 85 102 18 + 10 NUM_STR_INT11_debug R 27 85 102 18 + 10 NUM_STR_INT12 r 28 103 121 19 + 10 NUM_STR_INT12_debug R 29 103 121 19 + 10 NUM_STR_INT13 r 30 122 141 20 + 10 NUM_STR_INT13_debug R 31 122 141 20 + 10 NUM_STR_INT14 r 32 142 178 37 + 10 NUM_STR_INT14_debug R 33 142 178 37 + 10 NUM_STR_SINT02 r 34 179 180 2 + 10 NUM_STR_SINT02_debug R 35 179 180 2 + 10 NUM_STR_SINT03 r 36 181 183 3 + 10 NUM_STR_SINT03_debug R 37 181 183 3 + 10 NUM_STR_SINT04 r 38 184 187 4 + 10 NUM_STR_SINT04_debug R 39 184 187 4 + 10 NUM_STR_SINT05 r 40 188 192 5 + 10 NUM_STR_SINT05_debug R 41 188 192 5 + 10 NUM_STR_SINT06 r 42 193 200 8 + 10 NUM_STR_SINT06_debug R 43 193 200 8 + 10 NUM_STR_SINT07 r 44 201 209 9 + 10 NUM_STR_SINT07_debug R 45 201 209 9 + 10 NUM_STR_SINT08 r 46 210 219 10 + 10 NUM_STR_SINT08_debug R 47 210 219 10 + 10 NUM_STR_SINT09 r 48 220 230 11 + 10 NUM_STR_SINT09_debug R 49 220 230 11 + 10 NUM_STR_SINT10 r 50 231 247 17 + 10 NUM_STR_SINT10_debug R 51 231 247 17 + 10 NUM_STR_SINT11 r 52 248 265 18 + 10 NUM_STR_SINT11_debug R 53 248 265 18 + 10 NUM_STR_SINT12 r 54 266 284 19 + 10 NUM_STR_SINT12_debug R 55 266 284 19 + 10 NUM_STR_SINT13 r 56 285 304 20 + 10 NUM_STR_SINT13_debug R 57 285 304 20 + 10 NUM_STR_SINT14 r 58 305 341 37 + 10 NUM_STR_SINT14_debug R 59 305 341 37 + 10 NUM_STR_DEC01 r 60 342 344 3 + 10 NUM_STR_DEC01_debug R 61 342 344 3 + 10 NUM_STR_DEC02 r 62 345 348 4 + 10 NUM_STR_DEC02_debug R 63 345 348 4 + 10 NUM_STR_DEC03 r 64 349 353 5 + 10 NUM_STR_DEC03_debug R 65 349 353 5 + 10 NUM_STR_DEC04 r 66 354 361 8 + 10 NUM_STR_DEC04_debug R 67 354 361 8 + 10 NUM_STR_DEC05 r 68 362 370 9 + 10 NUM_STR_DEC05_debug R 69 362 370 9 + 10 NUM_STR_DEC06 r 70 371 380 10 + 10 NUM_STR_DEC06_debug R 71 371 380 10 + 10 NUM_STR_DEC07 r 72 381 397 17 + 10 NUM_STR_DEC07_debug R 73 381 397 17 + 10 NUM_STR_DEC08 r 74 398 415 18 + 10 NUM_STR_DEC08_debug R 75 398 415 18 + 10 NUM_STR_DEC09 r 76 416 434 19 + 10 NUM_STR_DEC09_debug R 77 416 434 19 + 10 NUM_STR_DEC10 r 78 435 462 28 + 10 NUM_STR_DEC10_debug R 79 435 462 28 + 10 NUM_STR_SDEC01 r 80 463 465 3 + 10 NUM_STR_SDEC01_debug R 81 463 465 3 + 10 NUM_STR_SDEC02 r 82 466 469 4 + 10 NUM_STR_SDEC02_debug R 83 466 469 4 + 10 NUM_STR_SDEC03 r 84 470 474 5 + 10 NUM_STR_SDEC03_debug R 85 470 474 5 + 10 NUM_STR_SDEC04 r 86 475 482 8 + 10 NUM_STR_SDEC04_debug R 87 475 482 8 + 10 NUM_STR_SDEC05 r 88 483 491 9 + 10 NUM_STR_SDEC05_debug R 89 483 491 9 + 10 NUM_STR_SDEC06 r 90 492 501 10 + 10 NUM_STR_SDEC06_debug R 91 492 501 10 + 10 NUM_STR_SDEC07 r 92 502 518 17 + 10 NUM_STR_SDEC07_debug R 93 502 518 17 + 10 NUM_STR_SDEC08 r 94 519 536 18 + 10 NUM_STR_SDEC08_debug R 95 519 536 18 + 10 NUM_STR_SDEC09 r 96 537 555 19 + 10 NUM_STR_SDEC09_debug R 97 537 555 19 + 10 NUM_STR_SDEC10 r 98 556 583 28 + 10 NUM_STR_SDEC10_debug R 99 556 583 28 + 10 NUM_STR_EDEC03 r 100 584 589 6 + 10 NUM_STR_EDEC03_debug R 101 584 589 6 + 10 NUM_STR_EDEC04 r 102 590 598 9 + 10 NUM_STR_EDEC04_debug R 103 590 598 9 + 10 NUM_STR_EDEC05 r 104 599 608 10 + 10 NUM_STR_EDEC05_debug R 105 599 608 10 + 10 NUM_STR_EDEC06 r 106 609 619 11 + 10 NUM_STR_EDEC06_debug R 107 609 619 11 + 10 NUM_BIN_INT01 r 108 620 621 2 + 10 NUM_BIN_INT01_debug R 109 620 621 2 + 10 NUM_BIN_INT02 r 110 622 623 2 + 10 NUM_BIN_INT02_debug R 111 622 623 2 + 10 NUM_BIN_INT03 r 112 624 625 2 + 10 NUM_BIN_INT03_debug R 113 624 625 2 + 10 NUM_BIN_INT04 r 114 626 627 2 + 10 NUM_BIN_INT04_debug R 115 626 627 2 + 10 NUM_BIN_INT05 r 116 628 631 4 + 10 NUM_BIN_INT05_debug R 117 628 631 4 + 10 NUM_BIN_INT06 r 118 632 635 4 + 10 NUM_BIN_INT06_debug R 119 632 635 4 + 10 NUM_BIN_INT07 r 120 636 639 4 + 10 NUM_BIN_INT07_debug R 121 636 639 4 + 10 NUM_BIN_INT08 r 122 640 647 8 + 10 NUM_BIN_INT08_debug R 123 640 647 8 + 10 NUM_BIN_INT09 r 124 648 655 8 + 10 NUM_BIN_INT09_debug R 125 648 655 8 + 10 NUM_BIN_INT10 r 126 656 663 8 + 10 NUM_BIN_INT10_debug R 127 656 663 8 + 10 NUM_BIN_INT11 r 128 664 671 8 + 10 NUM_BIN_INT11_debug R 129 664 671 8 + 10 NUM_BIN_INT12 r 130 672 680 9 + 10 NUM_BIN_INT12_debug R 131 672 680 9 + 10 NUM_BIN_INT13 r 132 681 689 9 + 10 NUM_BIN_INT13_debug R 133 681 689 9 + 10 NUM_BIN_INT14 r 134 690 705 16 + 10 NUM_BIN_INT14_debug R 135 690 705 16 + 10 NUM_SBIN_SINT01 r 136 706 707 2 + 10 NUM_SBIN_SINT01_debug R 137 706 707 2 + 10 NUM_SBIN_SINT02 r 138 708 709 2 + 10 NUM_SBIN_SINT02_debug R 139 708 709 2 + 10 NUM_SBIN_SINT03 r 140 710 711 2 + 10 NUM_SBIN_SINT03_debug R 141 710 711 2 + 10 NUM_SBIN_SINT04 r 142 712 713 2 + 10 NUM_SBIN_SINT04_debug R 143 712 713 2 + 10 NUM_SBIN_SINT05 r 144 714 717 4 + 10 NUM_SBIN_SINT05_debug R 145 714 717 4 + 10 NUM_SBIN_SINT06 r 146 718 721 4 + 10 NUM_SBIN_SINT06_debug R 147 718 721 4 + 10 NUM_SBIN_SINT07 r 148 722 725 4 + 10 NUM_SBIN_SINT07_debug R 149 722 725 4 + 10 NUM_SBIN_SINT08 r 150 726 733 8 + 10 NUM_SBIN_SINT08_debug R 151 726 733 8 + 10 NUM_SBIN_SINT09 r 152 734 741 8 + 10 NUM_SBIN_SINT09_debug R 153 734 741 8 + 10 NUM_SBIN_SINT10 r 154 742 749 8 + 10 NUM_SBIN_SINT10_debug R 155 742 749 8 + 10 NUM_SBIN_SINT11 r 156 750 757 8 + 10 NUM_SBIN_SINT11_debug R 157 750 757 8 + 10 NUM_SBIN_SINT12 r 158 758 766 9 + 10 NUM_SBIN_SINT12_debug R 159 758 766 9 + 10 NUM_SBIN_SINT13 r 160 767 775 9 + 10 NUM_SBIN_SINT13_debug R 161 767 775 9 + 10 NUM_SBIN_SINT14 r 162 776 791 16 + 10 NUM_SBIN_SINT14_debug R 163 776 791 16 + 10 NUM_BIN_DEC01 r 164 792 793 2 + 10 NUM_BIN_DEC01_debug R 165 792 793 2 + 10 NUM_BIN_DEC02 r 166 794 795 2 + 10 NUM_BIN_DEC02_debug R 167 794 795 2 + 10 NUM_BIN_DEC03 r 168 796 799 4 + 10 NUM_BIN_DEC03_debug R 169 796 799 4 + 10 NUM_BIN_DEC04 r 170 800 803 4 + 10 NUM_BIN_DEC04_debug R 171 800 803 4 + 10 NUM_BIN_DEC05 r 172 804 807 4 + 10 NUM_BIN_DEC05_debug R 173 804 807 4 + 10 NUM_BIN_DEC06 r 174 808 815 8 + 10 NUM_BIN_DEC06_debug R 175 808 815 8 + 10 NUM_BIN_DEC07 r 176 816 823 8 + 10 NUM_BIN_DEC07_debug R 177 816 823 8 + 10 NUM_BIN_DEC08 r 178 824 831 8 + 10 NUM_BIN_DEC08_debug R 179 824 831 8 + 10 NUM_BIN_DEC09 r 180 832 840 9 + 10 NUM_BIN_DEC09_debug R 181 832 840 9 + 10 NUM_BIN_DEC10 r 182 841 852 12 + 10 NUM_BIN_DEC10_debug R 183 841 852 12 + 10 NUM_SBIN_DEC01 r 184 853 854 2 + 10 NUM_SBIN_DEC01_debug R 185 853 854 2 + 10 NUM_SBIN_DEC02 r 186 855 856 2 + 10 NUM_SBIN_DEC02_debug R 187 855 856 2 + 10 NUM_SBIN_DEC03 r 188 857 860 4 + 10 NUM_SBIN_DEC03_debug R 189 857 860 4 + 10 NUM_SBIN_DEC04 r 190 861 864 4 + 10 NUM_SBIN_DEC04_debug R 191 861 864 4 + 10 NUM_SBIN_DEC05 r 192 865 868 4 + 10 NUM_SBIN_DEC05_debug R 193 865 868 4 + 10 NUM_SBIN_DEC06 r 194 869 876 8 + 10 NUM_SBIN_DEC06_debug R 195 869 876 8 + 10 NUM_SBIN_DEC07 r 196 877 884 8 + 10 NUM_SBIN_DEC07_debug R 197 877 884 8 + 10 NUM_SBIN_DEC08 r 198 885 892 8 + 10 NUM_SBIN_DEC08_debug R 199 885 892 8 + 10 NUM_SBIN_DEC09 r 200 893 901 9 + 10 NUM_SBIN_DEC09_debug R 201 893 901 9 + 10 NUM_SBIN_DEC10 r 202 902 913 12 + 10 NUM_SBIN_DEC10_debug R 203 902 913 12 + 10 NUM_BCD_INT01 r 204 914 914 1 + 10 NUM_BCD_INT01_debug R 205 914 914 1 + 10 NUM_BCD_INT02 r 206 915 916 2 + 10 NUM_BCD_INT02_debug R 207 915 916 2 + 10 NUM_BCD_INT03 r 208 917 918 2 + 10 NUM_BCD_INT03_debug R 209 917 918 2 + 10 NUM_BCD_INT04 r 210 919 921 3 + 10 NUM_BCD_INT04_debug R 211 919 921 3 + 10 NUM_BCD_INT05 r 212 922 924 3 + 10 NUM_BCD_INT05_debug R 213 922 924 3 + 10 NUM_BCD_INT06 r 214 925 929 5 + 10 NUM_BCD_INT06_debug R 215 925 929 5 + 10 NUM_BCD_INT07 r 216 930 934 5 + 10 NUM_BCD_INT07_debug R 217 930 934 5 + 10 NUM_BCD_INT08 r 218 935 940 6 + 10 NUM_BCD_INT08_debug R 219 935 940 6 + 10 NUM_BCD_INT09 r 220 941 946 6 + 10 NUM_BCD_INT09_debug R 221 941 946 6 + 10 NUM_BCD_INT10 r 222 947 955 9 + 10 NUM_BCD_INT10_debug R 223 947 955 9 + 10 NUM_BCD_INT11 r 224 956 965 10 + 10 NUM_BCD_INT11_debug R 225 956 965 10 + 10 NUM_BCD_INT12 r 226 966 975 10 + 10 NUM_BCD_INT12_debug R 227 966 975 10 + 10 NUM_BCD_INT13 r 228 976 986 11 + 10 NUM_BCD_INT13_debug R 229 976 986 11 + 10 NUM_BCD_INT14 r 230 987 1005 19 + 10 NUM_BCD_INT14_debug R 231 987 1005 19 + 10 NUM_BCD_SINT01 r 232 1006 1006 1 + 10 NUM_BCD_SINT01_debug R 233 1006 1006 1 + 10 NUM_BCD_SINT02 r 234 1007 1008 2 + 10 NUM_BCD_SINT02_debug R 235 1007 1008 2 + 10 NUM_BCD_SINT03 r 236 1009 1010 2 + 10 NUM_BCD_SINT03_debug R 237 1009 1010 2 + 10 NUM_BCD_SINT04 r 238 1011 1013 3 + 10 NUM_BCD_SINT04_debug R 239 1011 1013 3 + 10 NUM_BCD_SINT05 r 240 1014 1016 3 + 10 NUM_BCD_SINT05_debug R 241 1014 1016 3 + 10 NUM_BCD_SINT06 r 242 1017 1021 5 + 10 NUM_BCD_SINT06_debug R 243 1017 1021 5 + 10 NUM_BCD_SINT07 r 244 1022 1026 5 + 10 NUM_BCD_SINT07_debug R 245 1022 1026 5 + 10 NUM_BCD_SINT08 r 246 1027 1032 6 + 10 NUM_BCD_SINT08_debug R 247 1027 1032 6 + 10 NUM_BCD_SINT09 r 248 1033 1038 6 + 10 NUM_BCD_SINT09_debug R 249 1033 1038 6 + 10 NUM_BCD_SINT10 r 250 1039 1047 9 + 10 NUM_BCD_SINT10_debug R 251 1039 1047 9 + 10 NUM_BCD_SINT11 r 252 1048 1057 10 + 10 NUM_BCD_SINT11_debug R 253 1048 1057 10 + 10 NUM_BCD_SINT12 r 254 1058 1067 10 + 10 NUM_BCD_SINT12_debug R 255 1058 1067 10 + 10 NUM_BCD_SINT13 r 256 1068 1078 11 + 10 NUM_BCD_SINT13_debug R 257 1068 1078 11 + 10 NUM_BCD_SINT14 r 258 1079 1097 19 + 10 NUM_BCD_SINT14_debug R 259 1079 1097 19 + 10 NUM_BCD_DEC01 r 260 1098 1099 2 + 10 NUM_BCD_DEC01_debug R 261 1098 1099 2 + 10 NUM_BCD_DEC02 r 262 1100 1102 3 + 10 NUM_BCD_DEC02_debug R 263 1100 1102 3 + 10 NUM_BCD_DEC03 r 264 1103 1105 3 + 10 NUM_BCD_DEC03_debug R 265 1103 1105 3 + 10 NUM_BCD_DEC04 r 266 1106 1110 5 + 10 NUM_BCD_DEC04_debug R 267 1106 1110 5 + 10 NUM_BCD_DEC05 r 268 1111 1115 5 + 10 NUM_BCD_DEC05_debug R 269 1111 1115 5 + 10 NUM_BCD_DEC06 r 270 1116 1121 6 + 10 NUM_BCD_DEC06_debug R 271 1116 1121 6 + 10 NUM_BCD_DEC07 r 272 1122 1130 9 + 10 NUM_BCD_DEC07_debug R 273 1122 1130 9 + 10 NUM_BCD_DEC08 r 274 1131 1140 10 + 10 NUM_BCD_DEC08_debug R 275 1131 1140 10 + 10 NUM_BCD_DEC09 r 276 1141 1150 10 + 10 NUM_BCD_DEC09_debug R 277 1141 1150 10 + 10 NUM_BCD_DEC10 r 278 1151 1165 15 + 10 NUM_BCD_DEC10_debug R 279 1151 1165 15 + 10 NUM_BCD_SDEC01 r 280 1166 1167 2 + 10 NUM_BCD_SDEC01_debug R 281 1166 1167 2 + 10 NUM_BCD_SDEC02 r 282 1168 1170 3 + 10 NUM_BCD_SDEC02_debug R 283 1168 1170 3 + 10 NUM_BCD_SDEC03 r 284 1171 1173 3 + 10 NUM_BCD_SDEC03_debug R 285 1171 1173 3 + 10 NUM_BCD_SDEC04 r 286 1174 1178 5 + 10 NUM_BCD_SDEC04_debug R 287 1174 1178 5 + 10 NUM_BCD_SDEC05 r 288 1179 1183 5 + 10 NUM_BCD_SDEC05_debug R 289 1179 1183 5 + 10 NUM_BCD_SDEC06 r 290 1184 1189 6 + 10 NUM_BCD_SDEC06_debug R 291 1184 1189 6 + 10 NUM_BCD_SDEC07 r 292 1190 1198 9 + 10 NUM_BCD_SDEC07_debug R 293 1190 1198 9 + 10 NUM_BCD_SDEC08 r 294 1199 1208 10 + 10 NUM_BCD_SDEC08_debug R 295 1199 1208 10 + 10 NUM_BCD_SDEC09 r 296 1209 1218 10 + 10 NUM_BCD_SDEC09_debug R 297 1209 1218 10 + 10 NUM_BCD_SDEC10 r 298 1219 1233 15 + 10 NUM_BCD_SDEC10_debug R 299 1219 1233 15 + 10 NUM_SL_STR_INT01 r 300 1234 1243 10 + 10 NUM_SL_STR_INT01_debug R 301 1234 1243 10 + 10 NUM_SL_STR_DEC01 r 302 1244 1248 5 + 10 NUM_SL_STR_DEC01_debug R 303 1244 1248 5 + 10 NUM_ST_STR_INT01 r 304 1249 1258 10 + 10 NUM_ST_STR_INT01_debug R 305 1249 1258 10 + 10 NUM_ST_STR_DEC01 r 306 1259 1263 5 + 10 NUM_ST_STR_DEC01_debug R 307 1259 1263 5 + 10 NUM_SLI_STR_DEC01 r 308 1264 1270 7 + 10 NUM_SLI_STR_DEC01_debug R 309 1264 1270 7 + 10 NUM_STI_STR_DEC01 r 310 1271 1277 7 + 10 NUM_STI_STR_DEC01_debug R 311 1271 1277 7 + 10 NUM_SLI_DEBUG r 312 1278 1284 7 + 10 NUM_SLI_DEBUG_debug R 313 1278 1284 7 + 10 NUM_STI_DEBUG r 314 1285 1291 7 + 10 NUM_STI_DEBUG_debug R 315 1285 1291 7 + 10 FLOAT_01 r 316 1292 1295 4 + 10 FLOAT_01_debug R 317 1292 1295 4 + 10 DOUBLE_01 r 318 1296 1303 8 + 10 DOUBLE_01_debug R 319 1296 1303 8 + 10 COMMON_8_BIN r 320 1304 1307 4 + 10 COMMON_8_BIN_debug R 321 1304 1307 4 + 10 COMMON_S3_BIN r 322 1308 1309 2 + 10 COMMON_S3_BIN_debug R 323 1308 1309 2 + 10 COMMON_S94COMP r 324 1310 1311 2 + 10 COMMON_S94COMP_debug R 325 1310 1311 2 + 10 COMMON_S8_BIN r 326 1312 1315 4 + 10 COMMON_S8_BIN_debug R 327 1312 1315 4 + 10 COMMON_DDC97_BIN r 328 1316 1319 4 + 10 COMMON_DDC97_BIN_debug R 329 1316 1319 4 + 10 COMMON_97COMP3 r 330 1320 1323 4 + 10 COMMON_97COMP3_debug R 331 1320 1323 4 + 10 COMMON_915COMP3 r 332 1324 1331 8 + 10 COMMON_915COMP3_debug R 333 1324 1331 8 + 10 COMMON_S95COMP3 r 334 1332 1334 3 + 10 COMMON_S95COMP3_debug R 335 1332 1334 3 + 10 COMMON_S999DCCOMP3 r 336 1335 1340 6 + 10 COMMON_S999DCCOMP3_debug R 337 1335 1340 6 + 10 COMMON_S913COMP3 r 338 1341 1347 7 + 10 COMMON_S913COMP3_debug R 339 1341 1347 7 + 10 COMMON_S913DCCOMP3 r 340 1348 1355 8 + 10 COMMON_S913DCCOMP3_debug R 341 1348 1355 8 + 10 COMMON_S911DCC2 r 342 1356 1362 7 + 10 COMMON_S911DCC2_debug R 343 1356 1362 7 + 10 COMMON_S910DCC3 r 344 1363 1369 7 + 10 COMMON_S910DCC3_debug R 345 1363 1369 7 + 10 COMMON_S03DDC r 346 1370 1372 3 + 10 COMMON_S03DDC_debug R 347 1370 1372 3 + 10 COMMON_U03DDC r 348 1373 1375 3 + 10 COMMON_U03DDC_debug R 349 1373 1375 3 + 10 COMMON_UPC5DDC r 350 1376 1378 3 + 10 COMMON_UPC5DDC_debug R 351 1376 1378 3 + 10 COMMON_SPC5DDC r 352 1379 1381 3 + 10 COMMON_SPC5DDC_debug R 353 1379 1381 3 + 10 COMMON_UPI5DDC r 354 1382 1384 3 + 10 COMMON_UPI5DDC_debug R 355 1382 1384 3 + 10 COMMON_SPI5DDC r 356 1385 1387 3 + 10 COMMON_SPI5DDC_debug R 357 1385 1387 3 + 10 COMMON_UPC5DISP r 358 1388 1392 5 + 10 COMMON_UPC5DISP_debug R 359 1388 1392 5 + 10 COMMON_UPI5DISP r 360 1393 1397 5 + 10 COMMON_UPI5DISP_debug R 361 1393 1397 5 + 10 COMMON_UPC1BIN r 362 1398 1399 2 + 10 COMMON_UPC1BIN_debug R 363 1398 1399 2 + 10 COMMON_UPI1BIN r 364 1400 1401 2 + 10 COMMON_UPI1BIN_debug R 365 1400 1401 2 + 10 COMMON_UPC3BIN r 366 1402 1403 2 + 10 COMMON_UPC3BIN_debug R 367 1402 1403 2 + 10 COMMON_UPI3BIN r 368 1404 1405 2 + 10 COMMON_UPI3BIN_debug R 369 1404 1405 2 + 10 COMMON_UPC5BIN r 370 1406 1409 4 + 10 COMMON_UPC5BIN_debug R 371 1406 1409 4 + 10 COMMON_UPI5BIN r 372 1410 1413 4 + 10 COMMON_UPI5BIN_debug R 373 1410 1413 4 + 10 COMMON_UPC10BIN r 374 1414 1421 8 + 10 COMMON_UPC10BIN_debug R 375 1414 1421 8 + 10 COMMON_UPI10BIN r 376 1422 1429 8 + 10 COMMON_UPI10BIN_debug R 377 1422 1429 8 + 10 EX_NUM_INT01 r 378 1430 1438 9 + 10 EX_NUM_INT01_debug R 379 1430 1438 9 + 10 EX_NUM_INT02 r 380 1439 1447 9 + 10 EX_NUM_INT02_debug R 381 1439 1447 9 + 10 EX_NUM_INT03 r 382 1448 1456 9 + 10 EX_NUM_INT03_debug R 383 1448 1456 9 + 10 EX_NUM_INT04 r 384 1457 1465 9 + 10 EX_NUM_INT04_debug R 385 1457 1465 9 + 10 EX_NUM_DEC01 r 386 1466 1474 9 + 10 EX_NUM_DEC01_debug R 387 1466 1474 9 + 10 EX_NUM_DEC02 r 388 1475 1483 9 + 10 EX_NUM_DEC02_debug R 389 1475 1483 9 + 10 EX_NUM_DEC03 r 390 1484 1493 10 + 10 EX_NUM_DEC03_debug R 391 1484 1493 10 \ No newline at end of file diff --git a/data/test4_expected/test4_schema_actual.json b/data/test4_expected/test4_schema_actual.json deleted file mode 100644 index 0e636e2e..00000000 --- a/data/test4_expected/test4_schema_actual.json +++ /dev/null @@ -1 +0,0 @@ -{"type":"struct","fields":[{"name":"File_Id","type":"integer","nullable":false,"metadata":{}},{"name":"Record_Id","type":"long","nullable":false,"metadata":{}},{"name":"SEGMENT_ID","type":"string","nullable":true,"metadata":{}},{"name":"COMPANY_ID","type":"string","nullable":true,"metadata":{}},{"name":"STATIC_DETAILS","type":{"type":"struct","fields":[{"name":"COMPANY_NAME","type":"string","nullable":true,"metadata":{}},{"name":"ADDRESS","type":"string","nullable":true,"metadata":{}},{"name":"TAXPAYER","type":{"type":"struct","fields":[{"name":"TAXPAYER_TYPE","type":"string","nullable":true,"metadata":{}},{"name":"TAXPAYER_STR","type":"string","nullable":true,"metadata":{}},{"name":"TAXPAYER_NUM","type":"integer","nullable":true,"metadata":{}}]},"nullable":true,"metadata":{}},{"name":"CONTACTS","type":{"type":"array","elementType":{"type":"struct","fields":[{"name":"PHONE_NUMBER","type":"string","nullable":true,"metadata":{}},{"name":"CONTACT_PERSON","type":"string","nullable":true,"metadata":{}}]},"containsNull":true},"nullable":true,"metadata":{}}]},"nullable":true,"metadata":{}}]} \ No newline at end of file diff --git a/data/test6_expected/test6_layout.txt b/data/test6_expected/test6_layout.txt index bb965830..718f24ac 100644 --- a/data/test6_expected/test6_layout.txt +++ b/data/test6_expected/test6_layout.txt @@ -1,198 +1,198 @@ -------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH -RECORD 1 1493 1493 - 10 ID 1 1 4 4 - 10 STRING_VAL 2 5 14 10 - 10 NUM_STR_INT01 3 15 15 1 - 10 NUM_STR_INT02 4 16 17 2 - 10 NUM_STR_INT03 5 18 20 3 - 10 NUM_STR_INT04 6 21 24 4 - 10 NUM_STR_INT05 7 25 29 5 - 10 NUM_STR_INT06 8 30 37 8 - 10 NUM_STR_INT07 9 38 46 9 - 10 NUM_STR_INT08 10 47 56 10 - 10 NUM_STR_INT09 11 57 67 11 - 10 NUM_STR_INT10 12 68 84 17 - 10 NUM_STR_INT11 13 85 102 18 - 10 NUM_STR_INT12 14 103 121 19 - 10 NUM_STR_INT13 15 122 141 20 - 10 NUM_STR_INT14 16 142 178 37 - 10 NUM_STR_SINT02 17 179 180 2 - 10 NUM_STR_SINT03 18 181 183 3 - 10 NUM_STR_SINT04 19 184 187 4 - 10 NUM_STR_SINT05 20 188 192 5 - 10 NUM_STR_SINT06 21 193 200 8 - 10 NUM_STR_SINT07 22 201 209 9 - 10 NUM_STR_SINT08 23 210 219 10 - 10 NUM_STR_SINT09 24 220 230 11 - 10 NUM_STR_SINT10 25 231 247 17 - 10 NUM_STR_SINT11 26 248 265 18 - 10 NUM_STR_SINT12 27 266 284 19 - 10 NUM_STR_SINT13 28 285 304 20 - 10 NUM_STR_SINT14 29 305 341 37 - 10 NUM_STR_DEC01 30 342 344 3 - 10 NUM_STR_DEC02 31 345 348 4 - 10 NUM_STR_DEC03 32 349 353 5 - 10 NUM_STR_DEC04 33 354 361 8 - 10 NUM_STR_DEC05 34 362 370 9 - 10 NUM_STR_DEC06 35 371 380 10 - 10 NUM_STR_DEC07 36 381 397 17 - 10 NUM_STR_DEC08 37 398 415 18 - 10 NUM_STR_DEC09 38 416 434 19 - 10 NUM_STR_DEC10 39 435 462 28 - 10 NUM_STR_SDEC01 40 463 465 3 - 10 NUM_STR_SDEC02 41 466 469 4 - 10 NUM_STR_SDEC03 42 470 474 5 - 10 NUM_STR_SDEC04 43 475 482 8 - 10 NUM_STR_SDEC05 44 483 491 9 - 10 NUM_STR_SDEC06 45 492 501 10 - 10 NUM_STR_SDEC07 46 502 518 17 - 10 NUM_STR_SDEC08 47 519 536 18 - 10 NUM_STR_SDEC09 48 537 555 19 - 10 NUM_STR_SDEC10 49 556 583 28 - 10 NUM_STR_EDEC03 50 584 589 6 - 10 NUM_STR_EDEC04 51 590 598 9 - 10 NUM_STR_EDEC05 52 599 608 10 - 10 NUM_STR_EDEC06 53 609 619 11 - 10 NUM_BIN_INT01 54 620 621 2 - 10 NUM_BIN_INT02 55 622 623 2 - 10 NUM_BIN_INT03 56 624 625 2 - 10 NUM_BIN_INT04 57 626 627 2 - 10 NUM_BIN_INT05 58 628 631 4 - 10 NUM_BIN_INT06 59 632 635 4 - 10 NUM_BIN_INT07 60 636 639 4 - 10 NUM_BIN_INT08 61 640 647 8 - 10 NUM_BIN_INT09 62 648 655 8 - 10 NUM_BIN_INT10 63 656 663 8 - 10 NUM_BIN_INT11 64 664 671 8 - 10 NUM_BIN_INT12 65 672 680 9 - 10 NUM_BIN_INT13 66 681 689 9 - 10 NUM_BIN_INT14 67 690 705 16 - 10 NUM_SBIN_SINT01 68 706 707 2 - 10 NUM_SBIN_SINT02 69 708 709 2 - 10 NUM_SBIN_SINT03 70 710 711 2 - 10 NUM_SBIN_SINT04 71 712 713 2 - 10 NUM_SBIN_SINT05 72 714 717 4 - 10 NUM_SBIN_SINT06 73 718 721 4 - 10 NUM_SBIN_SINT07 74 722 725 4 - 10 NUM_SBIN_SINT08 75 726 733 8 - 10 NUM_SBIN_SINT09 76 734 741 8 - 10 NUM_SBIN_SINT10 77 742 749 8 - 10 NUM_SBIN_SINT11 78 750 757 8 - 10 NUM_SBIN_SINT12 79 758 766 9 - 10 NUM_SBIN_SINT13 80 767 775 9 - 10 NUM_SBIN_SINT14 81 776 791 16 - 10 NUM_BIN_DEC01 82 792 793 2 - 10 NUM_BIN_DEC02 83 794 795 2 - 10 NUM_BIN_DEC03 84 796 799 4 - 10 NUM_BIN_DEC04 85 800 803 4 - 10 NUM_BIN_DEC05 86 804 807 4 - 10 NUM_BIN_DEC06 87 808 815 8 - 10 NUM_BIN_DEC07 88 816 823 8 - 10 NUM_BIN_DEC08 89 824 831 8 - 10 NUM_BIN_DEC09 90 832 840 9 - 10 NUM_BIN_DEC10 91 841 852 12 - 10 NUM_SBIN_DEC01 92 853 854 2 - 10 NUM_SBIN_DEC02 93 855 856 2 - 10 NUM_SBIN_DEC03 94 857 860 4 - 10 NUM_SBIN_DEC04 95 861 864 4 - 10 NUM_SBIN_DEC05 96 865 868 4 - 10 NUM_SBIN_DEC06 97 869 876 8 - 10 NUM_SBIN_DEC07 98 877 884 8 - 10 NUM_SBIN_DEC08 99 885 892 8 - 10 NUM_SBIN_DEC09 100 893 901 9 - 10 NUM_SBIN_DEC10 101 902 913 12 - 10 NUM_BCD_INT01 102 914 914 1 - 10 NUM_BCD_INT02 103 915 916 2 - 10 NUM_BCD_INT03 104 917 918 2 - 10 NUM_BCD_INT04 105 919 921 3 - 10 NUM_BCD_INT05 106 922 924 3 - 10 NUM_BCD_INT06 107 925 929 5 - 10 NUM_BCD_INT07 108 930 934 5 - 10 NUM_BCD_INT08 109 935 940 6 - 10 NUM_BCD_INT09 110 941 946 6 - 10 NUM_BCD_INT10 111 947 955 9 - 10 NUM_BCD_INT11 112 956 965 10 - 10 NUM_BCD_INT12 113 966 975 10 - 10 NUM_BCD_INT13 114 976 986 11 - 10 NUM_BCD_INT14 115 987 1005 19 - 10 NUM_BCD_SINT01 116 1006 1006 1 - 10 NUM_BCD_SINT02 117 1007 1008 2 - 10 NUM_BCD_SINT03 118 1009 1010 2 - 10 NUM_BCD_SINT04 119 1011 1013 3 - 10 NUM_BCD_SINT05 120 1014 1016 3 - 10 NUM_BCD_SINT06 121 1017 1021 5 - 10 NUM_BCD_SINT07 122 1022 1026 5 - 10 NUM_BCD_SINT08 123 1027 1032 6 - 10 NUM_BCD_SINT09 124 1033 1038 6 - 10 NUM_BCD_SINT10 125 1039 1047 9 - 10 NUM_BCD_SINT11 126 1048 1057 10 - 10 NUM_BCD_SINT12 127 1058 1067 10 - 10 NUM_BCD_SINT13 128 1068 1078 11 - 10 NUM_BCD_SINT14 129 1079 1097 19 - 10 NUM_BCD_DEC01 130 1098 1099 2 - 10 NUM_BCD_DEC02 131 1100 1102 3 - 10 NUM_BCD_DEC03 132 1103 1105 3 - 10 NUM_BCD_DEC04 133 1106 1110 5 - 10 NUM_BCD_DEC05 134 1111 1115 5 - 10 NUM_BCD_DEC06 135 1116 1121 6 - 10 NUM_BCD_DEC07 136 1122 1130 9 - 10 NUM_BCD_DEC08 137 1131 1140 10 - 10 NUM_BCD_DEC09 138 1141 1150 10 - 10 NUM_BCD_DEC10 139 1151 1165 15 - 10 NUM_BCD_SDEC01 140 1166 1167 2 - 10 NUM_BCD_SDEC02 141 1168 1170 3 - 10 NUM_BCD_SDEC03 142 1171 1173 3 - 10 NUM_BCD_SDEC04 143 1174 1178 5 - 10 NUM_BCD_SDEC05 144 1179 1183 5 - 10 NUM_BCD_SDEC06 145 1184 1189 6 - 10 NUM_BCD_SDEC07 146 1190 1198 9 - 10 NUM_BCD_SDEC08 147 1199 1208 10 - 10 NUM_BCD_SDEC09 148 1209 1218 10 - 10 NUM_BCD_SDEC10 149 1219 1233 15 - 10 NUM_SL_STR_INT01 150 1234 1243 10 - 10 NUM_SL_STR_DEC01 151 1244 1248 5 - 10 NUM_ST_STR_INT01 152 1249 1258 10 - 10 NUM_ST_STR_DEC01 153 1259 1263 5 - 10 NUM_SLI_STR_DEC01 154 1264 1270 7 - 10 NUM_STI_STR_DEC01 155 1271 1277 7 - 10 NUM_SLI_DEBUG 156 1278 1284 7 - 10 NUM_STI_DEBUG 157 1285 1291 7 - 10 FLOAT_01 158 1292 1295 4 - 10 DOUBLE_01 159 1296 1303 8 - 10 COMMON_8_BIN 160 1304 1307 4 - 10 COMMON_S3_BIN 161 1308 1309 2 - 10 COMMON_S94COMP 162 1310 1311 2 - 10 COMMON_S8_BIN 163 1312 1315 4 - 10 COMMON_DDC97_BIN 164 1316 1319 4 - 10 COMMON_97COMP3 165 1320 1323 4 - 10 COMMON_915COMP3 166 1324 1331 8 - 10 COMMON_S95COMP3 167 1332 1334 3 - 10 COMMON_S999DCCOMP3 168 1335 1340 6 - 10 COMMON_S913COMP3 169 1341 1347 7 - 10 COMMON_S913DCCOMP3 170 1348 1355 8 - 10 COMMON_S911DCC2 171 1356 1362 7 - 10 COMMON_S910DCC3 172 1363 1369 7 - 10 COMMON_S03DDC 173 1370 1372 3 - 10 COMMON_U03DDC 174 1373 1375 3 - 10 COMMON_UPC5DDC 175 1376 1378 3 - 10 COMMON_SPC5DDC 176 1379 1381 3 - 10 COMMON_UPI5DDC 177 1382 1384 3 - 10 COMMON_SPI5DDC 178 1385 1387 3 - 10 COMMON_UPC5DISP 179 1388 1392 5 - 10 COMMON_UPI5DISP 180 1393 1397 5 - 10 COMMON_UPC1BIN 181 1398 1399 2 - 10 COMMON_UPI1BIN 182 1400 1401 2 - 10 COMMON_UPC3BIN 183 1402 1403 2 - 10 COMMON_UPI3BIN 184 1404 1405 2 - 10 COMMON_UPC5BIN 185 1406 1409 4 - 10 COMMON_UPI5BIN 186 1410 1413 4 - 10 COMMON_UPC10BIN 187 1414 1421 8 - 10 COMMON_UPI10BIN 188 1422 1429 8 - 10 EX_NUM_INT01 189 1430 1438 9 - 10 EX_NUM_INT02 190 1439 1447 9 - 10 EX_NUM_INT03 191 1448 1456 9 - 10 EX_NUM_INT04 192 1457 1465 9 - 10 EX_NUM_DEC01 193 1466 1474 9 - 10 EX_NUM_DEC02 194 1475 1483 9 - 10 EX_NUM_DEC03 195 1484 1493 10 \ No newline at end of file + 1 RECORD 196 1 1493 1493 + 10 ID 2 1 4 4 + 10 STRING_VAL 3 5 14 10 + 10 NUM_STR_INT01 4 15 15 1 + 10 NUM_STR_INT02 5 16 17 2 + 10 NUM_STR_INT03 6 18 20 3 + 10 NUM_STR_INT04 7 21 24 4 + 10 NUM_STR_INT05 8 25 29 5 + 10 NUM_STR_INT06 9 30 37 8 + 10 NUM_STR_INT07 10 38 46 9 + 10 NUM_STR_INT08 11 47 56 10 + 10 NUM_STR_INT09 12 57 67 11 + 10 NUM_STR_INT10 13 68 84 17 + 10 NUM_STR_INT11 14 85 102 18 + 10 NUM_STR_INT12 15 103 121 19 + 10 NUM_STR_INT13 16 122 141 20 + 10 NUM_STR_INT14 17 142 178 37 + 10 NUM_STR_SINT02 18 179 180 2 + 10 NUM_STR_SINT03 19 181 183 3 + 10 NUM_STR_SINT04 20 184 187 4 + 10 NUM_STR_SINT05 21 188 192 5 + 10 NUM_STR_SINT06 22 193 200 8 + 10 NUM_STR_SINT07 23 201 209 9 + 10 NUM_STR_SINT08 24 210 219 10 + 10 NUM_STR_SINT09 25 220 230 11 + 10 NUM_STR_SINT10 26 231 247 17 + 10 NUM_STR_SINT11 27 248 265 18 + 10 NUM_STR_SINT12 28 266 284 19 + 10 NUM_STR_SINT13 29 285 304 20 + 10 NUM_STR_SINT14 30 305 341 37 + 10 NUM_STR_DEC01 31 342 344 3 + 10 NUM_STR_DEC02 32 345 348 4 + 10 NUM_STR_DEC03 33 349 353 5 + 10 NUM_STR_DEC04 34 354 361 8 + 10 NUM_STR_DEC05 35 362 370 9 + 10 NUM_STR_DEC06 36 371 380 10 + 10 NUM_STR_DEC07 37 381 397 17 + 10 NUM_STR_DEC08 38 398 415 18 + 10 NUM_STR_DEC09 39 416 434 19 + 10 NUM_STR_DEC10 40 435 462 28 + 10 NUM_STR_SDEC01 41 463 465 3 + 10 NUM_STR_SDEC02 42 466 469 4 + 10 NUM_STR_SDEC03 43 470 474 5 + 10 NUM_STR_SDEC04 44 475 482 8 + 10 NUM_STR_SDEC05 45 483 491 9 + 10 NUM_STR_SDEC06 46 492 501 10 + 10 NUM_STR_SDEC07 47 502 518 17 + 10 NUM_STR_SDEC08 48 519 536 18 + 10 NUM_STR_SDEC09 49 537 555 19 + 10 NUM_STR_SDEC10 50 556 583 28 + 10 NUM_STR_EDEC03 51 584 589 6 + 10 NUM_STR_EDEC04 52 590 598 9 + 10 NUM_STR_EDEC05 53 599 608 10 + 10 NUM_STR_EDEC06 54 609 619 11 + 10 NUM_BIN_INT01 55 620 621 2 + 10 NUM_BIN_INT02 56 622 623 2 + 10 NUM_BIN_INT03 57 624 625 2 + 10 NUM_BIN_INT04 58 626 627 2 + 10 NUM_BIN_INT05 59 628 631 4 + 10 NUM_BIN_INT06 60 632 635 4 + 10 NUM_BIN_INT07 61 636 639 4 + 10 NUM_BIN_INT08 62 640 647 8 + 10 NUM_BIN_INT09 63 648 655 8 + 10 NUM_BIN_INT10 64 656 663 8 + 10 NUM_BIN_INT11 65 664 671 8 + 10 NUM_BIN_INT12 66 672 680 9 + 10 NUM_BIN_INT13 67 681 689 9 + 10 NUM_BIN_INT14 68 690 705 16 + 10 NUM_SBIN_SINT01 69 706 707 2 + 10 NUM_SBIN_SINT02 70 708 709 2 + 10 NUM_SBIN_SINT03 71 710 711 2 + 10 NUM_SBIN_SINT04 72 712 713 2 + 10 NUM_SBIN_SINT05 73 714 717 4 + 10 NUM_SBIN_SINT06 74 718 721 4 + 10 NUM_SBIN_SINT07 75 722 725 4 + 10 NUM_SBIN_SINT08 76 726 733 8 + 10 NUM_SBIN_SINT09 77 734 741 8 + 10 NUM_SBIN_SINT10 78 742 749 8 + 10 NUM_SBIN_SINT11 79 750 757 8 + 10 NUM_SBIN_SINT12 80 758 766 9 + 10 NUM_SBIN_SINT13 81 767 775 9 + 10 NUM_SBIN_SINT14 82 776 791 16 + 10 NUM_BIN_DEC01 83 792 793 2 + 10 NUM_BIN_DEC02 84 794 795 2 + 10 NUM_BIN_DEC03 85 796 799 4 + 10 NUM_BIN_DEC04 86 800 803 4 + 10 NUM_BIN_DEC05 87 804 807 4 + 10 NUM_BIN_DEC06 88 808 815 8 + 10 NUM_BIN_DEC07 89 816 823 8 + 10 NUM_BIN_DEC08 90 824 831 8 + 10 NUM_BIN_DEC09 91 832 840 9 + 10 NUM_BIN_DEC10 92 841 852 12 + 10 NUM_SBIN_DEC01 93 853 854 2 + 10 NUM_SBIN_DEC02 94 855 856 2 + 10 NUM_SBIN_DEC03 95 857 860 4 + 10 NUM_SBIN_DEC04 96 861 864 4 + 10 NUM_SBIN_DEC05 97 865 868 4 + 10 NUM_SBIN_DEC06 98 869 876 8 + 10 NUM_SBIN_DEC07 99 877 884 8 + 10 NUM_SBIN_DEC08 100 885 892 8 + 10 NUM_SBIN_DEC09 101 893 901 9 + 10 NUM_SBIN_DEC10 102 902 913 12 + 10 NUM_BCD_INT01 103 914 914 1 + 10 NUM_BCD_INT02 104 915 916 2 + 10 NUM_BCD_INT03 105 917 918 2 + 10 NUM_BCD_INT04 106 919 921 3 + 10 NUM_BCD_INT05 107 922 924 3 + 10 NUM_BCD_INT06 108 925 929 5 + 10 NUM_BCD_INT07 109 930 934 5 + 10 NUM_BCD_INT08 110 935 940 6 + 10 NUM_BCD_INT09 111 941 946 6 + 10 NUM_BCD_INT10 112 947 955 9 + 10 NUM_BCD_INT11 113 956 965 10 + 10 NUM_BCD_INT12 114 966 975 10 + 10 NUM_BCD_INT13 115 976 986 11 + 10 NUM_BCD_INT14 116 987 1005 19 + 10 NUM_BCD_SINT01 117 1006 1006 1 + 10 NUM_BCD_SINT02 118 1007 1008 2 + 10 NUM_BCD_SINT03 119 1009 1010 2 + 10 NUM_BCD_SINT04 120 1011 1013 3 + 10 NUM_BCD_SINT05 121 1014 1016 3 + 10 NUM_BCD_SINT06 122 1017 1021 5 + 10 NUM_BCD_SINT07 123 1022 1026 5 + 10 NUM_BCD_SINT08 124 1027 1032 6 + 10 NUM_BCD_SINT09 125 1033 1038 6 + 10 NUM_BCD_SINT10 126 1039 1047 9 + 10 NUM_BCD_SINT11 127 1048 1057 10 + 10 NUM_BCD_SINT12 128 1058 1067 10 + 10 NUM_BCD_SINT13 129 1068 1078 11 + 10 NUM_BCD_SINT14 130 1079 1097 19 + 10 NUM_BCD_DEC01 131 1098 1099 2 + 10 NUM_BCD_DEC02 132 1100 1102 3 + 10 NUM_BCD_DEC03 133 1103 1105 3 + 10 NUM_BCD_DEC04 134 1106 1110 5 + 10 NUM_BCD_DEC05 135 1111 1115 5 + 10 NUM_BCD_DEC06 136 1116 1121 6 + 10 NUM_BCD_DEC07 137 1122 1130 9 + 10 NUM_BCD_DEC08 138 1131 1140 10 + 10 NUM_BCD_DEC09 139 1141 1150 10 + 10 NUM_BCD_DEC10 140 1151 1165 15 + 10 NUM_BCD_SDEC01 141 1166 1167 2 + 10 NUM_BCD_SDEC02 142 1168 1170 3 + 10 NUM_BCD_SDEC03 143 1171 1173 3 + 10 NUM_BCD_SDEC04 144 1174 1178 5 + 10 NUM_BCD_SDEC05 145 1179 1183 5 + 10 NUM_BCD_SDEC06 146 1184 1189 6 + 10 NUM_BCD_SDEC07 147 1190 1198 9 + 10 NUM_BCD_SDEC08 148 1199 1208 10 + 10 NUM_BCD_SDEC09 149 1209 1218 10 + 10 NUM_BCD_SDEC10 150 1219 1233 15 + 10 NUM_SL_STR_INT01 151 1234 1243 10 + 10 NUM_SL_STR_DEC01 152 1244 1248 5 + 10 NUM_ST_STR_INT01 153 1249 1258 10 + 10 NUM_ST_STR_DEC01 154 1259 1263 5 + 10 NUM_SLI_STR_DEC01 155 1264 1270 7 + 10 NUM_STI_STR_DEC01 156 1271 1277 7 + 10 NUM_SLI_DEBUG 157 1278 1284 7 + 10 NUM_STI_DEBUG 158 1285 1291 7 + 10 FLOAT_01 159 1292 1295 4 + 10 DOUBLE_01 160 1296 1303 8 + 10 COMMON_8_BIN 161 1304 1307 4 + 10 COMMON_S3_BIN 162 1308 1309 2 + 10 COMMON_S94COMP 163 1310 1311 2 + 10 COMMON_S8_BIN 164 1312 1315 4 + 10 COMMON_DDC97_BIN 165 1316 1319 4 + 10 COMMON_97COMP3 166 1320 1323 4 + 10 COMMON_915COMP3 167 1324 1331 8 + 10 COMMON_S95COMP3 168 1332 1334 3 + 10 COMMON_S999DCCOMP3 169 1335 1340 6 + 10 COMMON_S913COMP3 170 1341 1347 7 + 10 COMMON_S913DCCOMP3 171 1348 1355 8 + 10 COMMON_S911DCC2 172 1356 1362 7 + 10 COMMON_S910DCC3 173 1363 1369 7 + 10 COMMON_S03DDC 174 1370 1372 3 + 10 COMMON_U03DDC 175 1373 1375 3 + 10 COMMON_UPC5DDC 176 1376 1378 3 + 10 COMMON_SPC5DDC 177 1379 1381 3 + 10 COMMON_UPI5DDC 178 1382 1384 3 + 10 COMMON_SPI5DDC 179 1385 1387 3 + 10 COMMON_UPC5DISP 180 1388 1392 5 + 10 COMMON_UPI5DISP 181 1393 1397 5 + 10 COMMON_UPC1BIN 182 1398 1399 2 + 10 COMMON_UPI1BIN 183 1400 1401 2 + 10 COMMON_UPC3BIN 184 1402 1403 2 + 10 COMMON_UPI3BIN 185 1404 1405 2 + 10 COMMON_UPC5BIN 186 1406 1409 4 + 10 COMMON_UPI5BIN 187 1410 1413 4 + 10 COMMON_UPC10BIN 188 1414 1421 8 + 10 COMMON_UPI10BIN 189 1422 1429 8 + 10 EX_NUM_INT01 190 1430 1438 9 + 10 EX_NUM_INT02 191 1439 1447 9 + 10 EX_NUM_INT03 192 1448 1456 9 + 10 EX_NUM_INT04 193 1457 1465 9 + 10 EX_NUM_DEC01 194 1466 1474 9 + 10 EX_NUM_DEC02 195 1475 1483 9 + 10 EX_NUM_DEC03 196 1484 1493 10 \ No newline at end of file diff --git a/data/test7_expected/test7_layout.txt b/data/test7_expected/test7_layout.txt index 0237e2ab..953a14ca 100644 --- a/data/test7_expected/test7_layout.txt +++ b/data/test7_expected/test7_layout.txt @@ -1,22 +1,22 @@ -------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH -RECORD 1 60 60 - 5 FILLER 1 1 1 1 - 5 COMPANY_PREFIX 2 2 4 3 - 5 FILLER 3 5 5 1 - 5 FILLER 4 6 6 1 - 5 COMPANY_NAME r 5 7 15 9 - 5 FILLER R 9 7 15 9 - 10 STR1 7 7 11 5 - 10 STR2 8 12 13 2 - 10 FILLER 9 14 14 1 - 5 ADDRESS r 10 16 45 30 - 5 FILLER R 13 16 45 30 - 10 STR4 12 16 25 10 - 10 FILLER 13 26 45 20 - 5 FILL_FIELD r 16 46 52 7 - 10 FILLER 15 46 50 5 - 10 FILLER 16 51 52 2 - 5 CONTACT_PERSON R 18 46 52 7 - 10 FIRST_NAME 18 46 51 6 - 5 AMOUNT 19 53 60 8 \ No newline at end of file + 1 RECORD 20 1 60 60 + 5 FILLER 2 1 1 1 + 5 COMPANY_PREFIX 3 2 4 3 + 5 FILLER 4 5 5 1 + 5 FILLER 5 6 6 1 + 5 COMPANY_NAME r 6 7 15 9 + 5 FILLER R 10 7 15 9 + 10 STR1 8 7 11 5 + 10 STR2 9 12 13 2 + 10 FILLER 10 14 14 1 + 5 ADDRESS r 11 16 45 30 + 5 FILLER R 14 16 45 30 + 10 STR4 13 16 25 10 + 10 FILLER 14 26 45 20 + 5 FILL_FIELD r 17 46 52 7 + 10 FILLER 16 46 50 5 + 10 FILLER 17 51 52 2 + 5 CONTACT_PERSON R 19 46 52 7 + 10 FIRST_NAME 19 46 51 6 + 5 AMOUNT 20 53 60 8 \ No newline at end of file diff --git a/data/test7_expected/test7a_layout.txt b/data/test7_expected/test7a_layout.txt index 0a1ae787..f75cfe8a 100644 --- a/data/test7_expected/test7a_layout.txt +++ b/data/test7_expected/test7a_layout.txt @@ -1,22 +1,22 @@ -------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH -RECORD 1 60 60 - 5 FILLER 1 1 1 1 - 5 COMPANY_PREFIX 2 2 4 3 - 5 FILLER 3 5 5 1 - 5 FILLER 4 6 6 1 - 5 COMPANY_NAME r 5 7 15 9 - 5 FILLER_1 R 9 7 15 9 - 10 STR1 7 7 11 5 - 10 STR2 8 12 13 2 - 10 FILLER 9 14 14 1 - 5 ADDRESS r 10 16 45 30 - 5 FILLER_2 R 13 16 45 30 - 10 STR4 12 16 25 10 - 10 FILLER 13 26 45 20 - 5 FILL_FIELD r 16 46 52 7 - 10 FILLER 15 46 50 5 - 10 FILLER 16 51 52 2 - 5 CONTACT_PERSON R 18 46 52 7 - 10 FIRST_NAME 18 46 51 6 - 5 AMOUNT 19 53 60 8 \ No newline at end of file + 1 RECORD 20 1 60 60 + 5 FILLER 2 1 1 1 + 5 COMPANY_PREFIX 3 2 4 3 + 5 FILLER 4 5 5 1 + 5 FILLER 5 6 6 1 + 5 COMPANY_NAME r 6 7 15 9 + 5 FILLER_1 R 10 7 15 9 + 10 STR1 8 7 11 5 + 10 STR2 9 12 13 2 + 10 FILLER 10 14 14 1 + 5 ADDRESS r 11 16 45 30 + 5 FILLER_2 R 14 16 45 30 + 10 STR4 13 16 25 10 + 10 FILLER 14 26 45 20 + 5 FILL_FIELD r 17 46 52 7 + 10 FILLER 16 46 50 5 + 10 FILLER 17 51 52 2 + 5 CONTACT_PERSON R 19 46 52 7 + 10 FIRST_NAME 19 46 51 6 + 5 AMOUNT 20 53 60 8 \ No newline at end of file diff --git a/data/test7_expected/test7b_layout.txt b/data/test7_expected/test7b_layout.txt index 2e475d75..0ec9a1aa 100644 --- a/data/test7_expected/test7b_layout.txt +++ b/data/test7_expected/test7b_layout.txt @@ -1,22 +1,22 @@ -------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH -RECORD 1 60 60 - 5 FILLER_P1 1 1 1 1 - 5 COMPANY_PREFIX 2 2 4 3 - 5 FILLER_P2 3 5 5 1 - 5 FILLER_P3 4 6 6 1 - 5 COMPANY_NAME r 5 7 15 9 - 5 FILLER R 9 7 15 9 - 10 STR1 7 7 11 5 - 10 STR2 8 12 13 2 - 10 FILLER_P4 9 14 14 1 - 5 ADDRESS r 10 16 45 30 - 5 FILLER R 13 16 45 30 - 10 STR4 12 16 25 10 - 10 FILLER_P5 13 26 45 20 - 5 FILL_FIELD r 16 46 52 7 - 10 FILLER_P6 15 46 50 5 - 10 FILLER_P7 16 51 52 2 - 5 CONTACT_PERSON R 18 46 52 7 - 10 FIRST_NAME 18 46 51 6 - 5 AMOUNT 19 53 60 8 \ No newline at end of file + 1 RECORD 20 1 60 60 + 5 FILLER_P1 2 1 1 1 + 5 COMPANY_PREFIX 3 2 4 3 + 5 FILLER_P2 4 5 5 1 + 5 FILLER_P3 5 6 6 1 + 5 COMPANY_NAME r 6 7 15 9 + 5 FILLER R 10 7 15 9 + 10 STR1 8 7 11 5 + 10 STR2 9 12 13 2 + 10 FILLER_P4 10 14 14 1 + 5 ADDRESS r 11 16 45 30 + 5 FILLER R 14 16 45 30 + 10 STR4 13 16 25 10 + 10 FILLER_P5 14 26 45 20 + 5 FILL_FIELD r 17 46 52 7 + 10 FILLER_P6 16 46 50 5 + 10 FILLER_P7 17 51 52 2 + 5 CONTACT_PERSON R 19 46 52 7 + 10 FIRST_NAME 19 46 51 6 + 5 AMOUNT 20 53 60 8 \ No newline at end of file diff --git a/data/test7_expected/test7c_layout.txt b/data/test7_expected/test7c_layout.txt index 8eb1bade..a28e2c3d 100644 --- a/data/test7_expected/test7c_layout.txt +++ b/data/test7_expected/test7c_layout.txt @@ -1,22 +1,22 @@ -------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH -RECORD 1 60 60 - 5 FILLER_P1 1 1 1 1 - 5 COMPANY_PREFIX 2 2 4 3 - 5 FILLER_P2 3 5 5 1 - 5 FILLER_P3 4 6 6 1 - 5 COMPANY_NAME r 5 7 15 9 - 5 FILLER_1 R 9 7 15 9 - 10 STR1 7 7 11 5 - 10 STR2 8 12 13 2 - 10 FILLER_P4 9 14 14 1 - 5 ADDRESS r 10 16 45 30 - 5 FILLER_2 R 13 16 45 30 - 10 STR4 12 16 25 10 - 10 FILLER_P5 13 26 45 20 - 5 FILL_FIELD r 16 46 52 7 - 10 FILLER_P6 15 46 50 5 - 10 FILLER_P7 16 51 52 2 - 5 CONTACT_PERSON R 18 46 52 7 - 10 FIRST_NAME 18 46 51 6 - 5 AMOUNT 19 53 60 8 \ No newline at end of file + 1 RECORD 20 1 60 60 + 5 FILLER_P1 2 1 1 1 + 5 COMPANY_PREFIX 3 2 4 3 + 5 FILLER_P2 4 5 5 1 + 5 FILLER_P3 5 6 6 1 + 5 COMPANY_NAME r 6 7 15 9 + 5 FILLER_1 R 10 7 15 9 + 10 STR1 8 7 11 5 + 10 STR2 9 12 13 2 + 10 FILLER_P4 10 14 14 1 + 5 ADDRESS r 11 16 45 30 + 5 FILLER_2 R 14 16 45 30 + 10 STR4 13 16 25 10 + 10 FILLER_P5 14 26 45 20 + 5 FILL_FIELD r 17 46 52 7 + 10 FILLER_P6 16 46 50 5 + 10 FILLER_P7 17 51 52 2 + 5 CONTACT_PERSON R 19 46 52 7 + 10 FIRST_NAME 19 46 51 6 + 5 AMOUNT 20 53 60 8 \ No newline at end of file diff --git a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/CommentsTruncationSpec.scala b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/CommentsTruncationSpec.scala index e92a38e6..d34e3234 100644 --- a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/CommentsTruncationSpec.scala +++ b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/CommentsTruncationSpec.scala @@ -86,9 +86,9 @@ class CommentsTruncationSpec extends FunSuite with SparkTestBase with BinaryFile private val expectedLayout = """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH | - |GRP_01 1 11 11 - | 3 FIELD1 1 1 1 1 - | 3 FIELD2 2 2 11 10""" + | 1 GRP_01 3 1 11 11 + | 3 FIELD1 2 1 1 1 + | 3 FIELD2 3 2 11 10""" .stripMargin.replace("\r\n", "\n") private val expectedSchema = From fd8ce461285ff48e9e3734348ce9059fb610a6da Mon Sep 17 00:00:00 2001 From: Ruslan Iushchenko Date: Tue, 27 Jul 2021 08:51:03 +0200 Subject: [PATCH 04/10] #405 Add more tests that demonstrate that root level redefines are not working properly --- ...s.scala => Test14RootLevelRedefines.scala} | 82 ++++++++++++++++++- 1 file changed, 80 insertions(+), 2 deletions(-) rename spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/{Test14AsciiMergedCopybooks.scala => Test14RootLevelRedefines.scala} (55%) diff --git a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test14AsciiMergedCopybooks.scala b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test14RootLevelRedefines.scala similarity index 55% rename from spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test14AsciiMergedCopybooks.scala rename to spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test14RootLevelRedefines.scala index 0e087f52..d1b13afa 100644 --- a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test14AsciiMergedCopybooks.scala +++ b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test14RootLevelRedefines.scala @@ -25,8 +25,10 @@ import za.co.absa.cobrix.spark.cobol.source.fixtures.BinaryFileFixture import java.nio.charset.StandardCharsets import java.nio.file.{Files, Paths} -class Test14AsciiMergedCopybooks extends WordSpec with SparkTestBase with BinaryFileFixture with SimpleComparisonBase { - +/** + * This suite validates issues observed when root level fields are redefined, including the case of several copybooks merging. + */ +class Test14RootLevelRedefines extends WordSpec with SparkTestBase with BinaryFileFixture with SimpleComparisonBase { private implicit val logger: Logger = LoggerFactory.getLogger(this.getClass) private val copybook1 = @@ -47,6 +49,13 @@ class Test14AsciiMergedCopybooks extends WordSpec with SparkTestBase with Binary 10 B PIC X. """ + private val copybook2Roots = + """ 05 ENTITY1. + 10 A PIC X. + 05 ENTITY2 REDEFINES ENTITY1. + 10 B PIC X. + """ + val textFileContents: String = "1\n2\n3\n4" "Test ASCII CRLF text file " should { @@ -123,5 +132,74 @@ class Test14AsciiMergedCopybooks extends WordSpec with SparkTestBase with Binary } } + "with a single multi-root copybook with redefines & collapse root" in { + val expectedLayout = + """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH + | + | 5 ENTITY1 r 2 1 1 1 + | 10 A 2 1 1 1 + | 5 ENTITY2 R 4 1 1 1 + | 10 B 4 1 1 1 + |""".stripMargin + withTempTextFile("merged_crlf", ".dat", StandardCharsets.UTF_8, textFileContents) { tmpFileName => + val df = spark + .read + .format("cobol") + .option("copybook_contents", copybook2Roots) + .option("pedantic", "true") + .option("is_text", "true") + .option("encoding", "ascii") + .option("schema_retention_policy", "collapse_root") + .load(tmpFileName) + + val actualLayout = CopybookParser.parseTree(copybook2Roots).generateRecordLayoutPositions() + // This is an error. Should be: + //val expected = """[{"A":"1","B":"1"},{"A":"2","B":"2"},{"A":"3","B":"3"},{"A":"4","B":"4"}]""" + val expected = """[{"A":"1","B":""},{"A":"2","B":""},{"A":"3","B":""},{"A":"4","B":""}]""" + + val count = df.count() + val actual = df.toJSON.collect().mkString("[", ",", "]") + + assert(count == 4) + assertEqualsMultiline(actual, expected) + assertEqualsMultiline(actualLayout, expectedLayout) + } + } + + "with a single multi-root copybook with redefines & keep_original" in { + val expectedLayout = + """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH + | + | 5 ENTITY1 r 2 1 1 1 + | 10 A 2 1 1 1 + | 5 ENTITY2 R 4 1 1 1 + | 10 B 4 1 1 1 + |""".stripMargin + withTempTextFile("merged_crlf", ".dat", StandardCharsets.UTF_8, textFileContents) { tmpFileName => + val df = spark + .read + .format("cobol") + .option("copybook_contents", copybook2Roots) + .option("pedantic", "true") + .option("is_text", "true") + .option("encoding", "ascii") + .option("schema_retention_policy", "keep_original") + .load(tmpFileName) + + val actualLayout = CopybookParser.parseTree(copybook2Roots).generateRecordLayoutPositions() + + // This is an error. Should be: + //val expected = """[{"ENTITY1":{"A":"1"},"ENTITY2":{"B":"1"}},{"ENTITY1":{"A":"2"},"ENTITY2":{"B":"2"}},{"ENTITY1":{"A":"3"},"ENTITY2":{"B":"3"}},{"ENTITY1":{"A":"4"},"ENTITY2":{"B":"4"}}]""" + val expected = """[{"ENTITY1":{"A":"1"},"ENTITY2":{"B":""}},{"ENTITY1":{"A":"2"},"ENTITY2":{"B":""}},{"ENTITY1":{"A":"3"},"ENTITY2":{"B":""}},{"ENTITY1":{"A":"4"},"ENTITY2":{"B":""}}]""" + + val count = df.count() + val actual = df.toJSON.collect().mkString("[", ",", "]") + + assert(count == 4) + assertEqualsMultiline(actual, expected) + assertEqualsMultiline(actualLayout, expectedLayout) + } + } + } } From f1ed91baff30d081d5589a48b4fc6dec3a8d4242 Mon Sep 17 00:00:00 2001 From: Ruslan Iushchenko Date: Wed, 28 Jul 2021 08:33:49 +0200 Subject: [PATCH 05/10] #405 Fix the root level redefine issue --- .../reader/extractors/record/RecordExtractors.scala | 4 +++- data/test12_expected/test12.txt | 2 +- .../source/regression/Test14RootLevelRedefines.scala | 10 +++------- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/reader/extractors/record/RecordExtractors.scala b/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/reader/extractors/record/RecordExtractors.scala index 74ad9d2c..e3bc47c5 100644 --- a/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/reader/extractors/record/RecordExtractors.scala +++ b/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/reader/extractors/record/RecordExtractors.scala @@ -175,7 +175,9 @@ object RecordExtractors { val records = for (record <- ast.children) yield { val (size, values) = getGroupValues(nextOffset, record.asInstanceOf[Group]) - nextOffset += size + if (!record.isRedefined) { + nextOffset += size + } values } diff --git a/data/test12_expected/test12.txt b/data/test12_expected/test12.txt index 1bf8817c..09bd22dc 100644 --- a/data/test12_expected/test12.txt +++ b/data/test12_expected/test12.txt @@ -1 +1 @@ -{"RECORD_A":{"NAME":{"SHORT_NAME":{"NAME_CHAR_1":"F","SHORT_NAME_REST":"IRST NAME"},"REST":"LAST NAME"},"ACCOUNT_NO":{"FIRST_6":123456,"ACCOUNT_MIDDLE":0,"LAST_4":1234}},"RECORD_B":{"NAME":""}} +{"RECORD_A":{"NAME":{"SHORT_NAME":{"NAME_CHAR_1":"F","SHORT_NAME_REST":"IRST NAME"},"REST":"LAST NAME"},"ACCOUNT_NO":{"FIRST_6":123456,"ACCOUNT_MIDDLE":0,"LAST_4":1234}},"RECORD_B":{"NAME":"FIRST NAME LAST NAME","ACCOUNT_NO":1234560000001234}} diff --git a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test14RootLevelRedefines.scala b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test14RootLevelRedefines.scala index d1b13afa..dbf005c4 100644 --- a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test14RootLevelRedefines.scala +++ b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test14RootLevelRedefines.scala @@ -89,8 +89,7 @@ class Test14RootLevelRedefines extends WordSpec with SparkTestBase with BinaryFi .load(tmpFileName) // This is an error. Should be: - //val expected = """[{"A":"1","B":"1"},{"A":"2","B":"2"},{"A":"3","B":"3"},{"A":"4","B":"4"}]""" - val expected = """[{"A":"1","B":""},{"A":"2","B":""},{"A":"3","B":""},{"A":"4","B":""}]""" + val expected = """[{"A":"1","B":"1"},{"A":"2","B":"2"},{"A":"3","B":"3"},{"A":"4","B":"4"}]""" val count = df.count() val actual = df.toJSON.collect().mkString("[", ",", "]") @@ -154,8 +153,7 @@ class Test14RootLevelRedefines extends WordSpec with SparkTestBase with BinaryFi val actualLayout = CopybookParser.parseTree(copybook2Roots).generateRecordLayoutPositions() // This is an error. Should be: - //val expected = """[{"A":"1","B":"1"},{"A":"2","B":"2"},{"A":"3","B":"3"},{"A":"4","B":"4"}]""" - val expected = """[{"A":"1","B":""},{"A":"2","B":""},{"A":"3","B":""},{"A":"4","B":""}]""" + val expected = """[{"A":"1","B":"1"},{"A":"2","B":"2"},{"A":"3","B":"3"},{"A":"4","B":"4"}]""" val count = df.count() val actual = df.toJSON.collect().mkString("[", ",", "]") @@ -188,9 +186,7 @@ class Test14RootLevelRedefines extends WordSpec with SparkTestBase with BinaryFi val actualLayout = CopybookParser.parseTree(copybook2Roots).generateRecordLayoutPositions() - // This is an error. Should be: - //val expected = """[{"ENTITY1":{"A":"1"},"ENTITY2":{"B":"1"}},{"ENTITY1":{"A":"2"},"ENTITY2":{"B":"2"}},{"ENTITY1":{"A":"3"},"ENTITY2":{"B":"3"}},{"ENTITY1":{"A":"4"},"ENTITY2":{"B":"4"}}]""" - val expected = """[{"ENTITY1":{"A":"1"},"ENTITY2":{"B":""}},{"ENTITY1":{"A":"2"},"ENTITY2":{"B":""}},{"ENTITY1":{"A":"3"},"ENTITY2":{"B":""}},{"ENTITY1":{"A":"4"},"ENTITY2":{"B":""}}]""" + val expected = """[{"ENTITY1":{"A":"1"},"ENTITY2":{"B":"1"}},{"ENTITY1":{"A":"2"},"ENTITY2":{"B":"2"}},{"ENTITY1":{"A":"3"},"ENTITY2":{"B":"3"}},{"ENTITY1":{"A":"4"},"ENTITY2":{"B":"4"}}]""" val count = df.count() val actual = df.toJSON.collect().mkString("[", ",", "]") From 97c3747cea10b6e6eb1b05bb18fa17b172626f2d Mon Sep 17 00:00:00 2001 From: Ruslan Iushchenko Date: Wed, 28 Jul 2021 08:41:35 +0200 Subject: [PATCH 06/10] #405 Update README --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index aaac37fb..d1da17ec 100644 --- a/README.md +++ b/README.md @@ -1261,6 +1261,11 @@ For multisegment variable lengths tests: ![](performance/images/exp3_multiseg_wide_records_throughput.svg) ![](performance/images/exp3_multiseg_wide_mb_throughput.svg) ## Changelog +- #### 2.3.0 to be released soon. + - [#405](https://github.com/AbsaOSS/cobrix/issues/405) Fix extracting records that contain redefines of the top level GROUPs. + - The layout positions summary generated by the parser now contains level numbers for root level GROUPs. THis is a breaking + change if you have unit tests that depend on the formatting of the layout positions output. + - #### 2.2.3 released 14 July 2021. - [#397](https://github.com/AbsaOSS/cobrix/issues/397) Fix skipping of empty lines when reading ASCII files with `is_record_sequence = true` - [#394](https://github.com/AbsaOSS/cobrix/issues/394) Added an ability to specify multiple paths to read data from (Use `.option("paths", inputPaths.mkString(","))`). From c4db073ea40d7800989be85dfb3ea471fda3ebfd Mon Sep 17 00:00:00 2001 From: Ruslan Iushchenko Date: Thu, 29 Jul 2021 09:12:11 +0200 Subject: [PATCH 07/10] #407 Make 'collapse_root' the default schema retention policy --- README.md | 41 +++++++++---------- .../cobol/reader/JSONExtractorSpec.scala | 5 +-- .../cobol/reader/RowExtractorSpec.scala | 3 +- .../parameters/CobolParametersParser.scala | 2 +- .../integration/Test10NonTerminalsSpec.scala | 1 + .../Test12MergeCopybooksSpec.scala | 2 + .../integration/Test17HierarchicalSpec.scala | 3 +- .../integration/Test21VariableOccurs.scala | 1 + .../integration/Test25OccursMappings.scala | 3 ++ .../regression/Test01RecordIdSequence.scala | 3 ++ .../regression/Test13AsciiCrLfText.scala | 4 -- 11 files changed, 36 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index d1da17ec..fe4a7599 100644 --- a/README.md +++ b/README.md @@ -326,10 +326,12 @@ The space used by the headers should not be mentioned in the copybook if this op ### Schema collapsing Mainframe data often contain only one root GROUP. In such cases such a GROUP can be considered something similar to XML rowtag. -Cobrix allows to collapse the GROUP and expand it's records. To turn this on use the following option: +Cobrix allows either to collapse or to retain the GROUP. To turn this on use the following option: ``` .option("schema_retention_policy", "collapse_root") +or +.option("schema_retention_policy", "keep_original") ``` Let's look at an example. Let's say we have a copybook that looks like this: @@ -341,7 +343,17 @@ Let's look at an example. Let's say we have a copybook that looks like this: 10 COMPANY-ID-NUM PIC 9(5) COMP-3. ``` -Normally Spark schema for such a copybook will look like this: +When "schema_retention_policy" is set to "collapse_root" (default), the root group will be collapsed and the schema will look +like this (note the RECORD field is not part of the schema): +``` +root + |-- ID: integer (nullable = true) + |-- COMPANY: struct (nullable = true) + | |-- SHORT_NAME: string (nullable = true) + | |-- COMPANY_ID_NUM: integer (nullable = true) +``` + +But when "schema_retention_policy" is set to "keep_original", the schema will look like this (note the RECORD field is part of the schema): ``` root @@ -352,16 +364,6 @@ root | | |-- COMPANY_ID_NUM: integer (nullable = true) ``` -But when "schema_retention_policy" is set to "collapse_root" the root group will be collapsed and the schema will look -like this (note the RECORD field is no longer present): -``` -root - |-- ID: integer (nullable = true) - |-- COMPANY: struct (nullable = true) - | |-- SHORT_NAME: string (nullable = true) - | |-- COMPANY_ID_NUM: integer (nullable = true) -``` - You can experiment with this feature using built-in example in `za.co.absa.cobrix.spark.cobol.examples.CobolSparkExample` @@ -541,7 +543,6 @@ Working example 1: .option("copybook_contents", copybook) .option("is_text", "true") .option("encoding", "ascii") - .option("schema_retention_policy", "collapse_root") .load(tmpFileName) ```` @@ -631,7 +632,6 @@ val df = spark .read .format("cobol") .option("copybook_contents", copybook) - .option("schema_retention_policy", "collapse_root") .option("is_record_sequence", "true") .option("segment_field", "SEGMENT_ID") .option("segment_id_level0", "C") @@ -740,7 +740,6 @@ val df = spark .read .format("cobol") .option("copybook", "/path/to/thecopybook") - .option("schema_retention_policy", "collapse_root") // Collapses the root group returning it's field on the top level of the schema .option("is_record_sequence", "true") .load("examples/multisegment_data") ``` @@ -806,7 +805,6 @@ val df = spark .read .format("cobol") .option("copybook", "/path/to/thecopybook") - .option("schema_retention_policy", "collapse_root") .option("is_record_sequence", "true") // Specifies a field containing a segment id @@ -960,7 +958,6 @@ val df = spark .read .format("cobol") .option("copybook_contents", copybook) - .option("schema_retention_policy", "collapse_root") .option("is_record_sequence", "true") .option("segment_field", "SEGMENT_ID") .option("segment_id_level0", "C") @@ -1119,6 +1116,7 @@ Again, the full example is available at | Option (usage example) | Description | | ------------------------------------------ |:----------------------------------------------------------------------------- | +| .option("schema_retention_policy", "collapse_root") | When `collapse_root` (default) the root level record will be removed from the Spark schema. When `keep_original`, the root level GROUP will be present in the Spark schema | | .option("drop_group_fillers", "false") | If `true`, all GROUP FILLERs will be dropped from the output schema. If `false` (default), such fields will be retained. | | .option("drop_value_fillers", "false") | If `true` (default), all non-GROUP FILLERs will be dropped from the output schema. If `false`, such fields will be retained. | | .option("non_terminals", "GROUP1,GROUP2") | Specifies groups to also be added to the schema as string fields. When this option is specified, the reader will add one extra data field after each matching group containing the string data for the group. | @@ -1196,7 +1194,6 @@ For fixed record length tests: .read .format("cobol") .option("copybook_contents", copybook) - .option("schema_retention_policy", "collapse_root") .load(args(0)) df.write.mode(SaveMode.Overwrite).parquet(args(1)) @@ -1214,7 +1211,6 @@ For multisegment variable lengths tests: .format("cobol") .option("copybook_contents", copybook) .option("generate_record_id", true) - .option("schema_retention_policy", "collapse_root") .option("is_record_sequence", "true") .option("segment_field", "SEGMENT_ID") .option("segment_id_level0", "C") @@ -1263,8 +1259,11 @@ For multisegment variable lengths tests: ## Changelog - #### 2.3.0 to be released soon. - [#405](https://github.com/AbsaOSS/cobrix/issues/405) Fix extracting records that contain redefines of the top level GROUPs. - - The layout positions summary generated by the parser now contains level numbers for root level GROUPs. THis is a breaking - change if you have unit tests that depend on the formatting of the layout positions output. + - [#406](https://github.com/AbsaOSS/cobrix/issues/406) Use 'collapse_root' retention policy by default. This is the breaking, + change, to restore the original behavior add `.option("schema_retention_policy", "keep_original")`. + - [#407](https://github.com/AbsaOSS/cobrix/issues/407) The layout positions summary generated by the parser now contains level + numbers for root level GROUPs. This is a breaking change if you have unit tests that depend on the formatting of the layout + positions output. - #### 2.2.3 released 14 July 2021. - [#397](https://github.com/AbsaOSS/cobrix/issues/397) Fix skipping of empty lines when reading ASCII files with `is_record_sequence = true` diff --git a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/reader/JSONExtractorSpec.scala b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/reader/JSONExtractorSpec.scala index 4a2325eb..601aeb83 100644 --- a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/reader/JSONExtractorSpec.scala +++ b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/reader/JSONExtractorSpec.scala @@ -19,8 +19,7 @@ package za.co.absa.cobrix.cobol.reader import org.scalatest.FunSuite import za.co.absa.cobrix.cobol.parser.ast.Group import za.co.absa.cobrix.cobol.parser.{Copybook, CopybookParser} -import za.co.absa.cobrix.cobol.reader.extractors.record.{RecordHandler, RecordExtractors} - +import za.co.absa.cobrix.cobol.reader.extractors.record.{RecordExtractors, RecordHandler} class JSONExtractorSpec extends FunSuite { val copyBookContents: String = @@ -113,7 +112,6 @@ class JSONExtractorSpec extends FunSuite { val copybook: Copybook = CopybookParser.parseTree(copyBookContents) val startOffset: Int = 0 - class MapType(val value: String) class JSONHandler extends RecordHandler[Any] { @@ -137,7 +135,6 @@ class JSONExtractorSpec extends FunSuite { override def toSeq(record: Any): Seq[Any] = Seq[Any]() } - test("Test simple JSON generation") { // this is a very simple example serializer, no string escaping happens here, post processing will fail val row = RecordExtractors.extractRecord(copybook.ast, bytes, startOffset, handler = new JSONHandler()) diff --git a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/reader/RowExtractorSpec.scala b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/reader/RowExtractorSpec.scala index 763ac0cf..8ef76576 100644 --- a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/reader/RowExtractorSpec.scala +++ b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/reader/RowExtractorSpec.scala @@ -19,7 +19,8 @@ package za.co.absa.cobrix.cobol.reader import org.scalatest.FunSuite import za.co.absa.cobrix.cobol.parser.ast.Group import za.co.absa.cobrix.cobol.parser.{Copybook, CopybookParser} -import za.co.absa.cobrix.cobol.reader.extractors.record.{RecordHandler, RecordExtractors} +import za.co.absa.cobrix.cobol.reader.extractors.record.{RecordExtractors, RecordHandler} +import za.co.absa.cobrix.cobol.reader.policies.SchemaRetentionPolicy class RowExtractorSpec extends FunSuite { diff --git a/spark-cobol/src/main/scala/za/co/absa/cobrix/spark/cobol/parameters/CobolParametersParser.scala b/spark-cobol/src/main/scala/za/co/absa/cobrix/spark/cobol/parameters/CobolParametersParser.scala index d165cf01..bb0983bf 100644 --- a/spark-cobol/src/main/scala/za/co/absa/cobrix/spark/cobol/parameters/CobolParametersParser.scala +++ b/spark-cobol/src/main/scala/za/co/absa/cobrix/spark/cobol/parameters/CobolParametersParser.scala @@ -106,7 +106,7 @@ object CobolParametersParser { val PARAM_DEBUG_IGNORE_FILE_SIZE = "debug_ignore_file_size" private def getSchemaRetentionPolicy(params: Parameters): SchemaRetentionPolicy = { - val schemaRetentionPolicyName = params.getOrElse(PARAM_SCHEMA_RETENTION_POLICY, "keep_original") + val schemaRetentionPolicyName = params.getOrElse(PARAM_SCHEMA_RETENTION_POLICY, "collapse_root") val schemaRetentionPolicy = SchemaRetentionPolicy.withNameOpt(schemaRetentionPolicyName) schemaRetentionPolicy match { diff --git a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/integration/Test10NonTerminalsSpec.scala b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/integration/Test10NonTerminalsSpec.scala index 24dc66d3..c1905484 100644 --- a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/integration/Test10NonTerminalsSpec.scala +++ b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/integration/Test10NonTerminalsSpec.scala @@ -41,6 +41,7 @@ class Test10NonTerminalsSpec extends FunSuite with SparkTestBase { .option("copybook", inputCopybookPath) .option("non_terminals", "NAME,ACCOUNT-NO") .option("encoding", "ascii") + .option("schema_retention_policy", "keep_original") .load(inputDataPath) // This is to print the actual output diff --git a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/integration/Test12MergeCopybooksSpec.scala b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/integration/Test12MergeCopybooksSpec.scala index f8457df2..344eae12 100644 --- a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/integration/Test12MergeCopybooksSpec.scala +++ b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/integration/Test12MergeCopybooksSpec.scala @@ -44,6 +44,7 @@ class Test12MergeCopybooksSpec extends FunSuite with SparkTestBase { .format("cobol") .option("copybooks", inputCopybookPath) .option("encoding", "ascii") + .option("schema_retention_policy", "keep_original") .load(inputDataPath) val dfM = spark @@ -51,6 +52,7 @@ class Test12MergeCopybooksSpec extends FunSuite with SparkTestBase { .format("cobol") .option("copybooks", s"$inputCopybookPathA,$inputCopybookPathB") .option("encoding", "ascii") + .option("schema_retention_policy", "keep_original") .load(inputDataPath) // This is to print the actual output diff --git a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/integration/Test17HierarchicalSpec.scala b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/integration/Test17HierarchicalSpec.scala index ce8ded69..fcaa7dea 100644 --- a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/integration/Test17HierarchicalSpec.scala +++ b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/integration/Test17HierarchicalSpec.scala @@ -261,7 +261,7 @@ class Test17HierarchicalSpec extends WordSpec with SparkTestBase with CobolTestB testData(actualDf, actualResultsPath, expectedResultsPath) } - "return a hierarchically structured dataframe without id generation and default schema retention policy" in { + "return a hierarchically structured dataframe without id generation and keep original schema retention policy" in { val expectedSchemaPath = "../data/test17_expected/test17e_schema.json" val actualSchemaPath = "../data/test17_expected/test17e_schema_actual.json" val expectedResultsPath = "../data/test17_expected/test17e.txt" @@ -273,6 +273,7 @@ class Test17HierarchicalSpec extends WordSpec with SparkTestBase with CobolTestB .option("copybook", inputCopybookPath) .option("encoding", "ascii") .option("is_record_sequence", "true") + .option("schema_retention_policy", "keep_original") .option("segment_field", "SEGMENT_ID") .option("redefine_segment_id_map:1", "STATIC-DETAILS => C") .option("redefine-segment-id-map:2", "CONTACTS => P") diff --git a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/integration/Test21VariableOccurs.scala b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/integration/Test21VariableOccurs.scala index c620cc6f..0f2b74bd 100644 --- a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/integration/Test21VariableOccurs.scala +++ b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/integration/Test21VariableOccurs.scala @@ -69,6 +69,7 @@ class Test21VariableOccurs extends FunSuite with SparkTestBase { .option("copybook", inputCopybookPath) .option("encoding", "ascii") .option("variable_size_occurs", "true") + .option("schema_retention_policy", "keep_original") .load(inputDataPath) val expectedSchema = Files.readAllLines(Paths.get(expectedSchemaPath), StandardCharsets.ISO_8859_1).toArray.mkString("\n") diff --git a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/integration/Test25OccursMappings.scala b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/integration/Test25OccursMappings.scala index 34bd7c0e..c4c88010 100644 --- a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/integration/Test25OccursMappings.scala +++ b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/integration/Test25OccursMappings.scala @@ -93,6 +93,7 @@ class Test25OccursMappings extends FunSuite with SparkTestBase { .option("encoding", "ascii") .option("occurs_mappings", "{\"DETAIL1\":{\"A\":0,\"B\":1.5},\"DETAIL2\":{\"A\":1,\"B\":\"Z\"}}") .option("variable_size_occurs", "true") + .option("schema_retention_policy", "keep_original") .load(inputDataPath + "/data.dat") } assert(exc.getMessage.contains("java.lang.Double cannot be cast to java.lang.Integer")) @@ -106,6 +107,7 @@ class Test25OccursMappings extends FunSuite with SparkTestBase { .option("encoding", "ascii") .option("occurs_mappings", "{\"DETAIL1\":{\"A\":0,\"B\":1},\"DETAIL2\":{\"A\":1,\"B\":2}}") .option("variable_size_occurs", "true") + .option("schema_retention_policy", "keep_original") .load(inputDataPath + "/data.dat") val expectedSchema = Files.readAllLines(Paths.get(expectedSchemaPath), StandardCharsets.ISO_8859_1).toArray.mkString("\n") @@ -133,6 +135,7 @@ class Test25OccursMappings extends FunSuite with SparkTestBase { .option("copybook", inputCopybookPath) .option("encoding", "ascii") .option("occurs_mappings", "{\"DETAIL1\":{\"A\":0,\"B\":1},\"DETAIL2\":{\"A\":1,\"B\":2}}") + .option("schema_retention_policy", "keep_original") .load(inputDataPath + "/data2.dat") val expectedSchema = Files.readAllLines(Paths.get(expectedSchemaPath), StandardCharsets.ISO_8859_1).toArray.mkString("\n") diff --git a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test01RecordIdSequence.scala b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test01RecordIdSequence.scala index b07d4aa4..7c11615b 100644 --- a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test01RecordIdSequence.scala +++ b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test01RecordIdSequence.scala @@ -119,6 +119,7 @@ class Test01RecordIdSequence extends FunSuite with BeforeAndAfter with SparkTest .option("generate_record_id", true) .option("input_split_records", 5) .option("is_xcom", true) + .option("schema_retention_policy", "keep_original") .load(fileName) logger.debug("Rows Count (No Segment Filter): " + dfRecordAll.count()) val dfRecordFilterAll = dfRecordAll @@ -131,6 +132,7 @@ class Test01RecordIdSequence extends FunSuite with BeforeAndAfter with SparkTest .format("cobol") .option("copybook_contents", copybook) .option("generate_record_id", true) + .option("schema_retention_policy", "keep_original") .option("input_split_records", 5) .option("is_xcom", true) .option("segment_field", "I") @@ -148,6 +150,7 @@ class Test01RecordIdSequence extends FunSuite with BeforeAndAfter with SparkTest .format("cobol") .option("copybook_contents", copybook) .option("generate_record_id", true) + .option("schema_retention_policy", "keep_original") .option("input_split_records", 5) .option("is_xcom", true) .option("segment_field", "I") diff --git a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test13AsciiCrLfText.scala b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test13AsciiCrLfText.scala index e8a87f86..ef644d46 100644 --- a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test13AsciiCrLfText.scala +++ b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test13AsciiCrLfText.scala @@ -60,7 +60,6 @@ class Test13AsciiCrLfText extends WordSpec with SparkTestBase with BinaryFileFix .option("pedantic", "true") .option("is_text", "true") .option("encoding", "ascii") - .option("schema_retention_policy", "collapse_root") .load(tmpFileName) val expected = """[{"A":"fd"},{"A":"hd"},{"A":"sd"}]""" @@ -83,7 +82,6 @@ class Test13AsciiCrLfText extends WordSpec with SparkTestBase with BinaryFileFix .option("is_record_sequence", "true") .option("is_text", "true") .option("encoding", "ascii") - .option("schema_retention_policy", "collapse_root") .load(tmpFileName) val expected = """[{"A":"fd"},{"A":"hd"},{"A":"sd"}]""" @@ -107,7 +105,6 @@ class Test13AsciiCrLfText extends WordSpec with SparkTestBase with BinaryFileFix .option("pedantic", "true") .option("is_text", "true") .option("encoding", "ascii") - .option("schema_retention_policy", "collapse_root") .load(tmpFileName) val count = df.count() @@ -126,7 +123,6 @@ class Test13AsciiCrLfText extends WordSpec with SparkTestBase with BinaryFileFix .option("is_record_sequence", "true") .option("is_text", "true") .option("encoding", "ascii") - .option("schema_retention_policy", "collapse_root") .load(tmpFileName) val count = df.count() From b0f0d369fef874857aa248f5d4dbb7d464ec7e50 Mon Sep 17 00:00:00 2001 From: Ruslan Iushchenko Date: Fri, 30 Jul 2021 09:02:35 +0200 Subject: [PATCH 08/10] #407 Fix the field number column in the layout positions text --- .../absa/cobrix/cobol/parser/Copybook.scala | 6 +- .../copybooks/CopybooksOperationsSpec.scala | 68 +- .../parser/copybooks/MergeCopybooksSpec.scala | 79 +- .../parser/copybooks/ParseCommentsSpec.scala | 22 +- .../copybooks/ParseDebugRedefinedSpec.scala | 31 +- .../copybooks/ParseFieldNamesSpec.scala | 34 +- .../copybooks/ParseFieldsNestingSpec.scala | 24 +- .../testutils/SimpleComparisonBase.scala | 38 + data/test11_expected/test11_layout.txt | 26 +- data/test13_expected/test13a_layout.txt | 14 +- data/test13_expected/test13b_layout.txt | 26 +- data/test16_expected/test16_layout.txt | 28 +- data/test17_expected/test17a_layout.txt | 64 +- .../test18a_layout.txt | 64 +- data/test24_expected/test24_layout.txt | 782 +++++++++--------- data/test24_expected/test24b_layout.txt | 782 +++++++++--------- data/test6_expected/test6_layout.txt | 392 ++++----- data/test7_expected/test7_layout.txt | 40 +- data/test7_expected/test7a_layout.txt | 40 +- data/test7_expected/test7b_layout.txt | 40 +- data/test7_expected/test7c_layout.txt | 40 +- .../cobol/source/CommentsTruncationSpec.scala | 27 +- .../integration/Test11CustomRDWParser.scala | 2 +- .../regression/Test14RootLevelRedefines.scala | 36 +- 24 files changed, 1369 insertions(+), 1336 deletions(-) create mode 100644 cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/testutils/SimpleComparisonBase.scala diff --git a/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/Copybook.scala b/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/Copybook.scala index 482d38dd..3e2e3972 100644 --- a/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/Copybook.scala +++ b/cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/Copybook.scala @@ -211,7 +211,7 @@ class Copybook(val ast: CopybookAST) extends Serializable { } } - def generateGroupLayoutPositions(group: Group, path: String = " "): String = { + def generateGroupLayoutPositions(group: Group, path: String = ""): String = { val fieldStrings = for (field <- group.children) yield { fieldCounter += 1 val isRedefines = if (field.redefines.nonEmpty) "R" else "" @@ -220,6 +220,7 @@ class Copybook(val ast: CopybookAST) extends Serializable { field match { case grp: Group => + val fieldCounterPart = alignRight(s"$fieldCounter", 5) val modifiers = s"$isRedefinedByStr$isRedefines$isArray" val groupStr = generateGroupLayoutPositions(grp, path + " ") val start = grp.binaryProperties.offset + 1 @@ -227,13 +228,13 @@ class Copybook(val ast: CopybookAST) extends Serializable { val end = start + length - 1 val namePart = alignLeft(s"$path${grp.level} ${grp.name}", 39) val picturePart = alignLeft(modifiers, 11) - val fieldCounterPart = alignRight(s"$fieldCounter", 5) val startPart = alignRight(s"$start", 7) val fieldEndPart = alignRight(s"$end", 7) val fieldLengthPart = alignRight(s"$length", 7) val groupDescription = s"$namePart$picturePart$fieldCounterPart$startPart$fieldEndPart$fieldLengthPart\n" groupDescription + groupStr case s: Primitive => + val fieldCounterPart = alignRight(s"$fieldCounter", 5) val isDependeeStr = if (s.isDependee) "D" else "" val modifiers = s"$isDependeeStr$isRedefinedByStr$isRedefines$isArray" val start = s.binaryProperties.offset + 1 @@ -241,7 +242,6 @@ class Copybook(val ast: CopybookAST) extends Serializable { val end = start + length - 1 val namePart = alignLeft(s"$path${s.level} ${s.name}", 39) val picturePart = alignLeft(modifiers, 11) - val fieldCounterPart = alignRight(s"$fieldCounter", 5) val startPart = alignRight(s"$start", 7) val fieldEndPart = alignRight(s"$end", 7) val fieldLengthPart = alignRight(s"$length", 7) diff --git a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/CopybooksOperationsSpec.scala b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/CopybooksOperationsSpec.scala index 912824d2..ec4c2388 100644 --- a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/CopybooksOperationsSpec.scala +++ b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/CopybooksOperationsSpec.scala @@ -17,11 +17,13 @@ package za.co.absa.cobrix.cobol.parser.copybooks import org.scalatest.FunSuite +import org.slf4j.{Logger, LoggerFactory} import za.co.absa.cobrix.cobol.parser.ast.Group import za.co.absa.cobrix.cobol.parser.{Copybook, CopybookParser} +import za.co.absa.cobrix.cobol.testutils.SimpleComparisonBase - -class CopybooksOperationsSpec extends FunSuite { +class CopybooksOperationsSpec extends FunSuite with SimpleComparisonBase { + private implicit val logger: Logger = LoggerFactory.getLogger(this.getClass) test("Test drop root from copybook") { val copyBookContents1: String = @@ -39,26 +41,26 @@ class CopybooksOperationsSpec extends FunSuite { assert(copybook1.getRecordSize == 30) assert(copybookDR1.getRecordSize == 30) - assert(copybook1.generateRecordLayoutPositions == + assertEqualsMultiline(copybook1.generateRecordLayoutPositions, """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH | - | 1 RECORD_COPYBOOK_1 7 1 30 30 - | 5 GROUP_1 7 1 30 30 - | 6 FIELD_1 3 1 10 10 - | 6 FILLER 4 11 15 5 - | 6 GROUP_2 7 16 30 15 - | 10 NESTED_FIELD_1 6 16 25 10 - | 10 FILLER 7 26 30 5""" + |1 RECORD_COPYBOOK_1 1 1 30 30 + | 5 GROUP_1 2 1 30 30 + | 6 FIELD_1 3 1 10 10 + | 6 FILLER 4 11 15 5 + | 6 GROUP_2 5 16 30 15 + | 10 NESTED_FIELD_1 6 16 25 10 + | 10 FILLER 7 26 30 5""" .stripMargin.replace("\r\n", "\n")) - assert(copybookDR1.generateRecordLayoutPositions == + assertEqualsMultiline(copybookDR1.generateRecordLayoutPositions, """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH | - | 5 GROUP_1 6 1 30 30 - | 6 FIELD_1 2 1 10 10 - | 6 FILLER 3 11 15 5 - | 6 GROUP_2 6 16 30 15 - | 10 NESTED_FIELD_1 5 16 25 10 - | 10 FILLER 6 26 30 5""" + |5 GROUP_1 1 1 30 30 + | 6 FIELD_1 2 1 10 10 + | 6 FILLER 3 11 15 5 + | 6 GROUP_2 4 16 30 15 + | 10 NESTED_FIELD_1 5 16 25 10 + | 10 FILLER 6 26 30 5""" .stripMargin.replace("\r\n", "\n")) val exception = intercept[RuntimeException] { @@ -92,7 +94,7 @@ class CopybooksOperationsSpec extends FunSuite { |""".stripMargin.replace("\r\n", "\n") val copybook1 = CopybookParser.parseTree(copyBookContents1) val exception2 = intercept[RuntimeException] { - copybook1.dropRoot() + copybook1.dropRoot() } assert(exception2.getMessage.contains("Cannot drop the root of a copybook with more than one root segment")) } @@ -123,33 +125,31 @@ class CopybooksOperationsSpec extends FunSuite { assert(copybookR1.getRecordSize == 30) assert(copybookR2.getRecordSize == 60) - assert(copybookR1.generateRecordLayoutPositions == + assertEqualsMultiline(copybookR1.generateRecordLayoutPositions(), """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH | - | 5 GROUP_1A 6 1 30 30 - | 6 FIELD_1 2 1 10 10 - | 6 FILLER 3 11 15 5 - | 6 GROUP_2A 6 16 30 15 - | 10 NESTED_FIELD_1 5 16 25 10 - | 10 FILLER 6 26 30 5""" + |5 GROUP_1A 1 1 30 30 + | 6 FIELD_1 2 1 10 10 + | 6 FILLER 3 11 15 5 + | 6 GROUP_2A 4 16 30 15 + | 10 NESTED_FIELD_1 5 16 25 10 + | 10 FILLER 6 26 30 5""" .stripMargin.replace("\r\n", "\n")) - assert(copybookR2.generateRecordLayoutPositions == + assertEqualsMultiline(copybookR2.generateRecordLayoutPositions(), """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH | - | 5 GROUP_1B 6 1 60 60 - | 6 FIELD_1 2 1 20 20 - | 6 FILLER 3 21 30 10 - | 6 GROUP_2B 6 31 60 30 - | 10 NESTED_FIELD_1 5 31 50 20 - | 10 FILLER 6 51 60 10""" + |5 GROUP_1B 1 1 60 60 + | 6 FIELD_1 2 1 20 20 + | 6 FILLER 3 21 30 10 + | 6 GROUP_2B 4 31 60 30 + | 10 NESTED_FIELD_1 5 31 50 20 + | 10 FILLER 6 51 60 10""" .stripMargin.replace("\r\n", "\n")) val exception1 = intercept[RuntimeException] { copybook1.restrictTo("GROUP-1A.FIELD-1") } assert(exception1.getMessage.contains("Can only restrict the copybook to a group element")) - - } } diff --git a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/MergeCopybooksSpec.scala b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/MergeCopybooksSpec.scala index b0d5ae5b..6dac8ac2 100644 --- a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/MergeCopybooksSpec.scala +++ b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/MergeCopybooksSpec.scala @@ -17,10 +17,13 @@ package za.co.absa.cobrix.cobol.parser.copybooks import org.scalatest.FunSuite +import org.slf4j.{Logger, LoggerFactory} import za.co.absa.cobrix.cobol.parser.{Copybook, CopybookParser} +import za.co.absa.cobrix.cobol.testutils.SimpleComparisonBase -class MergeCopybooksSpec extends FunSuite { +class MergeCopybooksSpec extends FunSuite with SimpleComparisonBase { + private implicit val logger: Logger = LoggerFactory.getLogger(this.getClass) test("Test merge copybooks") { val copyBookContents1: String = @@ -73,37 +76,37 @@ class MergeCopybooksSpec extends FunSuite { assert(copybook123.getRecordSize == 90) assert(copybook321.getRecordSize == 90) - assert(copybook123.generateRecordLayoutPositions == + assertEqualsMultiline(copybook123.generateRecordLayoutPositions(), """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH | - | 1 RECORD_COPYBOOK_1 r 7 1 90 90 - | 5 GROUP_1 7 1 30 30 - | 6 FIELD_1 3 1 10 10 - | 6 FILLER 4 11 15 5 - | 6 GROUP_2 7 16 30 15 - | 10 NESTED_FIELD_1 6 16 25 10 - | 10 FILLER 7 26 30 5 - | 1 RECORD_COPYBOOK_2A rR 14 1 90 90 - | 5 GROUP_1 14 1 60 60 - | 6 FIELD_1 10 1 20 20 - | 6 FILLER 11 21 30 10 - | 6 GROUP_2 14 31 60 30 - | 10 NESTED_FIELD_1 13 31 50 20 - | 10 FILLER 14 51 60 10 - | 1 RECORD_COPYBOOK_2B rR 21 1 90 90 - | 5 GROUP_1 21 1 60 60 - | 6 FIELD_1 17 1 20 20 - | 6 FILLER 18 21 30 10 - | 6 GROUP_2 21 31 60 30 - | 10 NESTED_FIELD_1 20 31 50 20 - | 10 FILLER 21 51 60 10 - | 1 RECORD_COPYBOOK_3 R 28 1 90 90 - | 5 GROUP_1 28 1 90 90 - | 6 FIELD_1 24 1 30 30 - | 6 FILLER 25 31 45 15 - | 6 GROUP_2 28 46 90 45 - | 10 NESTED_FIELD_1 27 46 75 30 - | 10 FILLER 28 76 90 15""" + |1 RECORD_COPYBOOK_1 r 1 1 90 90 + | 5 GROUP_1 2 1 30 30 + | 6 FIELD_1 3 1 10 10 + | 6 FILLER 4 11 15 5 + | 6 GROUP_2 5 16 30 15 + | 10 NESTED_FIELD_1 6 16 25 10 + | 10 FILLER 7 26 30 5 + |1 RECORD_COPYBOOK_2A rR 8 1 90 90 + | 5 GROUP_1 9 1 60 60 + | 6 FIELD_1 10 1 20 20 + | 6 FILLER 11 21 30 10 + | 6 GROUP_2 12 31 60 30 + | 10 NESTED_FIELD_1 13 31 50 20 + | 10 FILLER 14 51 60 10 + |1 RECORD_COPYBOOK_2B rR 15 1 90 90 + | 5 GROUP_1 16 1 60 60 + | 6 FIELD_1 17 1 20 20 + | 6 FILLER 18 21 30 10 + | 6 GROUP_2 19 31 60 30 + | 10 NESTED_FIELD_1 20 31 50 20 + | 10 FILLER 21 51 60 10 + |1 RECORD_COPYBOOK_3 R 22 1 90 90 + | 5 GROUP_1 23 1 90 90 + | 6 FIELD_1 24 1 30 30 + | 6 FILLER 25 31 45 15 + | 6 GROUP_2 26 46 90 45 + | 10 NESTED_FIELD_1 27 46 75 30 + | 10 FILLER 28 76 90 15""" .stripMargin.replace("\r\n", "\n")) } @@ -127,16 +130,16 @@ class MergeCopybooksSpec extends FunSuite { assert(copybook1M.generateRecordLayoutPositions == copybook1.generateRecordLayoutPositions) - assert(copybook1M.generateRecordLayoutPositions == + assertEqualsMultiline(copybook1M.generateRecordLayoutPositions(), """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH | - | 1 RECORD_COPYBOOK_1 7 1 30 30 - | 5 GROUP_1 7 1 30 30 - | 6 FIELD_1 3 1 10 10 - | 6 FILLER 4 11 15 5 - | 6 GROUP_2 7 16 30 15 - | 10 NESTED_FIELD_1 6 16 25 10 - | 10 FILLER 7 26 30 5""" + |1 RECORD_COPYBOOK_1 1 1 30 30 + | 5 GROUP_1 2 1 30 30 + | 6 FIELD_1 3 1 10 10 + | 6 FILLER 4 11 15 5 + | 6 GROUP_2 5 16 30 15 + | 10 NESTED_FIELD_1 6 16 25 10 + | 10 FILLER 7 26 30 5""" .stripMargin.replace("\r\n", "\n")) } diff --git a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseCommentsSpec.scala b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseCommentsSpec.scala index 4ecb2d49..5fbe1ba3 100644 --- a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseCommentsSpec.scala +++ b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseCommentsSpec.scala @@ -17,19 +17,19 @@ package za.co.absa.cobrix.cobol.parser.copybooks import org.scalatest.FunSuite -import org.slf4j.LoggerFactory +import org.slf4j.{Logger, LoggerFactory} import za.co.absa.cobrix.cobol.parser.CopybookParser +import za.co.absa.cobrix.cobol.testutils.SimpleComparisonBase -class ParseCommentsSpec extends FunSuite { - - private val logger = LoggerFactory.getLogger(this.getClass) +class ParseCommentsSpec extends FunSuite with SimpleComparisonBase { + private implicit val logger: Logger = LoggerFactory.getLogger(this.getClass) private val expectedLayout = """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH | - | 1 GRP_01 3 1 11 11 - | 3 FIELD1 2 1 1 1 - | 3 FIELD2 3 2 11 10""" + |1 GRP_01 1 1 11 11 + | 3 FIELD1 2 1 1 1 + | 3 FIELD2 3 2 11 10""" .stripMargin.replace("\r\n", "\n") test("Test copybook parser handles comment lines") { @@ -44,7 +44,7 @@ class ParseCommentsSpec extends FunSuite { val copybook = CopybookParser.parseTree(copybookWithCommentLines) val layout = copybook.generateRecordLayoutPositions() - assert(layout == expectedLayout) + assertEqualsMultiline(layout, expectedLayout) } test("Test copybook parser handles comments at the beginning of the lines") { @@ -58,7 +58,7 @@ class ParseCommentsSpec extends FunSuite { val copybook = CopybookParser.parseTree(copybookWithStartComments) val layout = copybook.generateRecordLayoutPositions() - assert(layout == expectedLayout) + assertEqualsMultiline(layout, expectedLayout) } test("Test copybook parser handles comments at the end of the lines") { @@ -72,7 +72,7 @@ class ParseCommentsSpec extends FunSuite { val copybook = CopybookParser.parseTree(copybookWithEndComments) val layout = copybook.generateRecordLayoutPositions() - assert(layout == expectedLayout) + assertEqualsMultiline(layout, expectedLayout) } test("Test copybook parser handles comments everywhere when appropriate") { @@ -89,7 +89,7 @@ class ParseCommentsSpec extends FunSuite { val copybook = CopybookParser.parseTree(copybookWithMoreComments) val layout = copybook.generateRecordLayoutPositions() - assert(layout == expectedLayout) + assertEqualsMultiline(layout, expectedLayout) } } diff --git a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseDebugRedefinedSpec.scala b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseDebugRedefinedSpec.scala index b5e3722f..128353e4 100644 --- a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseDebugRedefinedSpec.scala +++ b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseDebugRedefinedSpec.scala @@ -17,14 +17,15 @@ package za.co.absa.cobrix.cobol.parser.copybooks import org.scalatest.FunSuite -import org.slf4j.LoggerFactory +import org.slf4j.{Logger, LoggerFactory} import za.co.absa.cobrix.cobol.parser.CopybookParser import za.co.absa.cobrix.cobol.parser.ast.{Group, Statement} import za.co.absa.cobrix.cobol.parser.policies.DebugFieldsPolicy.HexValue +import za.co.absa.cobrix.cobol.testutils.SimpleComparisonBase -class ParseDebugRedefinedSpec extends FunSuite { +class ParseDebugRedefinedSpec extends FunSuite with SimpleComparisonBase { - private val logger = LoggerFactory.getLogger(this.getClass) + private implicit val logger: Logger = LoggerFactory.getLogger(this.getClass) test("Test copybook parser generates debug columns for redefined fields") { val copybookWithRedefined: String = @@ -64,23 +65,23 @@ class ParseDebugRedefinedSpec extends FunSuite { val expectedLayout = """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH | - | 1 TRANSDATA 11 1 7 7 - | 10 CURRENCY r 2 1 3 3 - | 10 CURRENCY_debug R 3 1 3 3 - | 10 FIELD1 r 4 4 7 4 - | 10 FIELD1_debug rR 5 4 7 4 - | 10 FIELD2 rR 6 4 7 4 - | 10 FIELD2_debug rR 7 4 7 4 - | 10 FIELD3 rR 8 4 7 4 - | 10 FIELD3_debug rR 9 4 7 4 - | 10 FIELD4 rR 10 4 7 4 - | 10 FIELD4_debug R 11 4 7 4""" + |1 TRANSDATA 1 1 7 7 + | 10 CURRENCY r 2 1 3 3 + | 10 CURRENCY_debug R 3 1 3 3 + | 10 FIELD1 r 4 4 7 4 + | 10 FIELD1_debug rR 5 4 7 4 + | 10 FIELD2 rR 6 4 7 4 + | 10 FIELD2_debug rR 7 4 7 4 + | 10 FIELD3 rR 8 4 7 4 + | 10 FIELD3_debug rR 9 4 7 4 + | 10 FIELD4 rR 10 4 7 4 + | 10 FIELD4_debug R 11 4 7 4""" .stripMargin.replace("\r\n", "\n") val copybook = CopybookParser.parseTree(copybookWithRedefined, debugFieldsPolicy = HexValue) val actualLayout = copybook.generateRecordLayoutPositions() - assert(actualLayout == expectedLayout) + assertEqualsMultiline(actualLayout, expectedLayout) } } diff --git a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseFieldNamesSpec.scala b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseFieldNamesSpec.scala index 495c18f7..647fc8a7 100644 --- a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseFieldNamesSpec.scala +++ b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseFieldNamesSpec.scala @@ -17,12 +17,12 @@ package za.co.absa.cobrix.cobol.parser.copybooks import org.scalatest.FunSuite -import org.slf4j.LoggerFactory +import org.slf4j.{Logger, LoggerFactory} import za.co.absa.cobrix.cobol.parser.CopybookParser +import za.co.absa.cobrix.cobol.testutils.SimpleComparisonBase -class ParseFieldNamesSpec extends FunSuite { - - private val logger = LoggerFactory.getLogger(this.getClass) +class ParseFieldNamesSpec extends FunSuite with SimpleComparisonBase { + private implicit val logger: Logger = LoggerFactory.getLogger(this.getClass) test("Test copybook parser handles comment lines") { val copybookWithCommentLines = @@ -44,23 +44,23 @@ class ParseFieldNamesSpec extends FunSuite { val expectedLayout = """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH | - | 1 GRP_01_02 3 1 11 11 - | 3 FIELD_1 2 1 1 1 - | 3 FIELD_2 3 2 11 10 - | 1 GRP_01_02 6 12 22 11 - | 3 FIELD_1 5 12 12 1 - | 3 FIELD_2 6 13 22 10 - | 1 GRP0102 9 23 33 11 - | 3 FIELD1 8 23 23 1 - | 3 FIELD2 9 24 33 10 - | 1 SOMETHING_SOMETHING_DATE_NUM 12 34 44 11 - | 3 FIELD1 11 34 34 1 - | 3 FIELD2 12 35 44 10""" + |1 GRP_01_02 1 1 11 11 + | 3 FIELD_1 2 1 1 1 + | 3 FIELD_2 3 2 11 10 + |1 GRP_01_02 4 12 22 11 + | 3 FIELD_1 5 12 12 1 + | 3 FIELD_2 6 13 22 10 + |1 GRP0102 7 23 33 11 + | 3 FIELD1 8 23 23 1 + | 3 FIELD2 9 24 33 10 + |1 SOMETHING_SOMETHING_DATE_NUM 10 34 44 11 + | 3 FIELD1 11 34 34 1 + | 3 FIELD2 12 35 44 10""" .stripMargin.replace("\r\n", "\n") val copybook = CopybookParser.parseTree(copybookWithCommentLines) val layout = copybook.generateRecordLayoutPositions() - assert(layout == expectedLayout) + assertEqualsMultiline(layout, expectedLayout) } } diff --git a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseFieldsNestingSpec.scala b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseFieldsNestingSpec.scala index 0254fa32..7030e734 100644 --- a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseFieldsNestingSpec.scala +++ b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/parser/copybooks/ParseFieldsNestingSpec.scala @@ -17,13 +17,13 @@ package za.co.absa.cobrix.cobol.parser.copybooks import org.scalatest.FunSuite -import org.slf4j.LoggerFactory +import org.slf4j.{Logger, LoggerFactory} import za.co.absa.cobrix.cobol.parser.CopybookParser import za.co.absa.cobrix.cobol.parser.exceptions.SyntaxErrorException +import za.co.absa.cobrix.cobol.testutils.SimpleComparisonBase -class ParseFieldsNestingSpec extends FunSuite { - - private val logger = LoggerFactory.getLogger(this.getClass) +class ParseFieldsNestingSpec extends FunSuite with SimpleComparisonBase { + private implicit val logger: Logger = LoggerFactory.getLogger(this.getClass) test("Test copybook parser handling of levels nesting") { val copybookWithCommentLines = @@ -40,19 +40,19 @@ class ParseFieldsNestingSpec extends FunSuite { val expectedLayout = """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH | - | 1 ROOT_GROUP 7 1 20 20 - | 3 NESTED_PRIMITIVE_01 2 1 4 4 - | 3 NESTED_GRP_01 4 5 11 7 - | 5 NESTED_NESTED_02 4 5 11 7 - | 3 FILL 5 12 18 7 - | 2 FILLER_1 7 19 20 2 - | 3 NUMERIC_FIELD_01 7 19 20 2""" + |1 ROOT_GROUP 1 1 20 20 + | 3 NESTED_PRIMITIVE_01 2 1 4 4 + | 3 NESTED_GRP_01 3 5 11 7 + | 5 NESTED_NESTED_02 4 5 11 7 + | 3 FILL 5 12 18 7 + | 2 FILLER_1 6 19 20 2 + | 3 NUMERIC_FIELD_01 7 19 20 2""" .stripMargin.replace("\r\n", "\n") val copybook = CopybookParser.parseTree(copybookWithCommentLines) val layout = copybook.generateRecordLayoutPositions() - assert(layout == expectedLayout) + assertEqualsMultiline(layout, expectedLayout) } test("Test copybook parser doesn't allow nesting leaf statements") { diff --git a/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/testutils/SimpleComparisonBase.scala b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/testutils/SimpleComparisonBase.scala new file mode 100644 index 00000000..8b3ef093 --- /dev/null +++ b/cobol-parser/src/test/scala/za/co/absa/cobrix/cobol/testutils/SimpleComparisonBase.scala @@ -0,0 +1,38 @@ +/* + * Copyright 2018 ABSA Group Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package za.co.absa.cobrix.cobol.testutils + +import org.scalatest.TestSuite +import org.slf4j.Logger + +/** + * This trait extends a test suite with the method for comparing small multiline strings. + */ +trait SimpleComparisonBase extends TestSuite { + def removeWhiteSpace(s: String): String = { + s.replaceAll("[\\r\\n ]", "") + } + + def assertEqualsMultiline(actualResults: String, expectedResults: String)(implicit logger: Logger): Unit = { + if (actualResults.replaceAll("[\r\n]", "") != expectedResults.replaceAll("[\r\n]", "")) { + logger.error(s"EXPECTED:\n$expectedResults") + logger.error(s"ACTUAL:\n$actualResults") + fail("Actual data does not match the expected data (see above).") + } + } + +} diff --git a/data/test11_expected/test11_layout.txt b/data/test11_expected/test11_layout.txt index 2a5fd4b7..36b47517 100644 --- a/data/test11_expected/test11_layout.txt +++ b/data/test11_expected/test11_layout.txt @@ -1,15 +1,15 @@ -------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH - 1 COMPANY_DETAILS 13 1 64 64 - 5 SEGMENT_ID 2 1 5 5 - 5 COMPANY_ID 3 6 15 10 - 5 STATIC_DETAILS r 10 16 64 49 - 10 COMPANY_NAME 5 16 30 15 - 10 ADDRESS 6 31 55 25 - 10 TAXPAYER 10 56 64 9 - 15 TAXPAYER_TYPE 8 56 56 1 - 15 TAXPAYER_STR r 9 57 64 8 - 15 TAXPAYER_NUM R 10 57 64 8 - 5 CONTACTS R 13 16 64 49 - 10 PHONE_NUMBER 12 16 32 17 - 10 CONTACT_PERSON 13 33 60 28 \ No newline at end of file +1 COMPANY_DETAILS 1 1 64 64 + 5 SEGMENT_ID 2 1 5 5 + 5 COMPANY_ID 3 6 15 10 + 5 STATIC_DETAILS r 4 16 64 49 + 10 COMPANY_NAME 5 16 30 15 + 10 ADDRESS 6 31 55 25 + 10 TAXPAYER 7 56 64 9 + 15 TAXPAYER_TYPE 8 56 56 1 + 15 TAXPAYER_STR r 9 57 64 8 + 15 TAXPAYER_NUM R 10 57 64 8 + 5 CONTACTS R 11 16 64 49 + 10 PHONE_NUMBER 12 16 32 17 + 10 CONTACT_PERSON 13 33 60 28 \ No newline at end of file diff --git a/data/test13_expected/test13a_layout.txt b/data/test13_expected/test13a_layout.txt index 54ff9705..d8ac03b6 100644 --- a/data/test13_expected/test13a_layout.txt +++ b/data/test13_expected/test13a_layout.txt @@ -1,9 +1,9 @@ -------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH - 1 TRANSDATA 7 1 45 45 - 5 CURRENCY 2 1 3 3 - 5 SIGNATURE 3 4 11 8 - 5 COMPANY_NAME 4 12 26 15 - 5 COMPANY_ID 5 27 36 10 - 5 WEALTH_QFY 6 37 37 1 - 5 AMOUNT 7 38 45 8 \ No newline at end of file +1 TRANSDATA 1 1 45 45 + 5 CURRENCY 2 1 3 3 + 5 SIGNATURE 3 4 11 8 + 5 COMPANY_NAME 4 12 26 15 + 5 COMPANY_ID 5 27 36 10 + 5 WEALTH_QFY 6 37 37 1 + 5 AMOUNT 7 38 45 8 \ No newline at end of file diff --git a/data/test13_expected/test13b_layout.txt b/data/test13_expected/test13b_layout.txt index 2a5fd4b7..36b47517 100644 --- a/data/test13_expected/test13b_layout.txt +++ b/data/test13_expected/test13b_layout.txt @@ -1,15 +1,15 @@ -------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH - 1 COMPANY_DETAILS 13 1 64 64 - 5 SEGMENT_ID 2 1 5 5 - 5 COMPANY_ID 3 6 15 10 - 5 STATIC_DETAILS r 10 16 64 49 - 10 COMPANY_NAME 5 16 30 15 - 10 ADDRESS 6 31 55 25 - 10 TAXPAYER 10 56 64 9 - 15 TAXPAYER_TYPE 8 56 56 1 - 15 TAXPAYER_STR r 9 57 64 8 - 15 TAXPAYER_NUM R 10 57 64 8 - 5 CONTACTS R 13 16 64 49 - 10 PHONE_NUMBER 12 16 32 17 - 10 CONTACT_PERSON 13 33 60 28 \ No newline at end of file +1 COMPANY_DETAILS 1 1 64 64 + 5 SEGMENT_ID 2 1 5 5 + 5 COMPANY_ID 3 6 15 10 + 5 STATIC_DETAILS r 4 16 64 49 + 10 COMPANY_NAME 5 16 30 15 + 10 ADDRESS 6 31 55 25 + 10 TAXPAYER 7 56 64 9 + 15 TAXPAYER_TYPE 8 56 56 1 + 15 TAXPAYER_STR r 9 57 64 8 + 15 TAXPAYER_NUM R 10 57 64 8 + 5 CONTACTS R 11 16 64 49 + 10 PHONE_NUMBER 12 16 32 17 + 10 CONTACT_PERSON 13 33 60 28 \ No newline at end of file diff --git a/data/test16_expected/test16_layout.txt b/data/test16_expected/test16_layout.txt index e1fb0756..5bc31e8a 100644 --- a/data/test16_expected/test16_layout.txt +++ b/data/test16_expected/test16_layout.txt @@ -1,16 +1,16 @@ -------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH - 1 ENTITY 14 1 64 64 - 5 SEGMENT_ID 2 1 1 1 - 5 COMPANY r 6 2 64 63 - 10 COMPANY_NAME 4 2 21 20 - 10 ADDRESS 5 22 51 30 - 10 TAXPAYER 6 52 59 8 - 5 PERSON rR 11 2 64 63 - 10 FIRST_NAME 8 2 17 16 - 10 LAST_NAME 9 18 33 16 - 10 ADDRESS 10 34 53 20 - 10 PHONE_NUM 11 54 64 11 - 5 PO_BOX R 14 2 64 63 - 10 PO_NUMBER 13 2 13 12 - 10 BRANCH_ADDRESS 14 14 33 20 \ No newline at end of file +1 ENTITY 1 1 64 64 + 5 SEGMENT_ID 2 1 1 1 + 5 COMPANY r 3 2 64 63 + 10 COMPANY_NAME 4 2 21 20 + 10 ADDRESS 5 22 51 30 + 10 TAXPAYER 6 52 59 8 + 5 PERSON rR 7 2 64 63 + 10 FIRST_NAME 8 2 17 16 + 10 LAST_NAME 9 18 33 16 + 10 ADDRESS 10 34 53 20 + 10 PHONE_NUM 11 54 64 11 + 5 PO_BOX R 12 2 64 63 + 10 PO_NUMBER 13 2 13 12 + 10 BRANCH_ADDRESS 14 14 33 20 \ No newline at end of file diff --git a/data/test17_expected/test17a_layout.txt b/data/test17_expected/test17a_layout.txt index 8aa60624..669c4ed2 100644 --- a/data/test17_expected/test17a_layout.txt +++ b/data/test17_expected/test17a_layout.txt @@ -1,34 +1,34 @@ -------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH - 1 ENTITY 32 1 108 108 - 5 SEGMENT_ID 2 1 1 1 - 5 COMPANY r 6 2 108 107 - 10 COMPANY_NAME 4 2 21 20 - 10 ADDRESS 5 22 51 30 - 10 TAXPAYER 6 52 55 4 - 5 DEPT rR 9 2 108 107 - 10 DEPT_NAME 8 2 23 22 - 10 EXTENSION 9 24 29 6 - 5 EMPLOYEE rR 15 2 108 107 - 10 FIRST_NAME 11 2 17 16 - 10 LAST_NAME 12 18 33 16 - 10 ROLE 13 34 51 18 - 10 HOME_ADDRESS 14 52 91 40 - 10 PHONE_NUM 15 92 108 17 - 5 OFFICE rR 19 2 108 107 - 10 ADDRESS 17 2 31 30 - 10 FLOOR 18 32 34 3 - 10 ROOM_NUMBER 19 35 38 4 - 5 CUSTOMER rR 23 2 108 107 - 10 CUSTOMER_NAME 21 2 21 20 - 10 POSTAL_ADDRESS 22 22 51 30 - 10 ZIP 23 52 61 10 - 5 CONTACT rR 27 2 108 107 - 10 FIRST_NAME 25 2 17 16 - 10 LAST_NAME 26 18 33 16 - 10 PHONE_NUM 27 34 50 17 - 5 CONTRACT R 32 2 108 107 - 10 CONTRACT_NUMBER 29 2 16 15 - 10 STATE 30 17 24 8 - 10 DUE_DATE 31 25 34 10 - 10 AMOUNT 32 35 41 7 \ No newline at end of file +1 ENTITY 1 1 108 108 + 5 SEGMENT_ID 2 1 1 1 + 5 COMPANY r 3 2 108 107 + 10 COMPANY_NAME 4 2 21 20 + 10 ADDRESS 5 22 51 30 + 10 TAXPAYER 6 52 55 4 + 5 DEPT rR 7 2 108 107 + 10 DEPT_NAME 8 2 23 22 + 10 EXTENSION 9 24 29 6 + 5 EMPLOYEE rR 10 2 108 107 + 10 FIRST_NAME 11 2 17 16 + 10 LAST_NAME 12 18 33 16 + 10 ROLE 13 34 51 18 + 10 HOME_ADDRESS 14 52 91 40 + 10 PHONE_NUM 15 92 108 17 + 5 OFFICE rR 16 2 108 107 + 10 ADDRESS 17 2 31 30 + 10 FLOOR 18 32 34 3 + 10 ROOM_NUMBER 19 35 38 4 + 5 CUSTOMER rR 20 2 108 107 + 10 CUSTOMER_NAME 21 2 21 20 + 10 POSTAL_ADDRESS 22 22 51 30 + 10 ZIP 23 52 61 10 + 5 CONTACT rR 24 2 108 107 + 10 FIRST_NAME 25 2 17 16 + 10 LAST_NAME 26 18 33 16 + 10 PHONE_NUM 27 34 50 17 + 5 CONTRACT R 28 2 108 107 + 10 CONTRACT_NUMBER 29 2 16 15 + 10 STATE 30 17 24 8 + 10 DUE_DATE 31 25 34 10 + 10 AMOUNT 32 35 41 7 \ No newline at end of file diff --git a/data/test18 special_char_expected/test18a_layout.txt b/data/test18 special_char_expected/test18a_layout.txt index 8aa60624..669c4ed2 100644 --- a/data/test18 special_char_expected/test18a_layout.txt +++ b/data/test18 special_char_expected/test18a_layout.txt @@ -1,34 +1,34 @@ -------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH - 1 ENTITY 32 1 108 108 - 5 SEGMENT_ID 2 1 1 1 - 5 COMPANY r 6 2 108 107 - 10 COMPANY_NAME 4 2 21 20 - 10 ADDRESS 5 22 51 30 - 10 TAXPAYER 6 52 55 4 - 5 DEPT rR 9 2 108 107 - 10 DEPT_NAME 8 2 23 22 - 10 EXTENSION 9 24 29 6 - 5 EMPLOYEE rR 15 2 108 107 - 10 FIRST_NAME 11 2 17 16 - 10 LAST_NAME 12 18 33 16 - 10 ROLE 13 34 51 18 - 10 HOME_ADDRESS 14 52 91 40 - 10 PHONE_NUM 15 92 108 17 - 5 OFFICE rR 19 2 108 107 - 10 ADDRESS 17 2 31 30 - 10 FLOOR 18 32 34 3 - 10 ROOM_NUMBER 19 35 38 4 - 5 CUSTOMER rR 23 2 108 107 - 10 CUSTOMER_NAME 21 2 21 20 - 10 POSTAL_ADDRESS 22 22 51 30 - 10 ZIP 23 52 61 10 - 5 CONTACT rR 27 2 108 107 - 10 FIRST_NAME 25 2 17 16 - 10 LAST_NAME 26 18 33 16 - 10 PHONE_NUM 27 34 50 17 - 5 CONTRACT R 32 2 108 107 - 10 CONTRACT_NUMBER 29 2 16 15 - 10 STATE 30 17 24 8 - 10 DUE_DATE 31 25 34 10 - 10 AMOUNT 32 35 41 7 \ No newline at end of file +1 ENTITY 1 1 108 108 + 5 SEGMENT_ID 2 1 1 1 + 5 COMPANY r 3 2 108 107 + 10 COMPANY_NAME 4 2 21 20 + 10 ADDRESS 5 22 51 30 + 10 TAXPAYER 6 52 55 4 + 5 DEPT rR 7 2 108 107 + 10 DEPT_NAME 8 2 23 22 + 10 EXTENSION 9 24 29 6 + 5 EMPLOYEE rR 10 2 108 107 + 10 FIRST_NAME 11 2 17 16 + 10 LAST_NAME 12 18 33 16 + 10 ROLE 13 34 51 18 + 10 HOME_ADDRESS 14 52 91 40 + 10 PHONE_NUM 15 92 108 17 + 5 OFFICE rR 16 2 108 107 + 10 ADDRESS 17 2 31 30 + 10 FLOOR 18 32 34 3 + 10 ROOM_NUMBER 19 35 38 4 + 5 CUSTOMER rR 20 2 108 107 + 10 CUSTOMER_NAME 21 2 21 20 + 10 POSTAL_ADDRESS 22 22 51 30 + 10 ZIP 23 52 61 10 + 5 CONTACT rR 24 2 108 107 + 10 FIRST_NAME 25 2 17 16 + 10 LAST_NAME 26 18 33 16 + 10 PHONE_NUM 27 34 50 17 + 5 CONTRACT R 28 2 108 107 + 10 CONTRACT_NUMBER 29 2 16 15 + 10 STATE 30 17 24 8 + 10 DUE_DATE 31 25 34 10 + 10 AMOUNT 32 35 41 7 \ No newline at end of file diff --git a/data/test24_expected/test24_layout.txt b/data/test24_expected/test24_layout.txt index 84c7536f..fb99eec5 100644 --- a/data/test24_expected/test24_layout.txt +++ b/data/test24_expected/test24_layout.txt @@ -1,393 +1,393 @@ -------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH - 1 RECORD 391 1 1493 1493 - 10 ID r 2 1 4 4 - 10 ID_debug R 3 1 4 4 - 10 STRING_VAL r 4 5 14 10 - 10 STRING_VAL_debug R 5 5 14 10 - 10 NUM_STR_INT01 r 6 15 15 1 - 10 NUM_STR_INT01_debug R 7 15 15 1 - 10 NUM_STR_INT02 r 8 16 17 2 - 10 NUM_STR_INT02_debug R 9 16 17 2 - 10 NUM_STR_INT03 r 10 18 20 3 - 10 NUM_STR_INT03_debug R 11 18 20 3 - 10 NUM_STR_INT04 r 12 21 24 4 - 10 NUM_STR_INT04_debug R 13 21 24 4 - 10 NUM_STR_INT05 r 14 25 29 5 - 10 NUM_STR_INT05_debug R 15 25 29 5 - 10 NUM_STR_INT06 r 16 30 37 8 - 10 NUM_STR_INT06_debug R 17 30 37 8 - 10 NUM_STR_INT07 r 18 38 46 9 - 10 NUM_STR_INT07_debug R 19 38 46 9 - 10 NUM_STR_INT08 r 20 47 56 10 - 10 NUM_STR_INT08_debug R 21 47 56 10 - 10 NUM_STR_INT09 r 22 57 67 11 - 10 NUM_STR_INT09_debug R 23 57 67 11 - 10 NUM_STR_INT10 r 24 68 84 17 - 10 NUM_STR_INT10_debug R 25 68 84 17 - 10 NUM_STR_INT11 r 26 85 102 18 - 10 NUM_STR_INT11_debug R 27 85 102 18 - 10 NUM_STR_INT12 r 28 103 121 19 - 10 NUM_STR_INT12_debug R 29 103 121 19 - 10 NUM_STR_INT13 r 30 122 141 20 - 10 NUM_STR_INT13_debug R 31 122 141 20 - 10 NUM_STR_INT14 r 32 142 178 37 - 10 NUM_STR_INT14_debug R 33 142 178 37 - 10 NUM_STR_SINT02 r 34 179 180 2 - 10 NUM_STR_SINT02_debug R 35 179 180 2 - 10 NUM_STR_SINT03 r 36 181 183 3 - 10 NUM_STR_SINT03_debug R 37 181 183 3 - 10 NUM_STR_SINT04 r 38 184 187 4 - 10 NUM_STR_SINT04_debug R 39 184 187 4 - 10 NUM_STR_SINT05 r 40 188 192 5 - 10 NUM_STR_SINT05_debug R 41 188 192 5 - 10 NUM_STR_SINT06 r 42 193 200 8 - 10 NUM_STR_SINT06_debug R 43 193 200 8 - 10 NUM_STR_SINT07 r 44 201 209 9 - 10 NUM_STR_SINT07_debug R 45 201 209 9 - 10 NUM_STR_SINT08 r 46 210 219 10 - 10 NUM_STR_SINT08_debug R 47 210 219 10 - 10 NUM_STR_SINT09 r 48 220 230 11 - 10 NUM_STR_SINT09_debug R 49 220 230 11 - 10 NUM_STR_SINT10 r 50 231 247 17 - 10 NUM_STR_SINT10_debug R 51 231 247 17 - 10 NUM_STR_SINT11 r 52 248 265 18 - 10 NUM_STR_SINT11_debug R 53 248 265 18 - 10 NUM_STR_SINT12 r 54 266 284 19 - 10 NUM_STR_SINT12_debug R 55 266 284 19 - 10 NUM_STR_SINT13 r 56 285 304 20 - 10 NUM_STR_SINT13_debug R 57 285 304 20 - 10 NUM_STR_SINT14 r 58 305 341 37 - 10 NUM_STR_SINT14_debug R 59 305 341 37 - 10 NUM_STR_DEC01 r 60 342 344 3 - 10 NUM_STR_DEC01_debug R 61 342 344 3 - 10 NUM_STR_DEC02 r 62 345 348 4 - 10 NUM_STR_DEC02_debug R 63 345 348 4 - 10 NUM_STR_DEC03 r 64 349 353 5 - 10 NUM_STR_DEC03_debug R 65 349 353 5 - 10 NUM_STR_DEC04 r 66 354 361 8 - 10 NUM_STR_DEC04_debug R 67 354 361 8 - 10 NUM_STR_DEC05 r 68 362 370 9 - 10 NUM_STR_DEC05_debug R 69 362 370 9 - 10 NUM_STR_DEC06 r 70 371 380 10 - 10 NUM_STR_DEC06_debug R 71 371 380 10 - 10 NUM_STR_DEC07 r 72 381 397 17 - 10 NUM_STR_DEC07_debug R 73 381 397 17 - 10 NUM_STR_DEC08 r 74 398 415 18 - 10 NUM_STR_DEC08_debug R 75 398 415 18 - 10 NUM_STR_DEC09 r 76 416 434 19 - 10 NUM_STR_DEC09_debug R 77 416 434 19 - 10 NUM_STR_DEC10 r 78 435 462 28 - 10 NUM_STR_DEC10_debug R 79 435 462 28 - 10 NUM_STR_SDEC01 r 80 463 465 3 - 10 NUM_STR_SDEC01_debug R 81 463 465 3 - 10 NUM_STR_SDEC02 r 82 466 469 4 - 10 NUM_STR_SDEC02_debug R 83 466 469 4 - 10 NUM_STR_SDEC03 r 84 470 474 5 - 10 NUM_STR_SDEC03_debug R 85 470 474 5 - 10 NUM_STR_SDEC04 r 86 475 482 8 - 10 NUM_STR_SDEC04_debug R 87 475 482 8 - 10 NUM_STR_SDEC05 r 88 483 491 9 - 10 NUM_STR_SDEC05_debug R 89 483 491 9 - 10 NUM_STR_SDEC06 r 90 492 501 10 - 10 NUM_STR_SDEC06_debug R 91 492 501 10 - 10 NUM_STR_SDEC07 r 92 502 518 17 - 10 NUM_STR_SDEC07_debug R 93 502 518 17 - 10 NUM_STR_SDEC08 r 94 519 536 18 - 10 NUM_STR_SDEC08_debug R 95 519 536 18 - 10 NUM_STR_SDEC09 r 96 537 555 19 - 10 NUM_STR_SDEC09_debug R 97 537 555 19 - 10 NUM_STR_SDEC10 r 98 556 583 28 - 10 NUM_STR_SDEC10_debug R 99 556 583 28 - 10 NUM_STR_EDEC03 r 100 584 589 6 - 10 NUM_STR_EDEC03_debug R 101 584 589 6 - 10 NUM_STR_EDEC04 r 102 590 598 9 - 10 NUM_STR_EDEC04_debug R 103 590 598 9 - 10 NUM_STR_EDEC05 r 104 599 608 10 - 10 NUM_STR_EDEC05_debug R 105 599 608 10 - 10 NUM_STR_EDEC06 r 106 609 619 11 - 10 NUM_STR_EDEC06_debug R 107 609 619 11 - 10 NUM_BIN_INT01 r 108 620 621 2 - 10 NUM_BIN_INT01_debug R 109 620 621 2 - 10 NUM_BIN_INT02 r 110 622 623 2 - 10 NUM_BIN_INT02_debug R 111 622 623 2 - 10 NUM_BIN_INT03 r 112 624 625 2 - 10 NUM_BIN_INT03_debug R 113 624 625 2 - 10 NUM_BIN_INT04 r 114 626 627 2 - 10 NUM_BIN_INT04_debug R 115 626 627 2 - 10 NUM_BIN_INT05 r 116 628 631 4 - 10 NUM_BIN_INT05_debug R 117 628 631 4 - 10 NUM_BIN_INT06 r 118 632 635 4 - 10 NUM_BIN_INT06_debug R 119 632 635 4 - 10 NUM_BIN_INT07 r 120 636 639 4 - 10 NUM_BIN_INT07_debug R 121 636 639 4 - 10 NUM_BIN_INT08 r 122 640 647 8 - 10 NUM_BIN_INT08_debug R 123 640 647 8 - 10 NUM_BIN_INT09 r 124 648 655 8 - 10 NUM_BIN_INT09_debug R 125 648 655 8 - 10 NUM_BIN_INT10 r 126 656 663 8 - 10 NUM_BIN_INT10_debug R 127 656 663 8 - 10 NUM_BIN_INT11 r 128 664 671 8 - 10 NUM_BIN_INT11_debug R 129 664 671 8 - 10 NUM_BIN_INT12 r 130 672 680 9 - 10 NUM_BIN_INT12_debug R 131 672 680 9 - 10 NUM_BIN_INT13 r 132 681 689 9 - 10 NUM_BIN_INT13_debug R 133 681 689 9 - 10 NUM_BIN_INT14 r 134 690 705 16 - 10 NUM_BIN_INT14_debug R 135 690 705 16 - 10 NUM_SBIN_SINT01 r 136 706 707 2 - 10 NUM_SBIN_SINT01_debug R 137 706 707 2 - 10 NUM_SBIN_SINT02 r 138 708 709 2 - 10 NUM_SBIN_SINT02_debug R 139 708 709 2 - 10 NUM_SBIN_SINT03 r 140 710 711 2 - 10 NUM_SBIN_SINT03_debug R 141 710 711 2 - 10 NUM_SBIN_SINT04 r 142 712 713 2 - 10 NUM_SBIN_SINT04_debug R 143 712 713 2 - 10 NUM_SBIN_SINT05 r 144 714 717 4 - 10 NUM_SBIN_SINT05_debug R 145 714 717 4 - 10 NUM_SBIN_SINT06 r 146 718 721 4 - 10 NUM_SBIN_SINT06_debug R 147 718 721 4 - 10 NUM_SBIN_SINT07 r 148 722 725 4 - 10 NUM_SBIN_SINT07_debug R 149 722 725 4 - 10 NUM_SBIN_SINT08 r 150 726 733 8 - 10 NUM_SBIN_SINT08_debug R 151 726 733 8 - 10 NUM_SBIN_SINT09 r 152 734 741 8 - 10 NUM_SBIN_SINT09_debug R 153 734 741 8 - 10 NUM_SBIN_SINT10 r 154 742 749 8 - 10 NUM_SBIN_SINT10_debug R 155 742 749 8 - 10 NUM_SBIN_SINT11 r 156 750 757 8 - 10 NUM_SBIN_SINT11_debug R 157 750 757 8 - 10 NUM_SBIN_SINT12 r 158 758 766 9 - 10 NUM_SBIN_SINT12_debug R 159 758 766 9 - 10 NUM_SBIN_SINT13 r 160 767 775 9 - 10 NUM_SBIN_SINT13_debug R 161 767 775 9 - 10 NUM_SBIN_SINT14 r 162 776 791 16 - 10 NUM_SBIN_SINT14_debug R 163 776 791 16 - 10 NUM_BIN_DEC01 r 164 792 793 2 - 10 NUM_BIN_DEC01_debug R 165 792 793 2 - 10 NUM_BIN_DEC02 r 166 794 795 2 - 10 NUM_BIN_DEC02_debug R 167 794 795 2 - 10 NUM_BIN_DEC03 r 168 796 799 4 - 10 NUM_BIN_DEC03_debug R 169 796 799 4 - 10 NUM_BIN_DEC04 r 170 800 803 4 - 10 NUM_BIN_DEC04_debug R 171 800 803 4 - 10 NUM_BIN_DEC05 r 172 804 807 4 - 10 NUM_BIN_DEC05_debug R 173 804 807 4 - 10 NUM_BIN_DEC06 r 174 808 815 8 - 10 NUM_BIN_DEC06_debug R 175 808 815 8 - 10 NUM_BIN_DEC07 r 176 816 823 8 - 10 NUM_BIN_DEC07_debug R 177 816 823 8 - 10 NUM_BIN_DEC08 r 178 824 831 8 - 10 NUM_BIN_DEC08_debug R 179 824 831 8 - 10 NUM_BIN_DEC09 r 180 832 840 9 - 10 NUM_BIN_DEC09_debug R 181 832 840 9 - 10 NUM_BIN_DEC10 r 182 841 852 12 - 10 NUM_BIN_DEC10_debug R 183 841 852 12 - 10 NUM_SBIN_DEC01 r 184 853 854 2 - 10 NUM_SBIN_DEC01_debug R 185 853 854 2 - 10 NUM_SBIN_DEC02 r 186 855 856 2 - 10 NUM_SBIN_DEC02_debug R 187 855 856 2 - 10 NUM_SBIN_DEC03 r 188 857 860 4 - 10 NUM_SBIN_DEC03_debug R 189 857 860 4 - 10 NUM_SBIN_DEC04 r 190 861 864 4 - 10 NUM_SBIN_DEC04_debug R 191 861 864 4 - 10 NUM_SBIN_DEC05 r 192 865 868 4 - 10 NUM_SBIN_DEC05_debug R 193 865 868 4 - 10 NUM_SBIN_DEC06 r 194 869 876 8 - 10 NUM_SBIN_DEC06_debug R 195 869 876 8 - 10 NUM_SBIN_DEC07 r 196 877 884 8 - 10 NUM_SBIN_DEC07_debug R 197 877 884 8 - 10 NUM_SBIN_DEC08 r 198 885 892 8 - 10 NUM_SBIN_DEC08_debug R 199 885 892 8 - 10 NUM_SBIN_DEC09 r 200 893 901 9 - 10 NUM_SBIN_DEC09_debug R 201 893 901 9 - 10 NUM_SBIN_DEC10 r 202 902 913 12 - 10 NUM_SBIN_DEC10_debug R 203 902 913 12 - 10 NUM_BCD_INT01 r 204 914 914 1 - 10 NUM_BCD_INT01_debug R 205 914 914 1 - 10 NUM_BCD_INT02 r 206 915 916 2 - 10 NUM_BCD_INT02_debug R 207 915 916 2 - 10 NUM_BCD_INT03 r 208 917 918 2 - 10 NUM_BCD_INT03_debug R 209 917 918 2 - 10 NUM_BCD_INT04 r 210 919 921 3 - 10 NUM_BCD_INT04_debug R 211 919 921 3 - 10 NUM_BCD_INT05 r 212 922 924 3 - 10 NUM_BCD_INT05_debug R 213 922 924 3 - 10 NUM_BCD_INT06 r 214 925 929 5 - 10 NUM_BCD_INT06_debug R 215 925 929 5 - 10 NUM_BCD_INT07 r 216 930 934 5 - 10 NUM_BCD_INT07_debug R 217 930 934 5 - 10 NUM_BCD_INT08 r 218 935 940 6 - 10 NUM_BCD_INT08_debug R 219 935 940 6 - 10 NUM_BCD_INT09 r 220 941 946 6 - 10 NUM_BCD_INT09_debug R 221 941 946 6 - 10 NUM_BCD_INT10 r 222 947 955 9 - 10 NUM_BCD_INT10_debug R 223 947 955 9 - 10 NUM_BCD_INT11 r 224 956 965 10 - 10 NUM_BCD_INT11_debug R 225 956 965 10 - 10 NUM_BCD_INT12 r 226 966 975 10 - 10 NUM_BCD_INT12_debug R 227 966 975 10 - 10 NUM_BCD_INT13 r 228 976 986 11 - 10 NUM_BCD_INT13_debug R 229 976 986 11 - 10 NUM_BCD_INT14 r 230 987 1005 19 - 10 NUM_BCD_INT14_debug R 231 987 1005 19 - 10 NUM_BCD_SINT01 r 232 1006 1006 1 - 10 NUM_BCD_SINT01_debug R 233 1006 1006 1 - 10 NUM_BCD_SINT02 r 234 1007 1008 2 - 10 NUM_BCD_SINT02_debug R 235 1007 1008 2 - 10 NUM_BCD_SINT03 r 236 1009 1010 2 - 10 NUM_BCD_SINT03_debug R 237 1009 1010 2 - 10 NUM_BCD_SINT04 r 238 1011 1013 3 - 10 NUM_BCD_SINT04_debug R 239 1011 1013 3 - 10 NUM_BCD_SINT05 r 240 1014 1016 3 - 10 NUM_BCD_SINT05_debug R 241 1014 1016 3 - 10 NUM_BCD_SINT06 r 242 1017 1021 5 - 10 NUM_BCD_SINT06_debug R 243 1017 1021 5 - 10 NUM_BCD_SINT07 r 244 1022 1026 5 - 10 NUM_BCD_SINT07_debug R 245 1022 1026 5 - 10 NUM_BCD_SINT08 r 246 1027 1032 6 - 10 NUM_BCD_SINT08_debug R 247 1027 1032 6 - 10 NUM_BCD_SINT09 r 248 1033 1038 6 - 10 NUM_BCD_SINT09_debug R 249 1033 1038 6 - 10 NUM_BCD_SINT10 r 250 1039 1047 9 - 10 NUM_BCD_SINT10_debug R 251 1039 1047 9 - 10 NUM_BCD_SINT11 r 252 1048 1057 10 - 10 NUM_BCD_SINT11_debug R 253 1048 1057 10 - 10 NUM_BCD_SINT12 r 254 1058 1067 10 - 10 NUM_BCD_SINT12_debug R 255 1058 1067 10 - 10 NUM_BCD_SINT13 r 256 1068 1078 11 - 10 NUM_BCD_SINT13_debug R 257 1068 1078 11 - 10 NUM_BCD_SINT14 r 258 1079 1097 19 - 10 NUM_BCD_SINT14_debug R 259 1079 1097 19 - 10 NUM_BCD_DEC01 r 260 1098 1099 2 - 10 NUM_BCD_DEC01_debug R 261 1098 1099 2 - 10 NUM_BCD_DEC02 r 262 1100 1102 3 - 10 NUM_BCD_DEC02_debug R 263 1100 1102 3 - 10 NUM_BCD_DEC03 r 264 1103 1105 3 - 10 NUM_BCD_DEC03_debug R 265 1103 1105 3 - 10 NUM_BCD_DEC04 r 266 1106 1110 5 - 10 NUM_BCD_DEC04_debug R 267 1106 1110 5 - 10 NUM_BCD_DEC05 r 268 1111 1115 5 - 10 NUM_BCD_DEC05_debug R 269 1111 1115 5 - 10 NUM_BCD_DEC06 r 270 1116 1121 6 - 10 NUM_BCD_DEC06_debug R 271 1116 1121 6 - 10 NUM_BCD_DEC07 r 272 1122 1130 9 - 10 NUM_BCD_DEC07_debug R 273 1122 1130 9 - 10 NUM_BCD_DEC08 r 274 1131 1140 10 - 10 NUM_BCD_DEC08_debug R 275 1131 1140 10 - 10 NUM_BCD_DEC09 r 276 1141 1150 10 - 10 NUM_BCD_DEC09_debug R 277 1141 1150 10 - 10 NUM_BCD_DEC10 r 278 1151 1165 15 - 10 NUM_BCD_DEC10_debug R 279 1151 1165 15 - 10 NUM_BCD_SDEC01 r 280 1166 1167 2 - 10 NUM_BCD_SDEC01_debug R 281 1166 1167 2 - 10 NUM_BCD_SDEC02 r 282 1168 1170 3 - 10 NUM_BCD_SDEC02_debug R 283 1168 1170 3 - 10 NUM_BCD_SDEC03 r 284 1171 1173 3 - 10 NUM_BCD_SDEC03_debug R 285 1171 1173 3 - 10 NUM_BCD_SDEC04 r 286 1174 1178 5 - 10 NUM_BCD_SDEC04_debug R 287 1174 1178 5 - 10 NUM_BCD_SDEC05 r 288 1179 1183 5 - 10 NUM_BCD_SDEC05_debug R 289 1179 1183 5 - 10 NUM_BCD_SDEC06 r 290 1184 1189 6 - 10 NUM_BCD_SDEC06_debug R 291 1184 1189 6 - 10 NUM_BCD_SDEC07 r 292 1190 1198 9 - 10 NUM_BCD_SDEC07_debug R 293 1190 1198 9 - 10 NUM_BCD_SDEC08 r 294 1199 1208 10 - 10 NUM_BCD_SDEC08_debug R 295 1199 1208 10 - 10 NUM_BCD_SDEC09 r 296 1209 1218 10 - 10 NUM_BCD_SDEC09_debug R 297 1209 1218 10 - 10 NUM_BCD_SDEC10 r 298 1219 1233 15 - 10 NUM_BCD_SDEC10_debug R 299 1219 1233 15 - 10 NUM_SL_STR_INT01 r 300 1234 1243 10 - 10 NUM_SL_STR_INT01_debug R 301 1234 1243 10 - 10 NUM_SL_STR_DEC01 r 302 1244 1248 5 - 10 NUM_SL_STR_DEC01_debug R 303 1244 1248 5 - 10 NUM_ST_STR_INT01 r 304 1249 1258 10 - 10 NUM_ST_STR_INT01_debug R 305 1249 1258 10 - 10 NUM_ST_STR_DEC01 r 306 1259 1263 5 - 10 NUM_ST_STR_DEC01_debug R 307 1259 1263 5 - 10 NUM_SLI_STR_DEC01 r 308 1264 1270 7 - 10 NUM_SLI_STR_DEC01_debug R 309 1264 1270 7 - 10 NUM_STI_STR_DEC01 r 310 1271 1277 7 - 10 NUM_STI_STR_DEC01_debug R 311 1271 1277 7 - 10 NUM_SLI_DEBUG r 312 1278 1284 7 - 10 NUM_SLI_DEBUG_debug R 313 1278 1284 7 - 10 NUM_STI_DEBUG r 314 1285 1291 7 - 10 NUM_STI_DEBUG_debug R 315 1285 1291 7 - 10 FLOAT_01 r 316 1292 1295 4 - 10 FLOAT_01_debug R 317 1292 1295 4 - 10 DOUBLE_01 r 318 1296 1303 8 - 10 DOUBLE_01_debug R 319 1296 1303 8 - 10 COMMON_8_BIN r 320 1304 1307 4 - 10 COMMON_8_BIN_debug R 321 1304 1307 4 - 10 COMMON_S3_BIN r 322 1308 1309 2 - 10 COMMON_S3_BIN_debug R 323 1308 1309 2 - 10 COMMON_S94COMP r 324 1310 1311 2 - 10 COMMON_S94COMP_debug R 325 1310 1311 2 - 10 COMMON_S8_BIN r 326 1312 1315 4 - 10 COMMON_S8_BIN_debug R 327 1312 1315 4 - 10 COMMON_DDC97_BIN r 328 1316 1319 4 - 10 COMMON_DDC97_BIN_debug R 329 1316 1319 4 - 10 COMMON_97COMP3 r 330 1320 1323 4 - 10 COMMON_97COMP3_debug R 331 1320 1323 4 - 10 COMMON_915COMP3 r 332 1324 1331 8 - 10 COMMON_915COMP3_debug R 333 1324 1331 8 - 10 COMMON_S95COMP3 r 334 1332 1334 3 - 10 COMMON_S95COMP3_debug R 335 1332 1334 3 - 10 COMMON_S999DCCOMP3 r 336 1335 1340 6 - 10 COMMON_S999DCCOMP3_debug R 337 1335 1340 6 - 10 COMMON_S913COMP3 r 338 1341 1347 7 - 10 COMMON_S913COMP3_debug R 339 1341 1347 7 - 10 COMMON_S913DCCOMP3 r 340 1348 1355 8 - 10 COMMON_S913DCCOMP3_debug R 341 1348 1355 8 - 10 COMMON_S911DCC2 r 342 1356 1362 7 - 10 COMMON_S911DCC2_debug R 343 1356 1362 7 - 10 COMMON_S910DCC3 r 344 1363 1369 7 - 10 COMMON_S910DCC3_debug R 345 1363 1369 7 - 10 COMMON_S03DDC r 346 1370 1372 3 - 10 COMMON_S03DDC_debug R 347 1370 1372 3 - 10 COMMON_U03DDC r 348 1373 1375 3 - 10 COMMON_U03DDC_debug R 349 1373 1375 3 - 10 COMMON_UPC5DDC r 350 1376 1378 3 - 10 COMMON_UPC5DDC_debug R 351 1376 1378 3 - 10 COMMON_SPC5DDC r 352 1379 1381 3 - 10 COMMON_SPC5DDC_debug R 353 1379 1381 3 - 10 COMMON_UPI5DDC r 354 1382 1384 3 - 10 COMMON_UPI5DDC_debug R 355 1382 1384 3 - 10 COMMON_SPI5DDC r 356 1385 1387 3 - 10 COMMON_SPI5DDC_debug R 357 1385 1387 3 - 10 COMMON_UPC5DISP r 358 1388 1392 5 - 10 COMMON_UPC5DISP_debug R 359 1388 1392 5 - 10 COMMON_UPI5DISP r 360 1393 1397 5 - 10 COMMON_UPI5DISP_debug R 361 1393 1397 5 - 10 COMMON_UPC1BIN r 362 1398 1399 2 - 10 COMMON_UPC1BIN_debug R 363 1398 1399 2 - 10 COMMON_UPI1BIN r 364 1400 1401 2 - 10 COMMON_UPI1BIN_debug R 365 1400 1401 2 - 10 COMMON_UPC3BIN r 366 1402 1403 2 - 10 COMMON_UPC3BIN_debug R 367 1402 1403 2 - 10 COMMON_UPI3BIN r 368 1404 1405 2 - 10 COMMON_UPI3BIN_debug R 369 1404 1405 2 - 10 COMMON_UPC5BIN r 370 1406 1409 4 - 10 COMMON_UPC5BIN_debug R 371 1406 1409 4 - 10 COMMON_UPI5BIN r 372 1410 1413 4 - 10 COMMON_UPI5BIN_debug R 373 1410 1413 4 - 10 COMMON_UPC10BIN r 374 1414 1421 8 - 10 COMMON_UPC10BIN_debug R 375 1414 1421 8 - 10 COMMON_UPI10BIN r 376 1422 1429 8 - 10 COMMON_UPI10BIN_debug R 377 1422 1429 8 - 10 EX_NUM_INT01 r 378 1430 1438 9 - 10 EX_NUM_INT01_debug R 379 1430 1438 9 - 10 EX_NUM_INT02 r 380 1439 1447 9 - 10 EX_NUM_INT02_debug R 381 1439 1447 9 - 10 EX_NUM_INT03 r 382 1448 1456 9 - 10 EX_NUM_INT03_debug R 383 1448 1456 9 - 10 EX_NUM_INT04 r 384 1457 1465 9 - 10 EX_NUM_INT04_debug R 385 1457 1465 9 - 10 EX_NUM_DEC01 r 386 1466 1474 9 - 10 EX_NUM_DEC01_debug R 387 1466 1474 9 - 10 EX_NUM_DEC02 r 388 1475 1483 9 - 10 EX_NUM_DEC02_debug R 389 1475 1483 9 - 10 EX_NUM_DEC03 r 390 1484 1493 10 - 10 EX_NUM_DEC03_debug R 391 1484 1493 10 \ No newline at end of file +1 RECORD 1 1 1493 1493 + 10 ID r 2 1 4 4 + 10 ID_debug R 3 1 4 4 + 10 STRING_VAL r 4 5 14 10 + 10 STRING_VAL_debug R 5 5 14 10 + 10 NUM_STR_INT01 r 6 15 15 1 + 10 NUM_STR_INT01_debug R 7 15 15 1 + 10 NUM_STR_INT02 r 8 16 17 2 + 10 NUM_STR_INT02_debug R 9 16 17 2 + 10 NUM_STR_INT03 r 10 18 20 3 + 10 NUM_STR_INT03_debug R 11 18 20 3 + 10 NUM_STR_INT04 r 12 21 24 4 + 10 NUM_STR_INT04_debug R 13 21 24 4 + 10 NUM_STR_INT05 r 14 25 29 5 + 10 NUM_STR_INT05_debug R 15 25 29 5 + 10 NUM_STR_INT06 r 16 30 37 8 + 10 NUM_STR_INT06_debug R 17 30 37 8 + 10 NUM_STR_INT07 r 18 38 46 9 + 10 NUM_STR_INT07_debug R 19 38 46 9 + 10 NUM_STR_INT08 r 20 47 56 10 + 10 NUM_STR_INT08_debug R 21 47 56 10 + 10 NUM_STR_INT09 r 22 57 67 11 + 10 NUM_STR_INT09_debug R 23 57 67 11 + 10 NUM_STR_INT10 r 24 68 84 17 + 10 NUM_STR_INT10_debug R 25 68 84 17 + 10 NUM_STR_INT11 r 26 85 102 18 + 10 NUM_STR_INT11_debug R 27 85 102 18 + 10 NUM_STR_INT12 r 28 103 121 19 + 10 NUM_STR_INT12_debug R 29 103 121 19 + 10 NUM_STR_INT13 r 30 122 141 20 + 10 NUM_STR_INT13_debug R 31 122 141 20 + 10 NUM_STR_INT14 r 32 142 178 37 + 10 NUM_STR_INT14_debug R 33 142 178 37 + 10 NUM_STR_SINT02 r 34 179 180 2 + 10 NUM_STR_SINT02_debug R 35 179 180 2 + 10 NUM_STR_SINT03 r 36 181 183 3 + 10 NUM_STR_SINT03_debug R 37 181 183 3 + 10 NUM_STR_SINT04 r 38 184 187 4 + 10 NUM_STR_SINT04_debug R 39 184 187 4 + 10 NUM_STR_SINT05 r 40 188 192 5 + 10 NUM_STR_SINT05_debug R 41 188 192 5 + 10 NUM_STR_SINT06 r 42 193 200 8 + 10 NUM_STR_SINT06_debug R 43 193 200 8 + 10 NUM_STR_SINT07 r 44 201 209 9 + 10 NUM_STR_SINT07_debug R 45 201 209 9 + 10 NUM_STR_SINT08 r 46 210 219 10 + 10 NUM_STR_SINT08_debug R 47 210 219 10 + 10 NUM_STR_SINT09 r 48 220 230 11 + 10 NUM_STR_SINT09_debug R 49 220 230 11 + 10 NUM_STR_SINT10 r 50 231 247 17 + 10 NUM_STR_SINT10_debug R 51 231 247 17 + 10 NUM_STR_SINT11 r 52 248 265 18 + 10 NUM_STR_SINT11_debug R 53 248 265 18 + 10 NUM_STR_SINT12 r 54 266 284 19 + 10 NUM_STR_SINT12_debug R 55 266 284 19 + 10 NUM_STR_SINT13 r 56 285 304 20 + 10 NUM_STR_SINT13_debug R 57 285 304 20 + 10 NUM_STR_SINT14 r 58 305 341 37 + 10 NUM_STR_SINT14_debug R 59 305 341 37 + 10 NUM_STR_DEC01 r 60 342 344 3 + 10 NUM_STR_DEC01_debug R 61 342 344 3 + 10 NUM_STR_DEC02 r 62 345 348 4 + 10 NUM_STR_DEC02_debug R 63 345 348 4 + 10 NUM_STR_DEC03 r 64 349 353 5 + 10 NUM_STR_DEC03_debug R 65 349 353 5 + 10 NUM_STR_DEC04 r 66 354 361 8 + 10 NUM_STR_DEC04_debug R 67 354 361 8 + 10 NUM_STR_DEC05 r 68 362 370 9 + 10 NUM_STR_DEC05_debug R 69 362 370 9 + 10 NUM_STR_DEC06 r 70 371 380 10 + 10 NUM_STR_DEC06_debug R 71 371 380 10 + 10 NUM_STR_DEC07 r 72 381 397 17 + 10 NUM_STR_DEC07_debug R 73 381 397 17 + 10 NUM_STR_DEC08 r 74 398 415 18 + 10 NUM_STR_DEC08_debug R 75 398 415 18 + 10 NUM_STR_DEC09 r 76 416 434 19 + 10 NUM_STR_DEC09_debug R 77 416 434 19 + 10 NUM_STR_DEC10 r 78 435 462 28 + 10 NUM_STR_DEC10_debug R 79 435 462 28 + 10 NUM_STR_SDEC01 r 80 463 465 3 + 10 NUM_STR_SDEC01_debug R 81 463 465 3 + 10 NUM_STR_SDEC02 r 82 466 469 4 + 10 NUM_STR_SDEC02_debug R 83 466 469 4 + 10 NUM_STR_SDEC03 r 84 470 474 5 + 10 NUM_STR_SDEC03_debug R 85 470 474 5 + 10 NUM_STR_SDEC04 r 86 475 482 8 + 10 NUM_STR_SDEC04_debug R 87 475 482 8 + 10 NUM_STR_SDEC05 r 88 483 491 9 + 10 NUM_STR_SDEC05_debug R 89 483 491 9 + 10 NUM_STR_SDEC06 r 90 492 501 10 + 10 NUM_STR_SDEC06_debug R 91 492 501 10 + 10 NUM_STR_SDEC07 r 92 502 518 17 + 10 NUM_STR_SDEC07_debug R 93 502 518 17 + 10 NUM_STR_SDEC08 r 94 519 536 18 + 10 NUM_STR_SDEC08_debug R 95 519 536 18 + 10 NUM_STR_SDEC09 r 96 537 555 19 + 10 NUM_STR_SDEC09_debug R 97 537 555 19 + 10 NUM_STR_SDEC10 r 98 556 583 28 + 10 NUM_STR_SDEC10_debug R 99 556 583 28 + 10 NUM_STR_EDEC03 r 100 584 589 6 + 10 NUM_STR_EDEC03_debug R 101 584 589 6 + 10 NUM_STR_EDEC04 r 102 590 598 9 + 10 NUM_STR_EDEC04_debug R 103 590 598 9 + 10 NUM_STR_EDEC05 r 104 599 608 10 + 10 NUM_STR_EDEC05_debug R 105 599 608 10 + 10 NUM_STR_EDEC06 r 106 609 619 11 + 10 NUM_STR_EDEC06_debug R 107 609 619 11 + 10 NUM_BIN_INT01 r 108 620 621 2 + 10 NUM_BIN_INT01_debug R 109 620 621 2 + 10 NUM_BIN_INT02 r 110 622 623 2 + 10 NUM_BIN_INT02_debug R 111 622 623 2 + 10 NUM_BIN_INT03 r 112 624 625 2 + 10 NUM_BIN_INT03_debug R 113 624 625 2 + 10 NUM_BIN_INT04 r 114 626 627 2 + 10 NUM_BIN_INT04_debug R 115 626 627 2 + 10 NUM_BIN_INT05 r 116 628 631 4 + 10 NUM_BIN_INT05_debug R 117 628 631 4 + 10 NUM_BIN_INT06 r 118 632 635 4 + 10 NUM_BIN_INT06_debug R 119 632 635 4 + 10 NUM_BIN_INT07 r 120 636 639 4 + 10 NUM_BIN_INT07_debug R 121 636 639 4 + 10 NUM_BIN_INT08 r 122 640 647 8 + 10 NUM_BIN_INT08_debug R 123 640 647 8 + 10 NUM_BIN_INT09 r 124 648 655 8 + 10 NUM_BIN_INT09_debug R 125 648 655 8 + 10 NUM_BIN_INT10 r 126 656 663 8 + 10 NUM_BIN_INT10_debug R 127 656 663 8 + 10 NUM_BIN_INT11 r 128 664 671 8 + 10 NUM_BIN_INT11_debug R 129 664 671 8 + 10 NUM_BIN_INT12 r 130 672 680 9 + 10 NUM_BIN_INT12_debug R 131 672 680 9 + 10 NUM_BIN_INT13 r 132 681 689 9 + 10 NUM_BIN_INT13_debug R 133 681 689 9 + 10 NUM_BIN_INT14 r 134 690 705 16 + 10 NUM_BIN_INT14_debug R 135 690 705 16 + 10 NUM_SBIN_SINT01 r 136 706 707 2 + 10 NUM_SBIN_SINT01_debug R 137 706 707 2 + 10 NUM_SBIN_SINT02 r 138 708 709 2 + 10 NUM_SBIN_SINT02_debug R 139 708 709 2 + 10 NUM_SBIN_SINT03 r 140 710 711 2 + 10 NUM_SBIN_SINT03_debug R 141 710 711 2 + 10 NUM_SBIN_SINT04 r 142 712 713 2 + 10 NUM_SBIN_SINT04_debug R 143 712 713 2 + 10 NUM_SBIN_SINT05 r 144 714 717 4 + 10 NUM_SBIN_SINT05_debug R 145 714 717 4 + 10 NUM_SBIN_SINT06 r 146 718 721 4 + 10 NUM_SBIN_SINT06_debug R 147 718 721 4 + 10 NUM_SBIN_SINT07 r 148 722 725 4 + 10 NUM_SBIN_SINT07_debug R 149 722 725 4 + 10 NUM_SBIN_SINT08 r 150 726 733 8 + 10 NUM_SBIN_SINT08_debug R 151 726 733 8 + 10 NUM_SBIN_SINT09 r 152 734 741 8 + 10 NUM_SBIN_SINT09_debug R 153 734 741 8 + 10 NUM_SBIN_SINT10 r 154 742 749 8 + 10 NUM_SBIN_SINT10_debug R 155 742 749 8 + 10 NUM_SBIN_SINT11 r 156 750 757 8 + 10 NUM_SBIN_SINT11_debug R 157 750 757 8 + 10 NUM_SBIN_SINT12 r 158 758 766 9 + 10 NUM_SBIN_SINT12_debug R 159 758 766 9 + 10 NUM_SBIN_SINT13 r 160 767 775 9 + 10 NUM_SBIN_SINT13_debug R 161 767 775 9 + 10 NUM_SBIN_SINT14 r 162 776 791 16 + 10 NUM_SBIN_SINT14_debug R 163 776 791 16 + 10 NUM_BIN_DEC01 r 164 792 793 2 + 10 NUM_BIN_DEC01_debug R 165 792 793 2 + 10 NUM_BIN_DEC02 r 166 794 795 2 + 10 NUM_BIN_DEC02_debug R 167 794 795 2 + 10 NUM_BIN_DEC03 r 168 796 799 4 + 10 NUM_BIN_DEC03_debug R 169 796 799 4 + 10 NUM_BIN_DEC04 r 170 800 803 4 + 10 NUM_BIN_DEC04_debug R 171 800 803 4 + 10 NUM_BIN_DEC05 r 172 804 807 4 + 10 NUM_BIN_DEC05_debug R 173 804 807 4 + 10 NUM_BIN_DEC06 r 174 808 815 8 + 10 NUM_BIN_DEC06_debug R 175 808 815 8 + 10 NUM_BIN_DEC07 r 176 816 823 8 + 10 NUM_BIN_DEC07_debug R 177 816 823 8 + 10 NUM_BIN_DEC08 r 178 824 831 8 + 10 NUM_BIN_DEC08_debug R 179 824 831 8 + 10 NUM_BIN_DEC09 r 180 832 840 9 + 10 NUM_BIN_DEC09_debug R 181 832 840 9 + 10 NUM_BIN_DEC10 r 182 841 852 12 + 10 NUM_BIN_DEC10_debug R 183 841 852 12 + 10 NUM_SBIN_DEC01 r 184 853 854 2 + 10 NUM_SBIN_DEC01_debug R 185 853 854 2 + 10 NUM_SBIN_DEC02 r 186 855 856 2 + 10 NUM_SBIN_DEC02_debug R 187 855 856 2 + 10 NUM_SBIN_DEC03 r 188 857 860 4 + 10 NUM_SBIN_DEC03_debug R 189 857 860 4 + 10 NUM_SBIN_DEC04 r 190 861 864 4 + 10 NUM_SBIN_DEC04_debug R 191 861 864 4 + 10 NUM_SBIN_DEC05 r 192 865 868 4 + 10 NUM_SBIN_DEC05_debug R 193 865 868 4 + 10 NUM_SBIN_DEC06 r 194 869 876 8 + 10 NUM_SBIN_DEC06_debug R 195 869 876 8 + 10 NUM_SBIN_DEC07 r 196 877 884 8 + 10 NUM_SBIN_DEC07_debug R 197 877 884 8 + 10 NUM_SBIN_DEC08 r 198 885 892 8 + 10 NUM_SBIN_DEC08_debug R 199 885 892 8 + 10 NUM_SBIN_DEC09 r 200 893 901 9 + 10 NUM_SBIN_DEC09_debug R 201 893 901 9 + 10 NUM_SBIN_DEC10 r 202 902 913 12 + 10 NUM_SBIN_DEC10_debug R 203 902 913 12 + 10 NUM_BCD_INT01 r 204 914 914 1 + 10 NUM_BCD_INT01_debug R 205 914 914 1 + 10 NUM_BCD_INT02 r 206 915 916 2 + 10 NUM_BCD_INT02_debug R 207 915 916 2 + 10 NUM_BCD_INT03 r 208 917 918 2 + 10 NUM_BCD_INT03_debug R 209 917 918 2 + 10 NUM_BCD_INT04 r 210 919 921 3 + 10 NUM_BCD_INT04_debug R 211 919 921 3 + 10 NUM_BCD_INT05 r 212 922 924 3 + 10 NUM_BCD_INT05_debug R 213 922 924 3 + 10 NUM_BCD_INT06 r 214 925 929 5 + 10 NUM_BCD_INT06_debug R 215 925 929 5 + 10 NUM_BCD_INT07 r 216 930 934 5 + 10 NUM_BCD_INT07_debug R 217 930 934 5 + 10 NUM_BCD_INT08 r 218 935 940 6 + 10 NUM_BCD_INT08_debug R 219 935 940 6 + 10 NUM_BCD_INT09 r 220 941 946 6 + 10 NUM_BCD_INT09_debug R 221 941 946 6 + 10 NUM_BCD_INT10 r 222 947 955 9 + 10 NUM_BCD_INT10_debug R 223 947 955 9 + 10 NUM_BCD_INT11 r 224 956 965 10 + 10 NUM_BCD_INT11_debug R 225 956 965 10 + 10 NUM_BCD_INT12 r 226 966 975 10 + 10 NUM_BCD_INT12_debug R 227 966 975 10 + 10 NUM_BCD_INT13 r 228 976 986 11 + 10 NUM_BCD_INT13_debug R 229 976 986 11 + 10 NUM_BCD_INT14 r 230 987 1005 19 + 10 NUM_BCD_INT14_debug R 231 987 1005 19 + 10 NUM_BCD_SINT01 r 232 1006 1006 1 + 10 NUM_BCD_SINT01_debug R 233 1006 1006 1 + 10 NUM_BCD_SINT02 r 234 1007 1008 2 + 10 NUM_BCD_SINT02_debug R 235 1007 1008 2 + 10 NUM_BCD_SINT03 r 236 1009 1010 2 + 10 NUM_BCD_SINT03_debug R 237 1009 1010 2 + 10 NUM_BCD_SINT04 r 238 1011 1013 3 + 10 NUM_BCD_SINT04_debug R 239 1011 1013 3 + 10 NUM_BCD_SINT05 r 240 1014 1016 3 + 10 NUM_BCD_SINT05_debug R 241 1014 1016 3 + 10 NUM_BCD_SINT06 r 242 1017 1021 5 + 10 NUM_BCD_SINT06_debug R 243 1017 1021 5 + 10 NUM_BCD_SINT07 r 244 1022 1026 5 + 10 NUM_BCD_SINT07_debug R 245 1022 1026 5 + 10 NUM_BCD_SINT08 r 246 1027 1032 6 + 10 NUM_BCD_SINT08_debug R 247 1027 1032 6 + 10 NUM_BCD_SINT09 r 248 1033 1038 6 + 10 NUM_BCD_SINT09_debug R 249 1033 1038 6 + 10 NUM_BCD_SINT10 r 250 1039 1047 9 + 10 NUM_BCD_SINT10_debug R 251 1039 1047 9 + 10 NUM_BCD_SINT11 r 252 1048 1057 10 + 10 NUM_BCD_SINT11_debug R 253 1048 1057 10 + 10 NUM_BCD_SINT12 r 254 1058 1067 10 + 10 NUM_BCD_SINT12_debug R 255 1058 1067 10 + 10 NUM_BCD_SINT13 r 256 1068 1078 11 + 10 NUM_BCD_SINT13_debug R 257 1068 1078 11 + 10 NUM_BCD_SINT14 r 258 1079 1097 19 + 10 NUM_BCD_SINT14_debug R 259 1079 1097 19 + 10 NUM_BCD_DEC01 r 260 1098 1099 2 + 10 NUM_BCD_DEC01_debug R 261 1098 1099 2 + 10 NUM_BCD_DEC02 r 262 1100 1102 3 + 10 NUM_BCD_DEC02_debug R 263 1100 1102 3 + 10 NUM_BCD_DEC03 r 264 1103 1105 3 + 10 NUM_BCD_DEC03_debug R 265 1103 1105 3 + 10 NUM_BCD_DEC04 r 266 1106 1110 5 + 10 NUM_BCD_DEC04_debug R 267 1106 1110 5 + 10 NUM_BCD_DEC05 r 268 1111 1115 5 + 10 NUM_BCD_DEC05_debug R 269 1111 1115 5 + 10 NUM_BCD_DEC06 r 270 1116 1121 6 + 10 NUM_BCD_DEC06_debug R 271 1116 1121 6 + 10 NUM_BCD_DEC07 r 272 1122 1130 9 + 10 NUM_BCD_DEC07_debug R 273 1122 1130 9 + 10 NUM_BCD_DEC08 r 274 1131 1140 10 + 10 NUM_BCD_DEC08_debug R 275 1131 1140 10 + 10 NUM_BCD_DEC09 r 276 1141 1150 10 + 10 NUM_BCD_DEC09_debug R 277 1141 1150 10 + 10 NUM_BCD_DEC10 r 278 1151 1165 15 + 10 NUM_BCD_DEC10_debug R 279 1151 1165 15 + 10 NUM_BCD_SDEC01 r 280 1166 1167 2 + 10 NUM_BCD_SDEC01_debug R 281 1166 1167 2 + 10 NUM_BCD_SDEC02 r 282 1168 1170 3 + 10 NUM_BCD_SDEC02_debug R 283 1168 1170 3 + 10 NUM_BCD_SDEC03 r 284 1171 1173 3 + 10 NUM_BCD_SDEC03_debug R 285 1171 1173 3 + 10 NUM_BCD_SDEC04 r 286 1174 1178 5 + 10 NUM_BCD_SDEC04_debug R 287 1174 1178 5 + 10 NUM_BCD_SDEC05 r 288 1179 1183 5 + 10 NUM_BCD_SDEC05_debug R 289 1179 1183 5 + 10 NUM_BCD_SDEC06 r 290 1184 1189 6 + 10 NUM_BCD_SDEC06_debug R 291 1184 1189 6 + 10 NUM_BCD_SDEC07 r 292 1190 1198 9 + 10 NUM_BCD_SDEC07_debug R 293 1190 1198 9 + 10 NUM_BCD_SDEC08 r 294 1199 1208 10 + 10 NUM_BCD_SDEC08_debug R 295 1199 1208 10 + 10 NUM_BCD_SDEC09 r 296 1209 1218 10 + 10 NUM_BCD_SDEC09_debug R 297 1209 1218 10 + 10 NUM_BCD_SDEC10 r 298 1219 1233 15 + 10 NUM_BCD_SDEC10_debug R 299 1219 1233 15 + 10 NUM_SL_STR_INT01 r 300 1234 1243 10 + 10 NUM_SL_STR_INT01_debug R 301 1234 1243 10 + 10 NUM_SL_STR_DEC01 r 302 1244 1248 5 + 10 NUM_SL_STR_DEC01_debug R 303 1244 1248 5 + 10 NUM_ST_STR_INT01 r 304 1249 1258 10 + 10 NUM_ST_STR_INT01_debug R 305 1249 1258 10 + 10 NUM_ST_STR_DEC01 r 306 1259 1263 5 + 10 NUM_ST_STR_DEC01_debug R 307 1259 1263 5 + 10 NUM_SLI_STR_DEC01 r 308 1264 1270 7 + 10 NUM_SLI_STR_DEC01_debug R 309 1264 1270 7 + 10 NUM_STI_STR_DEC01 r 310 1271 1277 7 + 10 NUM_STI_STR_DEC01_debug R 311 1271 1277 7 + 10 NUM_SLI_DEBUG r 312 1278 1284 7 + 10 NUM_SLI_DEBUG_debug R 313 1278 1284 7 + 10 NUM_STI_DEBUG r 314 1285 1291 7 + 10 NUM_STI_DEBUG_debug R 315 1285 1291 7 + 10 FLOAT_01 r 316 1292 1295 4 + 10 FLOAT_01_debug R 317 1292 1295 4 + 10 DOUBLE_01 r 318 1296 1303 8 + 10 DOUBLE_01_debug R 319 1296 1303 8 + 10 COMMON_8_BIN r 320 1304 1307 4 + 10 COMMON_8_BIN_debug R 321 1304 1307 4 + 10 COMMON_S3_BIN r 322 1308 1309 2 + 10 COMMON_S3_BIN_debug R 323 1308 1309 2 + 10 COMMON_S94COMP r 324 1310 1311 2 + 10 COMMON_S94COMP_debug R 325 1310 1311 2 + 10 COMMON_S8_BIN r 326 1312 1315 4 + 10 COMMON_S8_BIN_debug R 327 1312 1315 4 + 10 COMMON_DDC97_BIN r 328 1316 1319 4 + 10 COMMON_DDC97_BIN_debug R 329 1316 1319 4 + 10 COMMON_97COMP3 r 330 1320 1323 4 + 10 COMMON_97COMP3_debug R 331 1320 1323 4 + 10 COMMON_915COMP3 r 332 1324 1331 8 + 10 COMMON_915COMP3_debug R 333 1324 1331 8 + 10 COMMON_S95COMP3 r 334 1332 1334 3 + 10 COMMON_S95COMP3_debug R 335 1332 1334 3 + 10 COMMON_S999DCCOMP3 r 336 1335 1340 6 + 10 COMMON_S999DCCOMP3_debug R 337 1335 1340 6 + 10 COMMON_S913COMP3 r 338 1341 1347 7 + 10 COMMON_S913COMP3_debug R 339 1341 1347 7 + 10 COMMON_S913DCCOMP3 r 340 1348 1355 8 + 10 COMMON_S913DCCOMP3_debug R 341 1348 1355 8 + 10 COMMON_S911DCC2 r 342 1356 1362 7 + 10 COMMON_S911DCC2_debug R 343 1356 1362 7 + 10 COMMON_S910DCC3 r 344 1363 1369 7 + 10 COMMON_S910DCC3_debug R 345 1363 1369 7 + 10 COMMON_S03DDC r 346 1370 1372 3 + 10 COMMON_S03DDC_debug R 347 1370 1372 3 + 10 COMMON_U03DDC r 348 1373 1375 3 + 10 COMMON_U03DDC_debug R 349 1373 1375 3 + 10 COMMON_UPC5DDC r 350 1376 1378 3 + 10 COMMON_UPC5DDC_debug R 351 1376 1378 3 + 10 COMMON_SPC5DDC r 352 1379 1381 3 + 10 COMMON_SPC5DDC_debug R 353 1379 1381 3 + 10 COMMON_UPI5DDC r 354 1382 1384 3 + 10 COMMON_UPI5DDC_debug R 355 1382 1384 3 + 10 COMMON_SPI5DDC r 356 1385 1387 3 + 10 COMMON_SPI5DDC_debug R 357 1385 1387 3 + 10 COMMON_UPC5DISP r 358 1388 1392 5 + 10 COMMON_UPC5DISP_debug R 359 1388 1392 5 + 10 COMMON_UPI5DISP r 360 1393 1397 5 + 10 COMMON_UPI5DISP_debug R 361 1393 1397 5 + 10 COMMON_UPC1BIN r 362 1398 1399 2 + 10 COMMON_UPC1BIN_debug R 363 1398 1399 2 + 10 COMMON_UPI1BIN r 364 1400 1401 2 + 10 COMMON_UPI1BIN_debug R 365 1400 1401 2 + 10 COMMON_UPC3BIN r 366 1402 1403 2 + 10 COMMON_UPC3BIN_debug R 367 1402 1403 2 + 10 COMMON_UPI3BIN r 368 1404 1405 2 + 10 COMMON_UPI3BIN_debug R 369 1404 1405 2 + 10 COMMON_UPC5BIN r 370 1406 1409 4 + 10 COMMON_UPC5BIN_debug R 371 1406 1409 4 + 10 COMMON_UPI5BIN r 372 1410 1413 4 + 10 COMMON_UPI5BIN_debug R 373 1410 1413 4 + 10 COMMON_UPC10BIN r 374 1414 1421 8 + 10 COMMON_UPC10BIN_debug R 375 1414 1421 8 + 10 COMMON_UPI10BIN r 376 1422 1429 8 + 10 COMMON_UPI10BIN_debug R 377 1422 1429 8 + 10 EX_NUM_INT01 r 378 1430 1438 9 + 10 EX_NUM_INT01_debug R 379 1430 1438 9 + 10 EX_NUM_INT02 r 380 1439 1447 9 + 10 EX_NUM_INT02_debug R 381 1439 1447 9 + 10 EX_NUM_INT03 r 382 1448 1456 9 + 10 EX_NUM_INT03_debug R 383 1448 1456 9 + 10 EX_NUM_INT04 r 384 1457 1465 9 + 10 EX_NUM_INT04_debug R 385 1457 1465 9 + 10 EX_NUM_DEC01 r 386 1466 1474 9 + 10 EX_NUM_DEC01_debug R 387 1466 1474 9 + 10 EX_NUM_DEC02 r 388 1475 1483 9 + 10 EX_NUM_DEC02_debug R 389 1475 1483 9 + 10 EX_NUM_DEC03 r 390 1484 1493 10 + 10 EX_NUM_DEC03_debug R 391 1484 1493 10 \ No newline at end of file diff --git a/data/test24_expected/test24b_layout.txt b/data/test24_expected/test24b_layout.txt index 84c7536f..fb99eec5 100644 --- a/data/test24_expected/test24b_layout.txt +++ b/data/test24_expected/test24b_layout.txt @@ -1,393 +1,393 @@ -------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH - 1 RECORD 391 1 1493 1493 - 10 ID r 2 1 4 4 - 10 ID_debug R 3 1 4 4 - 10 STRING_VAL r 4 5 14 10 - 10 STRING_VAL_debug R 5 5 14 10 - 10 NUM_STR_INT01 r 6 15 15 1 - 10 NUM_STR_INT01_debug R 7 15 15 1 - 10 NUM_STR_INT02 r 8 16 17 2 - 10 NUM_STR_INT02_debug R 9 16 17 2 - 10 NUM_STR_INT03 r 10 18 20 3 - 10 NUM_STR_INT03_debug R 11 18 20 3 - 10 NUM_STR_INT04 r 12 21 24 4 - 10 NUM_STR_INT04_debug R 13 21 24 4 - 10 NUM_STR_INT05 r 14 25 29 5 - 10 NUM_STR_INT05_debug R 15 25 29 5 - 10 NUM_STR_INT06 r 16 30 37 8 - 10 NUM_STR_INT06_debug R 17 30 37 8 - 10 NUM_STR_INT07 r 18 38 46 9 - 10 NUM_STR_INT07_debug R 19 38 46 9 - 10 NUM_STR_INT08 r 20 47 56 10 - 10 NUM_STR_INT08_debug R 21 47 56 10 - 10 NUM_STR_INT09 r 22 57 67 11 - 10 NUM_STR_INT09_debug R 23 57 67 11 - 10 NUM_STR_INT10 r 24 68 84 17 - 10 NUM_STR_INT10_debug R 25 68 84 17 - 10 NUM_STR_INT11 r 26 85 102 18 - 10 NUM_STR_INT11_debug R 27 85 102 18 - 10 NUM_STR_INT12 r 28 103 121 19 - 10 NUM_STR_INT12_debug R 29 103 121 19 - 10 NUM_STR_INT13 r 30 122 141 20 - 10 NUM_STR_INT13_debug R 31 122 141 20 - 10 NUM_STR_INT14 r 32 142 178 37 - 10 NUM_STR_INT14_debug R 33 142 178 37 - 10 NUM_STR_SINT02 r 34 179 180 2 - 10 NUM_STR_SINT02_debug R 35 179 180 2 - 10 NUM_STR_SINT03 r 36 181 183 3 - 10 NUM_STR_SINT03_debug R 37 181 183 3 - 10 NUM_STR_SINT04 r 38 184 187 4 - 10 NUM_STR_SINT04_debug R 39 184 187 4 - 10 NUM_STR_SINT05 r 40 188 192 5 - 10 NUM_STR_SINT05_debug R 41 188 192 5 - 10 NUM_STR_SINT06 r 42 193 200 8 - 10 NUM_STR_SINT06_debug R 43 193 200 8 - 10 NUM_STR_SINT07 r 44 201 209 9 - 10 NUM_STR_SINT07_debug R 45 201 209 9 - 10 NUM_STR_SINT08 r 46 210 219 10 - 10 NUM_STR_SINT08_debug R 47 210 219 10 - 10 NUM_STR_SINT09 r 48 220 230 11 - 10 NUM_STR_SINT09_debug R 49 220 230 11 - 10 NUM_STR_SINT10 r 50 231 247 17 - 10 NUM_STR_SINT10_debug R 51 231 247 17 - 10 NUM_STR_SINT11 r 52 248 265 18 - 10 NUM_STR_SINT11_debug R 53 248 265 18 - 10 NUM_STR_SINT12 r 54 266 284 19 - 10 NUM_STR_SINT12_debug R 55 266 284 19 - 10 NUM_STR_SINT13 r 56 285 304 20 - 10 NUM_STR_SINT13_debug R 57 285 304 20 - 10 NUM_STR_SINT14 r 58 305 341 37 - 10 NUM_STR_SINT14_debug R 59 305 341 37 - 10 NUM_STR_DEC01 r 60 342 344 3 - 10 NUM_STR_DEC01_debug R 61 342 344 3 - 10 NUM_STR_DEC02 r 62 345 348 4 - 10 NUM_STR_DEC02_debug R 63 345 348 4 - 10 NUM_STR_DEC03 r 64 349 353 5 - 10 NUM_STR_DEC03_debug R 65 349 353 5 - 10 NUM_STR_DEC04 r 66 354 361 8 - 10 NUM_STR_DEC04_debug R 67 354 361 8 - 10 NUM_STR_DEC05 r 68 362 370 9 - 10 NUM_STR_DEC05_debug R 69 362 370 9 - 10 NUM_STR_DEC06 r 70 371 380 10 - 10 NUM_STR_DEC06_debug R 71 371 380 10 - 10 NUM_STR_DEC07 r 72 381 397 17 - 10 NUM_STR_DEC07_debug R 73 381 397 17 - 10 NUM_STR_DEC08 r 74 398 415 18 - 10 NUM_STR_DEC08_debug R 75 398 415 18 - 10 NUM_STR_DEC09 r 76 416 434 19 - 10 NUM_STR_DEC09_debug R 77 416 434 19 - 10 NUM_STR_DEC10 r 78 435 462 28 - 10 NUM_STR_DEC10_debug R 79 435 462 28 - 10 NUM_STR_SDEC01 r 80 463 465 3 - 10 NUM_STR_SDEC01_debug R 81 463 465 3 - 10 NUM_STR_SDEC02 r 82 466 469 4 - 10 NUM_STR_SDEC02_debug R 83 466 469 4 - 10 NUM_STR_SDEC03 r 84 470 474 5 - 10 NUM_STR_SDEC03_debug R 85 470 474 5 - 10 NUM_STR_SDEC04 r 86 475 482 8 - 10 NUM_STR_SDEC04_debug R 87 475 482 8 - 10 NUM_STR_SDEC05 r 88 483 491 9 - 10 NUM_STR_SDEC05_debug R 89 483 491 9 - 10 NUM_STR_SDEC06 r 90 492 501 10 - 10 NUM_STR_SDEC06_debug R 91 492 501 10 - 10 NUM_STR_SDEC07 r 92 502 518 17 - 10 NUM_STR_SDEC07_debug R 93 502 518 17 - 10 NUM_STR_SDEC08 r 94 519 536 18 - 10 NUM_STR_SDEC08_debug R 95 519 536 18 - 10 NUM_STR_SDEC09 r 96 537 555 19 - 10 NUM_STR_SDEC09_debug R 97 537 555 19 - 10 NUM_STR_SDEC10 r 98 556 583 28 - 10 NUM_STR_SDEC10_debug R 99 556 583 28 - 10 NUM_STR_EDEC03 r 100 584 589 6 - 10 NUM_STR_EDEC03_debug R 101 584 589 6 - 10 NUM_STR_EDEC04 r 102 590 598 9 - 10 NUM_STR_EDEC04_debug R 103 590 598 9 - 10 NUM_STR_EDEC05 r 104 599 608 10 - 10 NUM_STR_EDEC05_debug R 105 599 608 10 - 10 NUM_STR_EDEC06 r 106 609 619 11 - 10 NUM_STR_EDEC06_debug R 107 609 619 11 - 10 NUM_BIN_INT01 r 108 620 621 2 - 10 NUM_BIN_INT01_debug R 109 620 621 2 - 10 NUM_BIN_INT02 r 110 622 623 2 - 10 NUM_BIN_INT02_debug R 111 622 623 2 - 10 NUM_BIN_INT03 r 112 624 625 2 - 10 NUM_BIN_INT03_debug R 113 624 625 2 - 10 NUM_BIN_INT04 r 114 626 627 2 - 10 NUM_BIN_INT04_debug R 115 626 627 2 - 10 NUM_BIN_INT05 r 116 628 631 4 - 10 NUM_BIN_INT05_debug R 117 628 631 4 - 10 NUM_BIN_INT06 r 118 632 635 4 - 10 NUM_BIN_INT06_debug R 119 632 635 4 - 10 NUM_BIN_INT07 r 120 636 639 4 - 10 NUM_BIN_INT07_debug R 121 636 639 4 - 10 NUM_BIN_INT08 r 122 640 647 8 - 10 NUM_BIN_INT08_debug R 123 640 647 8 - 10 NUM_BIN_INT09 r 124 648 655 8 - 10 NUM_BIN_INT09_debug R 125 648 655 8 - 10 NUM_BIN_INT10 r 126 656 663 8 - 10 NUM_BIN_INT10_debug R 127 656 663 8 - 10 NUM_BIN_INT11 r 128 664 671 8 - 10 NUM_BIN_INT11_debug R 129 664 671 8 - 10 NUM_BIN_INT12 r 130 672 680 9 - 10 NUM_BIN_INT12_debug R 131 672 680 9 - 10 NUM_BIN_INT13 r 132 681 689 9 - 10 NUM_BIN_INT13_debug R 133 681 689 9 - 10 NUM_BIN_INT14 r 134 690 705 16 - 10 NUM_BIN_INT14_debug R 135 690 705 16 - 10 NUM_SBIN_SINT01 r 136 706 707 2 - 10 NUM_SBIN_SINT01_debug R 137 706 707 2 - 10 NUM_SBIN_SINT02 r 138 708 709 2 - 10 NUM_SBIN_SINT02_debug R 139 708 709 2 - 10 NUM_SBIN_SINT03 r 140 710 711 2 - 10 NUM_SBIN_SINT03_debug R 141 710 711 2 - 10 NUM_SBIN_SINT04 r 142 712 713 2 - 10 NUM_SBIN_SINT04_debug R 143 712 713 2 - 10 NUM_SBIN_SINT05 r 144 714 717 4 - 10 NUM_SBIN_SINT05_debug R 145 714 717 4 - 10 NUM_SBIN_SINT06 r 146 718 721 4 - 10 NUM_SBIN_SINT06_debug R 147 718 721 4 - 10 NUM_SBIN_SINT07 r 148 722 725 4 - 10 NUM_SBIN_SINT07_debug R 149 722 725 4 - 10 NUM_SBIN_SINT08 r 150 726 733 8 - 10 NUM_SBIN_SINT08_debug R 151 726 733 8 - 10 NUM_SBIN_SINT09 r 152 734 741 8 - 10 NUM_SBIN_SINT09_debug R 153 734 741 8 - 10 NUM_SBIN_SINT10 r 154 742 749 8 - 10 NUM_SBIN_SINT10_debug R 155 742 749 8 - 10 NUM_SBIN_SINT11 r 156 750 757 8 - 10 NUM_SBIN_SINT11_debug R 157 750 757 8 - 10 NUM_SBIN_SINT12 r 158 758 766 9 - 10 NUM_SBIN_SINT12_debug R 159 758 766 9 - 10 NUM_SBIN_SINT13 r 160 767 775 9 - 10 NUM_SBIN_SINT13_debug R 161 767 775 9 - 10 NUM_SBIN_SINT14 r 162 776 791 16 - 10 NUM_SBIN_SINT14_debug R 163 776 791 16 - 10 NUM_BIN_DEC01 r 164 792 793 2 - 10 NUM_BIN_DEC01_debug R 165 792 793 2 - 10 NUM_BIN_DEC02 r 166 794 795 2 - 10 NUM_BIN_DEC02_debug R 167 794 795 2 - 10 NUM_BIN_DEC03 r 168 796 799 4 - 10 NUM_BIN_DEC03_debug R 169 796 799 4 - 10 NUM_BIN_DEC04 r 170 800 803 4 - 10 NUM_BIN_DEC04_debug R 171 800 803 4 - 10 NUM_BIN_DEC05 r 172 804 807 4 - 10 NUM_BIN_DEC05_debug R 173 804 807 4 - 10 NUM_BIN_DEC06 r 174 808 815 8 - 10 NUM_BIN_DEC06_debug R 175 808 815 8 - 10 NUM_BIN_DEC07 r 176 816 823 8 - 10 NUM_BIN_DEC07_debug R 177 816 823 8 - 10 NUM_BIN_DEC08 r 178 824 831 8 - 10 NUM_BIN_DEC08_debug R 179 824 831 8 - 10 NUM_BIN_DEC09 r 180 832 840 9 - 10 NUM_BIN_DEC09_debug R 181 832 840 9 - 10 NUM_BIN_DEC10 r 182 841 852 12 - 10 NUM_BIN_DEC10_debug R 183 841 852 12 - 10 NUM_SBIN_DEC01 r 184 853 854 2 - 10 NUM_SBIN_DEC01_debug R 185 853 854 2 - 10 NUM_SBIN_DEC02 r 186 855 856 2 - 10 NUM_SBIN_DEC02_debug R 187 855 856 2 - 10 NUM_SBIN_DEC03 r 188 857 860 4 - 10 NUM_SBIN_DEC03_debug R 189 857 860 4 - 10 NUM_SBIN_DEC04 r 190 861 864 4 - 10 NUM_SBIN_DEC04_debug R 191 861 864 4 - 10 NUM_SBIN_DEC05 r 192 865 868 4 - 10 NUM_SBIN_DEC05_debug R 193 865 868 4 - 10 NUM_SBIN_DEC06 r 194 869 876 8 - 10 NUM_SBIN_DEC06_debug R 195 869 876 8 - 10 NUM_SBIN_DEC07 r 196 877 884 8 - 10 NUM_SBIN_DEC07_debug R 197 877 884 8 - 10 NUM_SBIN_DEC08 r 198 885 892 8 - 10 NUM_SBIN_DEC08_debug R 199 885 892 8 - 10 NUM_SBIN_DEC09 r 200 893 901 9 - 10 NUM_SBIN_DEC09_debug R 201 893 901 9 - 10 NUM_SBIN_DEC10 r 202 902 913 12 - 10 NUM_SBIN_DEC10_debug R 203 902 913 12 - 10 NUM_BCD_INT01 r 204 914 914 1 - 10 NUM_BCD_INT01_debug R 205 914 914 1 - 10 NUM_BCD_INT02 r 206 915 916 2 - 10 NUM_BCD_INT02_debug R 207 915 916 2 - 10 NUM_BCD_INT03 r 208 917 918 2 - 10 NUM_BCD_INT03_debug R 209 917 918 2 - 10 NUM_BCD_INT04 r 210 919 921 3 - 10 NUM_BCD_INT04_debug R 211 919 921 3 - 10 NUM_BCD_INT05 r 212 922 924 3 - 10 NUM_BCD_INT05_debug R 213 922 924 3 - 10 NUM_BCD_INT06 r 214 925 929 5 - 10 NUM_BCD_INT06_debug R 215 925 929 5 - 10 NUM_BCD_INT07 r 216 930 934 5 - 10 NUM_BCD_INT07_debug R 217 930 934 5 - 10 NUM_BCD_INT08 r 218 935 940 6 - 10 NUM_BCD_INT08_debug R 219 935 940 6 - 10 NUM_BCD_INT09 r 220 941 946 6 - 10 NUM_BCD_INT09_debug R 221 941 946 6 - 10 NUM_BCD_INT10 r 222 947 955 9 - 10 NUM_BCD_INT10_debug R 223 947 955 9 - 10 NUM_BCD_INT11 r 224 956 965 10 - 10 NUM_BCD_INT11_debug R 225 956 965 10 - 10 NUM_BCD_INT12 r 226 966 975 10 - 10 NUM_BCD_INT12_debug R 227 966 975 10 - 10 NUM_BCD_INT13 r 228 976 986 11 - 10 NUM_BCD_INT13_debug R 229 976 986 11 - 10 NUM_BCD_INT14 r 230 987 1005 19 - 10 NUM_BCD_INT14_debug R 231 987 1005 19 - 10 NUM_BCD_SINT01 r 232 1006 1006 1 - 10 NUM_BCD_SINT01_debug R 233 1006 1006 1 - 10 NUM_BCD_SINT02 r 234 1007 1008 2 - 10 NUM_BCD_SINT02_debug R 235 1007 1008 2 - 10 NUM_BCD_SINT03 r 236 1009 1010 2 - 10 NUM_BCD_SINT03_debug R 237 1009 1010 2 - 10 NUM_BCD_SINT04 r 238 1011 1013 3 - 10 NUM_BCD_SINT04_debug R 239 1011 1013 3 - 10 NUM_BCD_SINT05 r 240 1014 1016 3 - 10 NUM_BCD_SINT05_debug R 241 1014 1016 3 - 10 NUM_BCD_SINT06 r 242 1017 1021 5 - 10 NUM_BCD_SINT06_debug R 243 1017 1021 5 - 10 NUM_BCD_SINT07 r 244 1022 1026 5 - 10 NUM_BCD_SINT07_debug R 245 1022 1026 5 - 10 NUM_BCD_SINT08 r 246 1027 1032 6 - 10 NUM_BCD_SINT08_debug R 247 1027 1032 6 - 10 NUM_BCD_SINT09 r 248 1033 1038 6 - 10 NUM_BCD_SINT09_debug R 249 1033 1038 6 - 10 NUM_BCD_SINT10 r 250 1039 1047 9 - 10 NUM_BCD_SINT10_debug R 251 1039 1047 9 - 10 NUM_BCD_SINT11 r 252 1048 1057 10 - 10 NUM_BCD_SINT11_debug R 253 1048 1057 10 - 10 NUM_BCD_SINT12 r 254 1058 1067 10 - 10 NUM_BCD_SINT12_debug R 255 1058 1067 10 - 10 NUM_BCD_SINT13 r 256 1068 1078 11 - 10 NUM_BCD_SINT13_debug R 257 1068 1078 11 - 10 NUM_BCD_SINT14 r 258 1079 1097 19 - 10 NUM_BCD_SINT14_debug R 259 1079 1097 19 - 10 NUM_BCD_DEC01 r 260 1098 1099 2 - 10 NUM_BCD_DEC01_debug R 261 1098 1099 2 - 10 NUM_BCD_DEC02 r 262 1100 1102 3 - 10 NUM_BCD_DEC02_debug R 263 1100 1102 3 - 10 NUM_BCD_DEC03 r 264 1103 1105 3 - 10 NUM_BCD_DEC03_debug R 265 1103 1105 3 - 10 NUM_BCD_DEC04 r 266 1106 1110 5 - 10 NUM_BCD_DEC04_debug R 267 1106 1110 5 - 10 NUM_BCD_DEC05 r 268 1111 1115 5 - 10 NUM_BCD_DEC05_debug R 269 1111 1115 5 - 10 NUM_BCD_DEC06 r 270 1116 1121 6 - 10 NUM_BCD_DEC06_debug R 271 1116 1121 6 - 10 NUM_BCD_DEC07 r 272 1122 1130 9 - 10 NUM_BCD_DEC07_debug R 273 1122 1130 9 - 10 NUM_BCD_DEC08 r 274 1131 1140 10 - 10 NUM_BCD_DEC08_debug R 275 1131 1140 10 - 10 NUM_BCD_DEC09 r 276 1141 1150 10 - 10 NUM_BCD_DEC09_debug R 277 1141 1150 10 - 10 NUM_BCD_DEC10 r 278 1151 1165 15 - 10 NUM_BCD_DEC10_debug R 279 1151 1165 15 - 10 NUM_BCD_SDEC01 r 280 1166 1167 2 - 10 NUM_BCD_SDEC01_debug R 281 1166 1167 2 - 10 NUM_BCD_SDEC02 r 282 1168 1170 3 - 10 NUM_BCD_SDEC02_debug R 283 1168 1170 3 - 10 NUM_BCD_SDEC03 r 284 1171 1173 3 - 10 NUM_BCD_SDEC03_debug R 285 1171 1173 3 - 10 NUM_BCD_SDEC04 r 286 1174 1178 5 - 10 NUM_BCD_SDEC04_debug R 287 1174 1178 5 - 10 NUM_BCD_SDEC05 r 288 1179 1183 5 - 10 NUM_BCD_SDEC05_debug R 289 1179 1183 5 - 10 NUM_BCD_SDEC06 r 290 1184 1189 6 - 10 NUM_BCD_SDEC06_debug R 291 1184 1189 6 - 10 NUM_BCD_SDEC07 r 292 1190 1198 9 - 10 NUM_BCD_SDEC07_debug R 293 1190 1198 9 - 10 NUM_BCD_SDEC08 r 294 1199 1208 10 - 10 NUM_BCD_SDEC08_debug R 295 1199 1208 10 - 10 NUM_BCD_SDEC09 r 296 1209 1218 10 - 10 NUM_BCD_SDEC09_debug R 297 1209 1218 10 - 10 NUM_BCD_SDEC10 r 298 1219 1233 15 - 10 NUM_BCD_SDEC10_debug R 299 1219 1233 15 - 10 NUM_SL_STR_INT01 r 300 1234 1243 10 - 10 NUM_SL_STR_INT01_debug R 301 1234 1243 10 - 10 NUM_SL_STR_DEC01 r 302 1244 1248 5 - 10 NUM_SL_STR_DEC01_debug R 303 1244 1248 5 - 10 NUM_ST_STR_INT01 r 304 1249 1258 10 - 10 NUM_ST_STR_INT01_debug R 305 1249 1258 10 - 10 NUM_ST_STR_DEC01 r 306 1259 1263 5 - 10 NUM_ST_STR_DEC01_debug R 307 1259 1263 5 - 10 NUM_SLI_STR_DEC01 r 308 1264 1270 7 - 10 NUM_SLI_STR_DEC01_debug R 309 1264 1270 7 - 10 NUM_STI_STR_DEC01 r 310 1271 1277 7 - 10 NUM_STI_STR_DEC01_debug R 311 1271 1277 7 - 10 NUM_SLI_DEBUG r 312 1278 1284 7 - 10 NUM_SLI_DEBUG_debug R 313 1278 1284 7 - 10 NUM_STI_DEBUG r 314 1285 1291 7 - 10 NUM_STI_DEBUG_debug R 315 1285 1291 7 - 10 FLOAT_01 r 316 1292 1295 4 - 10 FLOAT_01_debug R 317 1292 1295 4 - 10 DOUBLE_01 r 318 1296 1303 8 - 10 DOUBLE_01_debug R 319 1296 1303 8 - 10 COMMON_8_BIN r 320 1304 1307 4 - 10 COMMON_8_BIN_debug R 321 1304 1307 4 - 10 COMMON_S3_BIN r 322 1308 1309 2 - 10 COMMON_S3_BIN_debug R 323 1308 1309 2 - 10 COMMON_S94COMP r 324 1310 1311 2 - 10 COMMON_S94COMP_debug R 325 1310 1311 2 - 10 COMMON_S8_BIN r 326 1312 1315 4 - 10 COMMON_S8_BIN_debug R 327 1312 1315 4 - 10 COMMON_DDC97_BIN r 328 1316 1319 4 - 10 COMMON_DDC97_BIN_debug R 329 1316 1319 4 - 10 COMMON_97COMP3 r 330 1320 1323 4 - 10 COMMON_97COMP3_debug R 331 1320 1323 4 - 10 COMMON_915COMP3 r 332 1324 1331 8 - 10 COMMON_915COMP3_debug R 333 1324 1331 8 - 10 COMMON_S95COMP3 r 334 1332 1334 3 - 10 COMMON_S95COMP3_debug R 335 1332 1334 3 - 10 COMMON_S999DCCOMP3 r 336 1335 1340 6 - 10 COMMON_S999DCCOMP3_debug R 337 1335 1340 6 - 10 COMMON_S913COMP3 r 338 1341 1347 7 - 10 COMMON_S913COMP3_debug R 339 1341 1347 7 - 10 COMMON_S913DCCOMP3 r 340 1348 1355 8 - 10 COMMON_S913DCCOMP3_debug R 341 1348 1355 8 - 10 COMMON_S911DCC2 r 342 1356 1362 7 - 10 COMMON_S911DCC2_debug R 343 1356 1362 7 - 10 COMMON_S910DCC3 r 344 1363 1369 7 - 10 COMMON_S910DCC3_debug R 345 1363 1369 7 - 10 COMMON_S03DDC r 346 1370 1372 3 - 10 COMMON_S03DDC_debug R 347 1370 1372 3 - 10 COMMON_U03DDC r 348 1373 1375 3 - 10 COMMON_U03DDC_debug R 349 1373 1375 3 - 10 COMMON_UPC5DDC r 350 1376 1378 3 - 10 COMMON_UPC5DDC_debug R 351 1376 1378 3 - 10 COMMON_SPC5DDC r 352 1379 1381 3 - 10 COMMON_SPC5DDC_debug R 353 1379 1381 3 - 10 COMMON_UPI5DDC r 354 1382 1384 3 - 10 COMMON_UPI5DDC_debug R 355 1382 1384 3 - 10 COMMON_SPI5DDC r 356 1385 1387 3 - 10 COMMON_SPI5DDC_debug R 357 1385 1387 3 - 10 COMMON_UPC5DISP r 358 1388 1392 5 - 10 COMMON_UPC5DISP_debug R 359 1388 1392 5 - 10 COMMON_UPI5DISP r 360 1393 1397 5 - 10 COMMON_UPI5DISP_debug R 361 1393 1397 5 - 10 COMMON_UPC1BIN r 362 1398 1399 2 - 10 COMMON_UPC1BIN_debug R 363 1398 1399 2 - 10 COMMON_UPI1BIN r 364 1400 1401 2 - 10 COMMON_UPI1BIN_debug R 365 1400 1401 2 - 10 COMMON_UPC3BIN r 366 1402 1403 2 - 10 COMMON_UPC3BIN_debug R 367 1402 1403 2 - 10 COMMON_UPI3BIN r 368 1404 1405 2 - 10 COMMON_UPI3BIN_debug R 369 1404 1405 2 - 10 COMMON_UPC5BIN r 370 1406 1409 4 - 10 COMMON_UPC5BIN_debug R 371 1406 1409 4 - 10 COMMON_UPI5BIN r 372 1410 1413 4 - 10 COMMON_UPI5BIN_debug R 373 1410 1413 4 - 10 COMMON_UPC10BIN r 374 1414 1421 8 - 10 COMMON_UPC10BIN_debug R 375 1414 1421 8 - 10 COMMON_UPI10BIN r 376 1422 1429 8 - 10 COMMON_UPI10BIN_debug R 377 1422 1429 8 - 10 EX_NUM_INT01 r 378 1430 1438 9 - 10 EX_NUM_INT01_debug R 379 1430 1438 9 - 10 EX_NUM_INT02 r 380 1439 1447 9 - 10 EX_NUM_INT02_debug R 381 1439 1447 9 - 10 EX_NUM_INT03 r 382 1448 1456 9 - 10 EX_NUM_INT03_debug R 383 1448 1456 9 - 10 EX_NUM_INT04 r 384 1457 1465 9 - 10 EX_NUM_INT04_debug R 385 1457 1465 9 - 10 EX_NUM_DEC01 r 386 1466 1474 9 - 10 EX_NUM_DEC01_debug R 387 1466 1474 9 - 10 EX_NUM_DEC02 r 388 1475 1483 9 - 10 EX_NUM_DEC02_debug R 389 1475 1483 9 - 10 EX_NUM_DEC03 r 390 1484 1493 10 - 10 EX_NUM_DEC03_debug R 391 1484 1493 10 \ No newline at end of file +1 RECORD 1 1 1493 1493 + 10 ID r 2 1 4 4 + 10 ID_debug R 3 1 4 4 + 10 STRING_VAL r 4 5 14 10 + 10 STRING_VAL_debug R 5 5 14 10 + 10 NUM_STR_INT01 r 6 15 15 1 + 10 NUM_STR_INT01_debug R 7 15 15 1 + 10 NUM_STR_INT02 r 8 16 17 2 + 10 NUM_STR_INT02_debug R 9 16 17 2 + 10 NUM_STR_INT03 r 10 18 20 3 + 10 NUM_STR_INT03_debug R 11 18 20 3 + 10 NUM_STR_INT04 r 12 21 24 4 + 10 NUM_STR_INT04_debug R 13 21 24 4 + 10 NUM_STR_INT05 r 14 25 29 5 + 10 NUM_STR_INT05_debug R 15 25 29 5 + 10 NUM_STR_INT06 r 16 30 37 8 + 10 NUM_STR_INT06_debug R 17 30 37 8 + 10 NUM_STR_INT07 r 18 38 46 9 + 10 NUM_STR_INT07_debug R 19 38 46 9 + 10 NUM_STR_INT08 r 20 47 56 10 + 10 NUM_STR_INT08_debug R 21 47 56 10 + 10 NUM_STR_INT09 r 22 57 67 11 + 10 NUM_STR_INT09_debug R 23 57 67 11 + 10 NUM_STR_INT10 r 24 68 84 17 + 10 NUM_STR_INT10_debug R 25 68 84 17 + 10 NUM_STR_INT11 r 26 85 102 18 + 10 NUM_STR_INT11_debug R 27 85 102 18 + 10 NUM_STR_INT12 r 28 103 121 19 + 10 NUM_STR_INT12_debug R 29 103 121 19 + 10 NUM_STR_INT13 r 30 122 141 20 + 10 NUM_STR_INT13_debug R 31 122 141 20 + 10 NUM_STR_INT14 r 32 142 178 37 + 10 NUM_STR_INT14_debug R 33 142 178 37 + 10 NUM_STR_SINT02 r 34 179 180 2 + 10 NUM_STR_SINT02_debug R 35 179 180 2 + 10 NUM_STR_SINT03 r 36 181 183 3 + 10 NUM_STR_SINT03_debug R 37 181 183 3 + 10 NUM_STR_SINT04 r 38 184 187 4 + 10 NUM_STR_SINT04_debug R 39 184 187 4 + 10 NUM_STR_SINT05 r 40 188 192 5 + 10 NUM_STR_SINT05_debug R 41 188 192 5 + 10 NUM_STR_SINT06 r 42 193 200 8 + 10 NUM_STR_SINT06_debug R 43 193 200 8 + 10 NUM_STR_SINT07 r 44 201 209 9 + 10 NUM_STR_SINT07_debug R 45 201 209 9 + 10 NUM_STR_SINT08 r 46 210 219 10 + 10 NUM_STR_SINT08_debug R 47 210 219 10 + 10 NUM_STR_SINT09 r 48 220 230 11 + 10 NUM_STR_SINT09_debug R 49 220 230 11 + 10 NUM_STR_SINT10 r 50 231 247 17 + 10 NUM_STR_SINT10_debug R 51 231 247 17 + 10 NUM_STR_SINT11 r 52 248 265 18 + 10 NUM_STR_SINT11_debug R 53 248 265 18 + 10 NUM_STR_SINT12 r 54 266 284 19 + 10 NUM_STR_SINT12_debug R 55 266 284 19 + 10 NUM_STR_SINT13 r 56 285 304 20 + 10 NUM_STR_SINT13_debug R 57 285 304 20 + 10 NUM_STR_SINT14 r 58 305 341 37 + 10 NUM_STR_SINT14_debug R 59 305 341 37 + 10 NUM_STR_DEC01 r 60 342 344 3 + 10 NUM_STR_DEC01_debug R 61 342 344 3 + 10 NUM_STR_DEC02 r 62 345 348 4 + 10 NUM_STR_DEC02_debug R 63 345 348 4 + 10 NUM_STR_DEC03 r 64 349 353 5 + 10 NUM_STR_DEC03_debug R 65 349 353 5 + 10 NUM_STR_DEC04 r 66 354 361 8 + 10 NUM_STR_DEC04_debug R 67 354 361 8 + 10 NUM_STR_DEC05 r 68 362 370 9 + 10 NUM_STR_DEC05_debug R 69 362 370 9 + 10 NUM_STR_DEC06 r 70 371 380 10 + 10 NUM_STR_DEC06_debug R 71 371 380 10 + 10 NUM_STR_DEC07 r 72 381 397 17 + 10 NUM_STR_DEC07_debug R 73 381 397 17 + 10 NUM_STR_DEC08 r 74 398 415 18 + 10 NUM_STR_DEC08_debug R 75 398 415 18 + 10 NUM_STR_DEC09 r 76 416 434 19 + 10 NUM_STR_DEC09_debug R 77 416 434 19 + 10 NUM_STR_DEC10 r 78 435 462 28 + 10 NUM_STR_DEC10_debug R 79 435 462 28 + 10 NUM_STR_SDEC01 r 80 463 465 3 + 10 NUM_STR_SDEC01_debug R 81 463 465 3 + 10 NUM_STR_SDEC02 r 82 466 469 4 + 10 NUM_STR_SDEC02_debug R 83 466 469 4 + 10 NUM_STR_SDEC03 r 84 470 474 5 + 10 NUM_STR_SDEC03_debug R 85 470 474 5 + 10 NUM_STR_SDEC04 r 86 475 482 8 + 10 NUM_STR_SDEC04_debug R 87 475 482 8 + 10 NUM_STR_SDEC05 r 88 483 491 9 + 10 NUM_STR_SDEC05_debug R 89 483 491 9 + 10 NUM_STR_SDEC06 r 90 492 501 10 + 10 NUM_STR_SDEC06_debug R 91 492 501 10 + 10 NUM_STR_SDEC07 r 92 502 518 17 + 10 NUM_STR_SDEC07_debug R 93 502 518 17 + 10 NUM_STR_SDEC08 r 94 519 536 18 + 10 NUM_STR_SDEC08_debug R 95 519 536 18 + 10 NUM_STR_SDEC09 r 96 537 555 19 + 10 NUM_STR_SDEC09_debug R 97 537 555 19 + 10 NUM_STR_SDEC10 r 98 556 583 28 + 10 NUM_STR_SDEC10_debug R 99 556 583 28 + 10 NUM_STR_EDEC03 r 100 584 589 6 + 10 NUM_STR_EDEC03_debug R 101 584 589 6 + 10 NUM_STR_EDEC04 r 102 590 598 9 + 10 NUM_STR_EDEC04_debug R 103 590 598 9 + 10 NUM_STR_EDEC05 r 104 599 608 10 + 10 NUM_STR_EDEC05_debug R 105 599 608 10 + 10 NUM_STR_EDEC06 r 106 609 619 11 + 10 NUM_STR_EDEC06_debug R 107 609 619 11 + 10 NUM_BIN_INT01 r 108 620 621 2 + 10 NUM_BIN_INT01_debug R 109 620 621 2 + 10 NUM_BIN_INT02 r 110 622 623 2 + 10 NUM_BIN_INT02_debug R 111 622 623 2 + 10 NUM_BIN_INT03 r 112 624 625 2 + 10 NUM_BIN_INT03_debug R 113 624 625 2 + 10 NUM_BIN_INT04 r 114 626 627 2 + 10 NUM_BIN_INT04_debug R 115 626 627 2 + 10 NUM_BIN_INT05 r 116 628 631 4 + 10 NUM_BIN_INT05_debug R 117 628 631 4 + 10 NUM_BIN_INT06 r 118 632 635 4 + 10 NUM_BIN_INT06_debug R 119 632 635 4 + 10 NUM_BIN_INT07 r 120 636 639 4 + 10 NUM_BIN_INT07_debug R 121 636 639 4 + 10 NUM_BIN_INT08 r 122 640 647 8 + 10 NUM_BIN_INT08_debug R 123 640 647 8 + 10 NUM_BIN_INT09 r 124 648 655 8 + 10 NUM_BIN_INT09_debug R 125 648 655 8 + 10 NUM_BIN_INT10 r 126 656 663 8 + 10 NUM_BIN_INT10_debug R 127 656 663 8 + 10 NUM_BIN_INT11 r 128 664 671 8 + 10 NUM_BIN_INT11_debug R 129 664 671 8 + 10 NUM_BIN_INT12 r 130 672 680 9 + 10 NUM_BIN_INT12_debug R 131 672 680 9 + 10 NUM_BIN_INT13 r 132 681 689 9 + 10 NUM_BIN_INT13_debug R 133 681 689 9 + 10 NUM_BIN_INT14 r 134 690 705 16 + 10 NUM_BIN_INT14_debug R 135 690 705 16 + 10 NUM_SBIN_SINT01 r 136 706 707 2 + 10 NUM_SBIN_SINT01_debug R 137 706 707 2 + 10 NUM_SBIN_SINT02 r 138 708 709 2 + 10 NUM_SBIN_SINT02_debug R 139 708 709 2 + 10 NUM_SBIN_SINT03 r 140 710 711 2 + 10 NUM_SBIN_SINT03_debug R 141 710 711 2 + 10 NUM_SBIN_SINT04 r 142 712 713 2 + 10 NUM_SBIN_SINT04_debug R 143 712 713 2 + 10 NUM_SBIN_SINT05 r 144 714 717 4 + 10 NUM_SBIN_SINT05_debug R 145 714 717 4 + 10 NUM_SBIN_SINT06 r 146 718 721 4 + 10 NUM_SBIN_SINT06_debug R 147 718 721 4 + 10 NUM_SBIN_SINT07 r 148 722 725 4 + 10 NUM_SBIN_SINT07_debug R 149 722 725 4 + 10 NUM_SBIN_SINT08 r 150 726 733 8 + 10 NUM_SBIN_SINT08_debug R 151 726 733 8 + 10 NUM_SBIN_SINT09 r 152 734 741 8 + 10 NUM_SBIN_SINT09_debug R 153 734 741 8 + 10 NUM_SBIN_SINT10 r 154 742 749 8 + 10 NUM_SBIN_SINT10_debug R 155 742 749 8 + 10 NUM_SBIN_SINT11 r 156 750 757 8 + 10 NUM_SBIN_SINT11_debug R 157 750 757 8 + 10 NUM_SBIN_SINT12 r 158 758 766 9 + 10 NUM_SBIN_SINT12_debug R 159 758 766 9 + 10 NUM_SBIN_SINT13 r 160 767 775 9 + 10 NUM_SBIN_SINT13_debug R 161 767 775 9 + 10 NUM_SBIN_SINT14 r 162 776 791 16 + 10 NUM_SBIN_SINT14_debug R 163 776 791 16 + 10 NUM_BIN_DEC01 r 164 792 793 2 + 10 NUM_BIN_DEC01_debug R 165 792 793 2 + 10 NUM_BIN_DEC02 r 166 794 795 2 + 10 NUM_BIN_DEC02_debug R 167 794 795 2 + 10 NUM_BIN_DEC03 r 168 796 799 4 + 10 NUM_BIN_DEC03_debug R 169 796 799 4 + 10 NUM_BIN_DEC04 r 170 800 803 4 + 10 NUM_BIN_DEC04_debug R 171 800 803 4 + 10 NUM_BIN_DEC05 r 172 804 807 4 + 10 NUM_BIN_DEC05_debug R 173 804 807 4 + 10 NUM_BIN_DEC06 r 174 808 815 8 + 10 NUM_BIN_DEC06_debug R 175 808 815 8 + 10 NUM_BIN_DEC07 r 176 816 823 8 + 10 NUM_BIN_DEC07_debug R 177 816 823 8 + 10 NUM_BIN_DEC08 r 178 824 831 8 + 10 NUM_BIN_DEC08_debug R 179 824 831 8 + 10 NUM_BIN_DEC09 r 180 832 840 9 + 10 NUM_BIN_DEC09_debug R 181 832 840 9 + 10 NUM_BIN_DEC10 r 182 841 852 12 + 10 NUM_BIN_DEC10_debug R 183 841 852 12 + 10 NUM_SBIN_DEC01 r 184 853 854 2 + 10 NUM_SBIN_DEC01_debug R 185 853 854 2 + 10 NUM_SBIN_DEC02 r 186 855 856 2 + 10 NUM_SBIN_DEC02_debug R 187 855 856 2 + 10 NUM_SBIN_DEC03 r 188 857 860 4 + 10 NUM_SBIN_DEC03_debug R 189 857 860 4 + 10 NUM_SBIN_DEC04 r 190 861 864 4 + 10 NUM_SBIN_DEC04_debug R 191 861 864 4 + 10 NUM_SBIN_DEC05 r 192 865 868 4 + 10 NUM_SBIN_DEC05_debug R 193 865 868 4 + 10 NUM_SBIN_DEC06 r 194 869 876 8 + 10 NUM_SBIN_DEC06_debug R 195 869 876 8 + 10 NUM_SBIN_DEC07 r 196 877 884 8 + 10 NUM_SBIN_DEC07_debug R 197 877 884 8 + 10 NUM_SBIN_DEC08 r 198 885 892 8 + 10 NUM_SBIN_DEC08_debug R 199 885 892 8 + 10 NUM_SBIN_DEC09 r 200 893 901 9 + 10 NUM_SBIN_DEC09_debug R 201 893 901 9 + 10 NUM_SBIN_DEC10 r 202 902 913 12 + 10 NUM_SBIN_DEC10_debug R 203 902 913 12 + 10 NUM_BCD_INT01 r 204 914 914 1 + 10 NUM_BCD_INT01_debug R 205 914 914 1 + 10 NUM_BCD_INT02 r 206 915 916 2 + 10 NUM_BCD_INT02_debug R 207 915 916 2 + 10 NUM_BCD_INT03 r 208 917 918 2 + 10 NUM_BCD_INT03_debug R 209 917 918 2 + 10 NUM_BCD_INT04 r 210 919 921 3 + 10 NUM_BCD_INT04_debug R 211 919 921 3 + 10 NUM_BCD_INT05 r 212 922 924 3 + 10 NUM_BCD_INT05_debug R 213 922 924 3 + 10 NUM_BCD_INT06 r 214 925 929 5 + 10 NUM_BCD_INT06_debug R 215 925 929 5 + 10 NUM_BCD_INT07 r 216 930 934 5 + 10 NUM_BCD_INT07_debug R 217 930 934 5 + 10 NUM_BCD_INT08 r 218 935 940 6 + 10 NUM_BCD_INT08_debug R 219 935 940 6 + 10 NUM_BCD_INT09 r 220 941 946 6 + 10 NUM_BCD_INT09_debug R 221 941 946 6 + 10 NUM_BCD_INT10 r 222 947 955 9 + 10 NUM_BCD_INT10_debug R 223 947 955 9 + 10 NUM_BCD_INT11 r 224 956 965 10 + 10 NUM_BCD_INT11_debug R 225 956 965 10 + 10 NUM_BCD_INT12 r 226 966 975 10 + 10 NUM_BCD_INT12_debug R 227 966 975 10 + 10 NUM_BCD_INT13 r 228 976 986 11 + 10 NUM_BCD_INT13_debug R 229 976 986 11 + 10 NUM_BCD_INT14 r 230 987 1005 19 + 10 NUM_BCD_INT14_debug R 231 987 1005 19 + 10 NUM_BCD_SINT01 r 232 1006 1006 1 + 10 NUM_BCD_SINT01_debug R 233 1006 1006 1 + 10 NUM_BCD_SINT02 r 234 1007 1008 2 + 10 NUM_BCD_SINT02_debug R 235 1007 1008 2 + 10 NUM_BCD_SINT03 r 236 1009 1010 2 + 10 NUM_BCD_SINT03_debug R 237 1009 1010 2 + 10 NUM_BCD_SINT04 r 238 1011 1013 3 + 10 NUM_BCD_SINT04_debug R 239 1011 1013 3 + 10 NUM_BCD_SINT05 r 240 1014 1016 3 + 10 NUM_BCD_SINT05_debug R 241 1014 1016 3 + 10 NUM_BCD_SINT06 r 242 1017 1021 5 + 10 NUM_BCD_SINT06_debug R 243 1017 1021 5 + 10 NUM_BCD_SINT07 r 244 1022 1026 5 + 10 NUM_BCD_SINT07_debug R 245 1022 1026 5 + 10 NUM_BCD_SINT08 r 246 1027 1032 6 + 10 NUM_BCD_SINT08_debug R 247 1027 1032 6 + 10 NUM_BCD_SINT09 r 248 1033 1038 6 + 10 NUM_BCD_SINT09_debug R 249 1033 1038 6 + 10 NUM_BCD_SINT10 r 250 1039 1047 9 + 10 NUM_BCD_SINT10_debug R 251 1039 1047 9 + 10 NUM_BCD_SINT11 r 252 1048 1057 10 + 10 NUM_BCD_SINT11_debug R 253 1048 1057 10 + 10 NUM_BCD_SINT12 r 254 1058 1067 10 + 10 NUM_BCD_SINT12_debug R 255 1058 1067 10 + 10 NUM_BCD_SINT13 r 256 1068 1078 11 + 10 NUM_BCD_SINT13_debug R 257 1068 1078 11 + 10 NUM_BCD_SINT14 r 258 1079 1097 19 + 10 NUM_BCD_SINT14_debug R 259 1079 1097 19 + 10 NUM_BCD_DEC01 r 260 1098 1099 2 + 10 NUM_BCD_DEC01_debug R 261 1098 1099 2 + 10 NUM_BCD_DEC02 r 262 1100 1102 3 + 10 NUM_BCD_DEC02_debug R 263 1100 1102 3 + 10 NUM_BCD_DEC03 r 264 1103 1105 3 + 10 NUM_BCD_DEC03_debug R 265 1103 1105 3 + 10 NUM_BCD_DEC04 r 266 1106 1110 5 + 10 NUM_BCD_DEC04_debug R 267 1106 1110 5 + 10 NUM_BCD_DEC05 r 268 1111 1115 5 + 10 NUM_BCD_DEC05_debug R 269 1111 1115 5 + 10 NUM_BCD_DEC06 r 270 1116 1121 6 + 10 NUM_BCD_DEC06_debug R 271 1116 1121 6 + 10 NUM_BCD_DEC07 r 272 1122 1130 9 + 10 NUM_BCD_DEC07_debug R 273 1122 1130 9 + 10 NUM_BCD_DEC08 r 274 1131 1140 10 + 10 NUM_BCD_DEC08_debug R 275 1131 1140 10 + 10 NUM_BCD_DEC09 r 276 1141 1150 10 + 10 NUM_BCD_DEC09_debug R 277 1141 1150 10 + 10 NUM_BCD_DEC10 r 278 1151 1165 15 + 10 NUM_BCD_DEC10_debug R 279 1151 1165 15 + 10 NUM_BCD_SDEC01 r 280 1166 1167 2 + 10 NUM_BCD_SDEC01_debug R 281 1166 1167 2 + 10 NUM_BCD_SDEC02 r 282 1168 1170 3 + 10 NUM_BCD_SDEC02_debug R 283 1168 1170 3 + 10 NUM_BCD_SDEC03 r 284 1171 1173 3 + 10 NUM_BCD_SDEC03_debug R 285 1171 1173 3 + 10 NUM_BCD_SDEC04 r 286 1174 1178 5 + 10 NUM_BCD_SDEC04_debug R 287 1174 1178 5 + 10 NUM_BCD_SDEC05 r 288 1179 1183 5 + 10 NUM_BCD_SDEC05_debug R 289 1179 1183 5 + 10 NUM_BCD_SDEC06 r 290 1184 1189 6 + 10 NUM_BCD_SDEC06_debug R 291 1184 1189 6 + 10 NUM_BCD_SDEC07 r 292 1190 1198 9 + 10 NUM_BCD_SDEC07_debug R 293 1190 1198 9 + 10 NUM_BCD_SDEC08 r 294 1199 1208 10 + 10 NUM_BCD_SDEC08_debug R 295 1199 1208 10 + 10 NUM_BCD_SDEC09 r 296 1209 1218 10 + 10 NUM_BCD_SDEC09_debug R 297 1209 1218 10 + 10 NUM_BCD_SDEC10 r 298 1219 1233 15 + 10 NUM_BCD_SDEC10_debug R 299 1219 1233 15 + 10 NUM_SL_STR_INT01 r 300 1234 1243 10 + 10 NUM_SL_STR_INT01_debug R 301 1234 1243 10 + 10 NUM_SL_STR_DEC01 r 302 1244 1248 5 + 10 NUM_SL_STR_DEC01_debug R 303 1244 1248 5 + 10 NUM_ST_STR_INT01 r 304 1249 1258 10 + 10 NUM_ST_STR_INT01_debug R 305 1249 1258 10 + 10 NUM_ST_STR_DEC01 r 306 1259 1263 5 + 10 NUM_ST_STR_DEC01_debug R 307 1259 1263 5 + 10 NUM_SLI_STR_DEC01 r 308 1264 1270 7 + 10 NUM_SLI_STR_DEC01_debug R 309 1264 1270 7 + 10 NUM_STI_STR_DEC01 r 310 1271 1277 7 + 10 NUM_STI_STR_DEC01_debug R 311 1271 1277 7 + 10 NUM_SLI_DEBUG r 312 1278 1284 7 + 10 NUM_SLI_DEBUG_debug R 313 1278 1284 7 + 10 NUM_STI_DEBUG r 314 1285 1291 7 + 10 NUM_STI_DEBUG_debug R 315 1285 1291 7 + 10 FLOAT_01 r 316 1292 1295 4 + 10 FLOAT_01_debug R 317 1292 1295 4 + 10 DOUBLE_01 r 318 1296 1303 8 + 10 DOUBLE_01_debug R 319 1296 1303 8 + 10 COMMON_8_BIN r 320 1304 1307 4 + 10 COMMON_8_BIN_debug R 321 1304 1307 4 + 10 COMMON_S3_BIN r 322 1308 1309 2 + 10 COMMON_S3_BIN_debug R 323 1308 1309 2 + 10 COMMON_S94COMP r 324 1310 1311 2 + 10 COMMON_S94COMP_debug R 325 1310 1311 2 + 10 COMMON_S8_BIN r 326 1312 1315 4 + 10 COMMON_S8_BIN_debug R 327 1312 1315 4 + 10 COMMON_DDC97_BIN r 328 1316 1319 4 + 10 COMMON_DDC97_BIN_debug R 329 1316 1319 4 + 10 COMMON_97COMP3 r 330 1320 1323 4 + 10 COMMON_97COMP3_debug R 331 1320 1323 4 + 10 COMMON_915COMP3 r 332 1324 1331 8 + 10 COMMON_915COMP3_debug R 333 1324 1331 8 + 10 COMMON_S95COMP3 r 334 1332 1334 3 + 10 COMMON_S95COMP3_debug R 335 1332 1334 3 + 10 COMMON_S999DCCOMP3 r 336 1335 1340 6 + 10 COMMON_S999DCCOMP3_debug R 337 1335 1340 6 + 10 COMMON_S913COMP3 r 338 1341 1347 7 + 10 COMMON_S913COMP3_debug R 339 1341 1347 7 + 10 COMMON_S913DCCOMP3 r 340 1348 1355 8 + 10 COMMON_S913DCCOMP3_debug R 341 1348 1355 8 + 10 COMMON_S911DCC2 r 342 1356 1362 7 + 10 COMMON_S911DCC2_debug R 343 1356 1362 7 + 10 COMMON_S910DCC3 r 344 1363 1369 7 + 10 COMMON_S910DCC3_debug R 345 1363 1369 7 + 10 COMMON_S03DDC r 346 1370 1372 3 + 10 COMMON_S03DDC_debug R 347 1370 1372 3 + 10 COMMON_U03DDC r 348 1373 1375 3 + 10 COMMON_U03DDC_debug R 349 1373 1375 3 + 10 COMMON_UPC5DDC r 350 1376 1378 3 + 10 COMMON_UPC5DDC_debug R 351 1376 1378 3 + 10 COMMON_SPC5DDC r 352 1379 1381 3 + 10 COMMON_SPC5DDC_debug R 353 1379 1381 3 + 10 COMMON_UPI5DDC r 354 1382 1384 3 + 10 COMMON_UPI5DDC_debug R 355 1382 1384 3 + 10 COMMON_SPI5DDC r 356 1385 1387 3 + 10 COMMON_SPI5DDC_debug R 357 1385 1387 3 + 10 COMMON_UPC5DISP r 358 1388 1392 5 + 10 COMMON_UPC5DISP_debug R 359 1388 1392 5 + 10 COMMON_UPI5DISP r 360 1393 1397 5 + 10 COMMON_UPI5DISP_debug R 361 1393 1397 5 + 10 COMMON_UPC1BIN r 362 1398 1399 2 + 10 COMMON_UPC1BIN_debug R 363 1398 1399 2 + 10 COMMON_UPI1BIN r 364 1400 1401 2 + 10 COMMON_UPI1BIN_debug R 365 1400 1401 2 + 10 COMMON_UPC3BIN r 366 1402 1403 2 + 10 COMMON_UPC3BIN_debug R 367 1402 1403 2 + 10 COMMON_UPI3BIN r 368 1404 1405 2 + 10 COMMON_UPI3BIN_debug R 369 1404 1405 2 + 10 COMMON_UPC5BIN r 370 1406 1409 4 + 10 COMMON_UPC5BIN_debug R 371 1406 1409 4 + 10 COMMON_UPI5BIN r 372 1410 1413 4 + 10 COMMON_UPI5BIN_debug R 373 1410 1413 4 + 10 COMMON_UPC10BIN r 374 1414 1421 8 + 10 COMMON_UPC10BIN_debug R 375 1414 1421 8 + 10 COMMON_UPI10BIN r 376 1422 1429 8 + 10 COMMON_UPI10BIN_debug R 377 1422 1429 8 + 10 EX_NUM_INT01 r 378 1430 1438 9 + 10 EX_NUM_INT01_debug R 379 1430 1438 9 + 10 EX_NUM_INT02 r 380 1439 1447 9 + 10 EX_NUM_INT02_debug R 381 1439 1447 9 + 10 EX_NUM_INT03 r 382 1448 1456 9 + 10 EX_NUM_INT03_debug R 383 1448 1456 9 + 10 EX_NUM_INT04 r 384 1457 1465 9 + 10 EX_NUM_INT04_debug R 385 1457 1465 9 + 10 EX_NUM_DEC01 r 386 1466 1474 9 + 10 EX_NUM_DEC01_debug R 387 1466 1474 9 + 10 EX_NUM_DEC02 r 388 1475 1483 9 + 10 EX_NUM_DEC02_debug R 389 1475 1483 9 + 10 EX_NUM_DEC03 r 390 1484 1493 10 + 10 EX_NUM_DEC03_debug R 391 1484 1493 10 \ No newline at end of file diff --git a/data/test6_expected/test6_layout.txt b/data/test6_expected/test6_layout.txt index 718f24ac..d1d1b67d 100644 --- a/data/test6_expected/test6_layout.txt +++ b/data/test6_expected/test6_layout.txt @@ -1,198 +1,198 @@ -------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH - 1 RECORD 196 1 1493 1493 - 10 ID 2 1 4 4 - 10 STRING_VAL 3 5 14 10 - 10 NUM_STR_INT01 4 15 15 1 - 10 NUM_STR_INT02 5 16 17 2 - 10 NUM_STR_INT03 6 18 20 3 - 10 NUM_STR_INT04 7 21 24 4 - 10 NUM_STR_INT05 8 25 29 5 - 10 NUM_STR_INT06 9 30 37 8 - 10 NUM_STR_INT07 10 38 46 9 - 10 NUM_STR_INT08 11 47 56 10 - 10 NUM_STR_INT09 12 57 67 11 - 10 NUM_STR_INT10 13 68 84 17 - 10 NUM_STR_INT11 14 85 102 18 - 10 NUM_STR_INT12 15 103 121 19 - 10 NUM_STR_INT13 16 122 141 20 - 10 NUM_STR_INT14 17 142 178 37 - 10 NUM_STR_SINT02 18 179 180 2 - 10 NUM_STR_SINT03 19 181 183 3 - 10 NUM_STR_SINT04 20 184 187 4 - 10 NUM_STR_SINT05 21 188 192 5 - 10 NUM_STR_SINT06 22 193 200 8 - 10 NUM_STR_SINT07 23 201 209 9 - 10 NUM_STR_SINT08 24 210 219 10 - 10 NUM_STR_SINT09 25 220 230 11 - 10 NUM_STR_SINT10 26 231 247 17 - 10 NUM_STR_SINT11 27 248 265 18 - 10 NUM_STR_SINT12 28 266 284 19 - 10 NUM_STR_SINT13 29 285 304 20 - 10 NUM_STR_SINT14 30 305 341 37 - 10 NUM_STR_DEC01 31 342 344 3 - 10 NUM_STR_DEC02 32 345 348 4 - 10 NUM_STR_DEC03 33 349 353 5 - 10 NUM_STR_DEC04 34 354 361 8 - 10 NUM_STR_DEC05 35 362 370 9 - 10 NUM_STR_DEC06 36 371 380 10 - 10 NUM_STR_DEC07 37 381 397 17 - 10 NUM_STR_DEC08 38 398 415 18 - 10 NUM_STR_DEC09 39 416 434 19 - 10 NUM_STR_DEC10 40 435 462 28 - 10 NUM_STR_SDEC01 41 463 465 3 - 10 NUM_STR_SDEC02 42 466 469 4 - 10 NUM_STR_SDEC03 43 470 474 5 - 10 NUM_STR_SDEC04 44 475 482 8 - 10 NUM_STR_SDEC05 45 483 491 9 - 10 NUM_STR_SDEC06 46 492 501 10 - 10 NUM_STR_SDEC07 47 502 518 17 - 10 NUM_STR_SDEC08 48 519 536 18 - 10 NUM_STR_SDEC09 49 537 555 19 - 10 NUM_STR_SDEC10 50 556 583 28 - 10 NUM_STR_EDEC03 51 584 589 6 - 10 NUM_STR_EDEC04 52 590 598 9 - 10 NUM_STR_EDEC05 53 599 608 10 - 10 NUM_STR_EDEC06 54 609 619 11 - 10 NUM_BIN_INT01 55 620 621 2 - 10 NUM_BIN_INT02 56 622 623 2 - 10 NUM_BIN_INT03 57 624 625 2 - 10 NUM_BIN_INT04 58 626 627 2 - 10 NUM_BIN_INT05 59 628 631 4 - 10 NUM_BIN_INT06 60 632 635 4 - 10 NUM_BIN_INT07 61 636 639 4 - 10 NUM_BIN_INT08 62 640 647 8 - 10 NUM_BIN_INT09 63 648 655 8 - 10 NUM_BIN_INT10 64 656 663 8 - 10 NUM_BIN_INT11 65 664 671 8 - 10 NUM_BIN_INT12 66 672 680 9 - 10 NUM_BIN_INT13 67 681 689 9 - 10 NUM_BIN_INT14 68 690 705 16 - 10 NUM_SBIN_SINT01 69 706 707 2 - 10 NUM_SBIN_SINT02 70 708 709 2 - 10 NUM_SBIN_SINT03 71 710 711 2 - 10 NUM_SBIN_SINT04 72 712 713 2 - 10 NUM_SBIN_SINT05 73 714 717 4 - 10 NUM_SBIN_SINT06 74 718 721 4 - 10 NUM_SBIN_SINT07 75 722 725 4 - 10 NUM_SBIN_SINT08 76 726 733 8 - 10 NUM_SBIN_SINT09 77 734 741 8 - 10 NUM_SBIN_SINT10 78 742 749 8 - 10 NUM_SBIN_SINT11 79 750 757 8 - 10 NUM_SBIN_SINT12 80 758 766 9 - 10 NUM_SBIN_SINT13 81 767 775 9 - 10 NUM_SBIN_SINT14 82 776 791 16 - 10 NUM_BIN_DEC01 83 792 793 2 - 10 NUM_BIN_DEC02 84 794 795 2 - 10 NUM_BIN_DEC03 85 796 799 4 - 10 NUM_BIN_DEC04 86 800 803 4 - 10 NUM_BIN_DEC05 87 804 807 4 - 10 NUM_BIN_DEC06 88 808 815 8 - 10 NUM_BIN_DEC07 89 816 823 8 - 10 NUM_BIN_DEC08 90 824 831 8 - 10 NUM_BIN_DEC09 91 832 840 9 - 10 NUM_BIN_DEC10 92 841 852 12 - 10 NUM_SBIN_DEC01 93 853 854 2 - 10 NUM_SBIN_DEC02 94 855 856 2 - 10 NUM_SBIN_DEC03 95 857 860 4 - 10 NUM_SBIN_DEC04 96 861 864 4 - 10 NUM_SBIN_DEC05 97 865 868 4 - 10 NUM_SBIN_DEC06 98 869 876 8 - 10 NUM_SBIN_DEC07 99 877 884 8 - 10 NUM_SBIN_DEC08 100 885 892 8 - 10 NUM_SBIN_DEC09 101 893 901 9 - 10 NUM_SBIN_DEC10 102 902 913 12 - 10 NUM_BCD_INT01 103 914 914 1 - 10 NUM_BCD_INT02 104 915 916 2 - 10 NUM_BCD_INT03 105 917 918 2 - 10 NUM_BCD_INT04 106 919 921 3 - 10 NUM_BCD_INT05 107 922 924 3 - 10 NUM_BCD_INT06 108 925 929 5 - 10 NUM_BCD_INT07 109 930 934 5 - 10 NUM_BCD_INT08 110 935 940 6 - 10 NUM_BCD_INT09 111 941 946 6 - 10 NUM_BCD_INT10 112 947 955 9 - 10 NUM_BCD_INT11 113 956 965 10 - 10 NUM_BCD_INT12 114 966 975 10 - 10 NUM_BCD_INT13 115 976 986 11 - 10 NUM_BCD_INT14 116 987 1005 19 - 10 NUM_BCD_SINT01 117 1006 1006 1 - 10 NUM_BCD_SINT02 118 1007 1008 2 - 10 NUM_BCD_SINT03 119 1009 1010 2 - 10 NUM_BCD_SINT04 120 1011 1013 3 - 10 NUM_BCD_SINT05 121 1014 1016 3 - 10 NUM_BCD_SINT06 122 1017 1021 5 - 10 NUM_BCD_SINT07 123 1022 1026 5 - 10 NUM_BCD_SINT08 124 1027 1032 6 - 10 NUM_BCD_SINT09 125 1033 1038 6 - 10 NUM_BCD_SINT10 126 1039 1047 9 - 10 NUM_BCD_SINT11 127 1048 1057 10 - 10 NUM_BCD_SINT12 128 1058 1067 10 - 10 NUM_BCD_SINT13 129 1068 1078 11 - 10 NUM_BCD_SINT14 130 1079 1097 19 - 10 NUM_BCD_DEC01 131 1098 1099 2 - 10 NUM_BCD_DEC02 132 1100 1102 3 - 10 NUM_BCD_DEC03 133 1103 1105 3 - 10 NUM_BCD_DEC04 134 1106 1110 5 - 10 NUM_BCD_DEC05 135 1111 1115 5 - 10 NUM_BCD_DEC06 136 1116 1121 6 - 10 NUM_BCD_DEC07 137 1122 1130 9 - 10 NUM_BCD_DEC08 138 1131 1140 10 - 10 NUM_BCD_DEC09 139 1141 1150 10 - 10 NUM_BCD_DEC10 140 1151 1165 15 - 10 NUM_BCD_SDEC01 141 1166 1167 2 - 10 NUM_BCD_SDEC02 142 1168 1170 3 - 10 NUM_BCD_SDEC03 143 1171 1173 3 - 10 NUM_BCD_SDEC04 144 1174 1178 5 - 10 NUM_BCD_SDEC05 145 1179 1183 5 - 10 NUM_BCD_SDEC06 146 1184 1189 6 - 10 NUM_BCD_SDEC07 147 1190 1198 9 - 10 NUM_BCD_SDEC08 148 1199 1208 10 - 10 NUM_BCD_SDEC09 149 1209 1218 10 - 10 NUM_BCD_SDEC10 150 1219 1233 15 - 10 NUM_SL_STR_INT01 151 1234 1243 10 - 10 NUM_SL_STR_DEC01 152 1244 1248 5 - 10 NUM_ST_STR_INT01 153 1249 1258 10 - 10 NUM_ST_STR_DEC01 154 1259 1263 5 - 10 NUM_SLI_STR_DEC01 155 1264 1270 7 - 10 NUM_STI_STR_DEC01 156 1271 1277 7 - 10 NUM_SLI_DEBUG 157 1278 1284 7 - 10 NUM_STI_DEBUG 158 1285 1291 7 - 10 FLOAT_01 159 1292 1295 4 - 10 DOUBLE_01 160 1296 1303 8 - 10 COMMON_8_BIN 161 1304 1307 4 - 10 COMMON_S3_BIN 162 1308 1309 2 - 10 COMMON_S94COMP 163 1310 1311 2 - 10 COMMON_S8_BIN 164 1312 1315 4 - 10 COMMON_DDC97_BIN 165 1316 1319 4 - 10 COMMON_97COMP3 166 1320 1323 4 - 10 COMMON_915COMP3 167 1324 1331 8 - 10 COMMON_S95COMP3 168 1332 1334 3 - 10 COMMON_S999DCCOMP3 169 1335 1340 6 - 10 COMMON_S913COMP3 170 1341 1347 7 - 10 COMMON_S913DCCOMP3 171 1348 1355 8 - 10 COMMON_S911DCC2 172 1356 1362 7 - 10 COMMON_S910DCC3 173 1363 1369 7 - 10 COMMON_S03DDC 174 1370 1372 3 - 10 COMMON_U03DDC 175 1373 1375 3 - 10 COMMON_UPC5DDC 176 1376 1378 3 - 10 COMMON_SPC5DDC 177 1379 1381 3 - 10 COMMON_UPI5DDC 178 1382 1384 3 - 10 COMMON_SPI5DDC 179 1385 1387 3 - 10 COMMON_UPC5DISP 180 1388 1392 5 - 10 COMMON_UPI5DISP 181 1393 1397 5 - 10 COMMON_UPC1BIN 182 1398 1399 2 - 10 COMMON_UPI1BIN 183 1400 1401 2 - 10 COMMON_UPC3BIN 184 1402 1403 2 - 10 COMMON_UPI3BIN 185 1404 1405 2 - 10 COMMON_UPC5BIN 186 1406 1409 4 - 10 COMMON_UPI5BIN 187 1410 1413 4 - 10 COMMON_UPC10BIN 188 1414 1421 8 - 10 COMMON_UPI10BIN 189 1422 1429 8 - 10 EX_NUM_INT01 190 1430 1438 9 - 10 EX_NUM_INT02 191 1439 1447 9 - 10 EX_NUM_INT03 192 1448 1456 9 - 10 EX_NUM_INT04 193 1457 1465 9 - 10 EX_NUM_DEC01 194 1466 1474 9 - 10 EX_NUM_DEC02 195 1475 1483 9 - 10 EX_NUM_DEC03 196 1484 1493 10 \ No newline at end of file +1 RECORD 1 1 1493 1493 + 10 ID 2 1 4 4 + 10 STRING_VAL 3 5 14 10 + 10 NUM_STR_INT01 4 15 15 1 + 10 NUM_STR_INT02 5 16 17 2 + 10 NUM_STR_INT03 6 18 20 3 + 10 NUM_STR_INT04 7 21 24 4 + 10 NUM_STR_INT05 8 25 29 5 + 10 NUM_STR_INT06 9 30 37 8 + 10 NUM_STR_INT07 10 38 46 9 + 10 NUM_STR_INT08 11 47 56 10 + 10 NUM_STR_INT09 12 57 67 11 + 10 NUM_STR_INT10 13 68 84 17 + 10 NUM_STR_INT11 14 85 102 18 + 10 NUM_STR_INT12 15 103 121 19 + 10 NUM_STR_INT13 16 122 141 20 + 10 NUM_STR_INT14 17 142 178 37 + 10 NUM_STR_SINT02 18 179 180 2 + 10 NUM_STR_SINT03 19 181 183 3 + 10 NUM_STR_SINT04 20 184 187 4 + 10 NUM_STR_SINT05 21 188 192 5 + 10 NUM_STR_SINT06 22 193 200 8 + 10 NUM_STR_SINT07 23 201 209 9 + 10 NUM_STR_SINT08 24 210 219 10 + 10 NUM_STR_SINT09 25 220 230 11 + 10 NUM_STR_SINT10 26 231 247 17 + 10 NUM_STR_SINT11 27 248 265 18 + 10 NUM_STR_SINT12 28 266 284 19 + 10 NUM_STR_SINT13 29 285 304 20 + 10 NUM_STR_SINT14 30 305 341 37 + 10 NUM_STR_DEC01 31 342 344 3 + 10 NUM_STR_DEC02 32 345 348 4 + 10 NUM_STR_DEC03 33 349 353 5 + 10 NUM_STR_DEC04 34 354 361 8 + 10 NUM_STR_DEC05 35 362 370 9 + 10 NUM_STR_DEC06 36 371 380 10 + 10 NUM_STR_DEC07 37 381 397 17 + 10 NUM_STR_DEC08 38 398 415 18 + 10 NUM_STR_DEC09 39 416 434 19 + 10 NUM_STR_DEC10 40 435 462 28 + 10 NUM_STR_SDEC01 41 463 465 3 + 10 NUM_STR_SDEC02 42 466 469 4 + 10 NUM_STR_SDEC03 43 470 474 5 + 10 NUM_STR_SDEC04 44 475 482 8 + 10 NUM_STR_SDEC05 45 483 491 9 + 10 NUM_STR_SDEC06 46 492 501 10 + 10 NUM_STR_SDEC07 47 502 518 17 + 10 NUM_STR_SDEC08 48 519 536 18 + 10 NUM_STR_SDEC09 49 537 555 19 + 10 NUM_STR_SDEC10 50 556 583 28 + 10 NUM_STR_EDEC03 51 584 589 6 + 10 NUM_STR_EDEC04 52 590 598 9 + 10 NUM_STR_EDEC05 53 599 608 10 + 10 NUM_STR_EDEC06 54 609 619 11 + 10 NUM_BIN_INT01 55 620 621 2 + 10 NUM_BIN_INT02 56 622 623 2 + 10 NUM_BIN_INT03 57 624 625 2 + 10 NUM_BIN_INT04 58 626 627 2 + 10 NUM_BIN_INT05 59 628 631 4 + 10 NUM_BIN_INT06 60 632 635 4 + 10 NUM_BIN_INT07 61 636 639 4 + 10 NUM_BIN_INT08 62 640 647 8 + 10 NUM_BIN_INT09 63 648 655 8 + 10 NUM_BIN_INT10 64 656 663 8 + 10 NUM_BIN_INT11 65 664 671 8 + 10 NUM_BIN_INT12 66 672 680 9 + 10 NUM_BIN_INT13 67 681 689 9 + 10 NUM_BIN_INT14 68 690 705 16 + 10 NUM_SBIN_SINT01 69 706 707 2 + 10 NUM_SBIN_SINT02 70 708 709 2 + 10 NUM_SBIN_SINT03 71 710 711 2 + 10 NUM_SBIN_SINT04 72 712 713 2 + 10 NUM_SBIN_SINT05 73 714 717 4 + 10 NUM_SBIN_SINT06 74 718 721 4 + 10 NUM_SBIN_SINT07 75 722 725 4 + 10 NUM_SBIN_SINT08 76 726 733 8 + 10 NUM_SBIN_SINT09 77 734 741 8 + 10 NUM_SBIN_SINT10 78 742 749 8 + 10 NUM_SBIN_SINT11 79 750 757 8 + 10 NUM_SBIN_SINT12 80 758 766 9 + 10 NUM_SBIN_SINT13 81 767 775 9 + 10 NUM_SBIN_SINT14 82 776 791 16 + 10 NUM_BIN_DEC01 83 792 793 2 + 10 NUM_BIN_DEC02 84 794 795 2 + 10 NUM_BIN_DEC03 85 796 799 4 + 10 NUM_BIN_DEC04 86 800 803 4 + 10 NUM_BIN_DEC05 87 804 807 4 + 10 NUM_BIN_DEC06 88 808 815 8 + 10 NUM_BIN_DEC07 89 816 823 8 + 10 NUM_BIN_DEC08 90 824 831 8 + 10 NUM_BIN_DEC09 91 832 840 9 + 10 NUM_BIN_DEC10 92 841 852 12 + 10 NUM_SBIN_DEC01 93 853 854 2 + 10 NUM_SBIN_DEC02 94 855 856 2 + 10 NUM_SBIN_DEC03 95 857 860 4 + 10 NUM_SBIN_DEC04 96 861 864 4 + 10 NUM_SBIN_DEC05 97 865 868 4 + 10 NUM_SBIN_DEC06 98 869 876 8 + 10 NUM_SBIN_DEC07 99 877 884 8 + 10 NUM_SBIN_DEC08 100 885 892 8 + 10 NUM_SBIN_DEC09 101 893 901 9 + 10 NUM_SBIN_DEC10 102 902 913 12 + 10 NUM_BCD_INT01 103 914 914 1 + 10 NUM_BCD_INT02 104 915 916 2 + 10 NUM_BCD_INT03 105 917 918 2 + 10 NUM_BCD_INT04 106 919 921 3 + 10 NUM_BCD_INT05 107 922 924 3 + 10 NUM_BCD_INT06 108 925 929 5 + 10 NUM_BCD_INT07 109 930 934 5 + 10 NUM_BCD_INT08 110 935 940 6 + 10 NUM_BCD_INT09 111 941 946 6 + 10 NUM_BCD_INT10 112 947 955 9 + 10 NUM_BCD_INT11 113 956 965 10 + 10 NUM_BCD_INT12 114 966 975 10 + 10 NUM_BCD_INT13 115 976 986 11 + 10 NUM_BCD_INT14 116 987 1005 19 + 10 NUM_BCD_SINT01 117 1006 1006 1 + 10 NUM_BCD_SINT02 118 1007 1008 2 + 10 NUM_BCD_SINT03 119 1009 1010 2 + 10 NUM_BCD_SINT04 120 1011 1013 3 + 10 NUM_BCD_SINT05 121 1014 1016 3 + 10 NUM_BCD_SINT06 122 1017 1021 5 + 10 NUM_BCD_SINT07 123 1022 1026 5 + 10 NUM_BCD_SINT08 124 1027 1032 6 + 10 NUM_BCD_SINT09 125 1033 1038 6 + 10 NUM_BCD_SINT10 126 1039 1047 9 + 10 NUM_BCD_SINT11 127 1048 1057 10 + 10 NUM_BCD_SINT12 128 1058 1067 10 + 10 NUM_BCD_SINT13 129 1068 1078 11 + 10 NUM_BCD_SINT14 130 1079 1097 19 + 10 NUM_BCD_DEC01 131 1098 1099 2 + 10 NUM_BCD_DEC02 132 1100 1102 3 + 10 NUM_BCD_DEC03 133 1103 1105 3 + 10 NUM_BCD_DEC04 134 1106 1110 5 + 10 NUM_BCD_DEC05 135 1111 1115 5 + 10 NUM_BCD_DEC06 136 1116 1121 6 + 10 NUM_BCD_DEC07 137 1122 1130 9 + 10 NUM_BCD_DEC08 138 1131 1140 10 + 10 NUM_BCD_DEC09 139 1141 1150 10 + 10 NUM_BCD_DEC10 140 1151 1165 15 + 10 NUM_BCD_SDEC01 141 1166 1167 2 + 10 NUM_BCD_SDEC02 142 1168 1170 3 + 10 NUM_BCD_SDEC03 143 1171 1173 3 + 10 NUM_BCD_SDEC04 144 1174 1178 5 + 10 NUM_BCD_SDEC05 145 1179 1183 5 + 10 NUM_BCD_SDEC06 146 1184 1189 6 + 10 NUM_BCD_SDEC07 147 1190 1198 9 + 10 NUM_BCD_SDEC08 148 1199 1208 10 + 10 NUM_BCD_SDEC09 149 1209 1218 10 + 10 NUM_BCD_SDEC10 150 1219 1233 15 + 10 NUM_SL_STR_INT01 151 1234 1243 10 + 10 NUM_SL_STR_DEC01 152 1244 1248 5 + 10 NUM_ST_STR_INT01 153 1249 1258 10 + 10 NUM_ST_STR_DEC01 154 1259 1263 5 + 10 NUM_SLI_STR_DEC01 155 1264 1270 7 + 10 NUM_STI_STR_DEC01 156 1271 1277 7 + 10 NUM_SLI_DEBUG 157 1278 1284 7 + 10 NUM_STI_DEBUG 158 1285 1291 7 + 10 FLOAT_01 159 1292 1295 4 + 10 DOUBLE_01 160 1296 1303 8 + 10 COMMON_8_BIN 161 1304 1307 4 + 10 COMMON_S3_BIN 162 1308 1309 2 + 10 COMMON_S94COMP 163 1310 1311 2 + 10 COMMON_S8_BIN 164 1312 1315 4 + 10 COMMON_DDC97_BIN 165 1316 1319 4 + 10 COMMON_97COMP3 166 1320 1323 4 + 10 COMMON_915COMP3 167 1324 1331 8 + 10 COMMON_S95COMP3 168 1332 1334 3 + 10 COMMON_S999DCCOMP3 169 1335 1340 6 + 10 COMMON_S913COMP3 170 1341 1347 7 + 10 COMMON_S913DCCOMP3 171 1348 1355 8 + 10 COMMON_S911DCC2 172 1356 1362 7 + 10 COMMON_S910DCC3 173 1363 1369 7 + 10 COMMON_S03DDC 174 1370 1372 3 + 10 COMMON_U03DDC 175 1373 1375 3 + 10 COMMON_UPC5DDC 176 1376 1378 3 + 10 COMMON_SPC5DDC 177 1379 1381 3 + 10 COMMON_UPI5DDC 178 1382 1384 3 + 10 COMMON_SPI5DDC 179 1385 1387 3 + 10 COMMON_UPC5DISP 180 1388 1392 5 + 10 COMMON_UPI5DISP 181 1393 1397 5 + 10 COMMON_UPC1BIN 182 1398 1399 2 + 10 COMMON_UPI1BIN 183 1400 1401 2 + 10 COMMON_UPC3BIN 184 1402 1403 2 + 10 COMMON_UPI3BIN 185 1404 1405 2 + 10 COMMON_UPC5BIN 186 1406 1409 4 + 10 COMMON_UPI5BIN 187 1410 1413 4 + 10 COMMON_UPC10BIN 188 1414 1421 8 + 10 COMMON_UPI10BIN 189 1422 1429 8 + 10 EX_NUM_INT01 190 1430 1438 9 + 10 EX_NUM_INT02 191 1439 1447 9 + 10 EX_NUM_INT03 192 1448 1456 9 + 10 EX_NUM_INT04 193 1457 1465 9 + 10 EX_NUM_DEC01 194 1466 1474 9 + 10 EX_NUM_DEC02 195 1475 1483 9 + 10 EX_NUM_DEC03 196 1484 1493 10 \ No newline at end of file diff --git a/data/test7_expected/test7_layout.txt b/data/test7_expected/test7_layout.txt index 953a14ca..f30829a8 100644 --- a/data/test7_expected/test7_layout.txt +++ b/data/test7_expected/test7_layout.txt @@ -1,22 +1,22 @@ -------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH - 1 RECORD 20 1 60 60 - 5 FILLER 2 1 1 1 - 5 COMPANY_PREFIX 3 2 4 3 - 5 FILLER 4 5 5 1 - 5 FILLER 5 6 6 1 - 5 COMPANY_NAME r 6 7 15 9 - 5 FILLER R 10 7 15 9 - 10 STR1 8 7 11 5 - 10 STR2 9 12 13 2 - 10 FILLER 10 14 14 1 - 5 ADDRESS r 11 16 45 30 - 5 FILLER R 14 16 45 30 - 10 STR4 13 16 25 10 - 10 FILLER 14 26 45 20 - 5 FILL_FIELD r 17 46 52 7 - 10 FILLER 16 46 50 5 - 10 FILLER 17 51 52 2 - 5 CONTACT_PERSON R 19 46 52 7 - 10 FIRST_NAME 19 46 51 6 - 5 AMOUNT 20 53 60 8 \ No newline at end of file +1 RECORD 1 1 60 60 + 5 FILLER 2 1 1 1 + 5 COMPANY_PREFIX 3 2 4 3 + 5 FILLER 4 5 5 1 + 5 FILLER 5 6 6 1 + 5 COMPANY_NAME r 6 7 15 9 + 5 FILLER R 7 7 15 9 + 10 STR1 8 7 11 5 + 10 STR2 9 12 13 2 + 10 FILLER 10 14 14 1 + 5 ADDRESS r 11 16 45 30 + 5 FILLER R 12 16 45 30 + 10 STR4 13 16 25 10 + 10 FILLER 14 26 45 20 + 5 FILL_FIELD r 15 46 52 7 + 10 FILLER 16 46 50 5 + 10 FILLER 17 51 52 2 + 5 CONTACT_PERSON R 18 46 52 7 + 10 FIRST_NAME 19 46 51 6 + 5 AMOUNT 20 53 60 8 \ No newline at end of file diff --git a/data/test7_expected/test7a_layout.txt b/data/test7_expected/test7a_layout.txt index f75cfe8a..66c94b85 100644 --- a/data/test7_expected/test7a_layout.txt +++ b/data/test7_expected/test7a_layout.txt @@ -1,22 +1,22 @@ -------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH - 1 RECORD 20 1 60 60 - 5 FILLER 2 1 1 1 - 5 COMPANY_PREFIX 3 2 4 3 - 5 FILLER 4 5 5 1 - 5 FILLER 5 6 6 1 - 5 COMPANY_NAME r 6 7 15 9 - 5 FILLER_1 R 10 7 15 9 - 10 STR1 8 7 11 5 - 10 STR2 9 12 13 2 - 10 FILLER 10 14 14 1 - 5 ADDRESS r 11 16 45 30 - 5 FILLER_2 R 14 16 45 30 - 10 STR4 13 16 25 10 - 10 FILLER 14 26 45 20 - 5 FILL_FIELD r 17 46 52 7 - 10 FILLER 16 46 50 5 - 10 FILLER 17 51 52 2 - 5 CONTACT_PERSON R 19 46 52 7 - 10 FIRST_NAME 19 46 51 6 - 5 AMOUNT 20 53 60 8 \ No newline at end of file +1 RECORD 1 1 60 60 + 5 FILLER 2 1 1 1 + 5 COMPANY_PREFIX 3 2 4 3 + 5 FILLER 4 5 5 1 + 5 FILLER 5 6 6 1 + 5 COMPANY_NAME r 6 7 15 9 + 5 FILLER_1 R 7 7 15 9 + 10 STR1 8 7 11 5 + 10 STR2 9 12 13 2 + 10 FILLER 10 14 14 1 + 5 ADDRESS r 11 16 45 30 + 5 FILLER_2 R 12 16 45 30 + 10 STR4 13 16 25 10 + 10 FILLER 14 26 45 20 + 5 FILL_FIELD r 15 46 52 7 + 10 FILLER 16 46 50 5 + 10 FILLER 17 51 52 2 + 5 CONTACT_PERSON R 18 46 52 7 + 10 FIRST_NAME 19 46 51 6 + 5 AMOUNT 20 53 60 8 \ No newline at end of file diff --git a/data/test7_expected/test7b_layout.txt b/data/test7_expected/test7b_layout.txt index 0ec9a1aa..8998c5ee 100644 --- a/data/test7_expected/test7b_layout.txt +++ b/data/test7_expected/test7b_layout.txt @@ -1,22 +1,22 @@ -------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH - 1 RECORD 20 1 60 60 - 5 FILLER_P1 2 1 1 1 - 5 COMPANY_PREFIX 3 2 4 3 - 5 FILLER_P2 4 5 5 1 - 5 FILLER_P3 5 6 6 1 - 5 COMPANY_NAME r 6 7 15 9 - 5 FILLER R 10 7 15 9 - 10 STR1 8 7 11 5 - 10 STR2 9 12 13 2 - 10 FILLER_P4 10 14 14 1 - 5 ADDRESS r 11 16 45 30 - 5 FILLER R 14 16 45 30 - 10 STR4 13 16 25 10 - 10 FILLER_P5 14 26 45 20 - 5 FILL_FIELD r 17 46 52 7 - 10 FILLER_P6 16 46 50 5 - 10 FILLER_P7 17 51 52 2 - 5 CONTACT_PERSON R 19 46 52 7 - 10 FIRST_NAME 19 46 51 6 - 5 AMOUNT 20 53 60 8 \ No newline at end of file +1 RECORD 1 1 60 60 + 5 FILLER_P1 2 1 1 1 + 5 COMPANY_PREFIX 3 2 4 3 + 5 FILLER_P2 4 5 5 1 + 5 FILLER_P3 5 6 6 1 + 5 COMPANY_NAME r 6 7 15 9 + 5 FILLER R 7 7 15 9 + 10 STR1 8 7 11 5 + 10 STR2 9 12 13 2 + 10 FILLER_P4 10 14 14 1 + 5 ADDRESS r 11 16 45 30 + 5 FILLER R 12 16 45 30 + 10 STR4 13 16 25 10 + 10 FILLER_P5 14 26 45 20 + 5 FILL_FIELD r 15 46 52 7 + 10 FILLER_P6 16 46 50 5 + 10 FILLER_P7 17 51 52 2 + 5 CONTACT_PERSON R 18 46 52 7 + 10 FIRST_NAME 19 46 51 6 + 5 AMOUNT 20 53 60 8 \ No newline at end of file diff --git a/data/test7_expected/test7c_layout.txt b/data/test7_expected/test7c_layout.txt index a28e2c3d..d3e52f2a 100644 --- a/data/test7_expected/test7c_layout.txt +++ b/data/test7_expected/test7c_layout.txt @@ -1,22 +1,22 @@ -------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH - 1 RECORD 20 1 60 60 - 5 FILLER_P1 2 1 1 1 - 5 COMPANY_PREFIX 3 2 4 3 - 5 FILLER_P2 4 5 5 1 - 5 FILLER_P3 5 6 6 1 - 5 COMPANY_NAME r 6 7 15 9 - 5 FILLER_1 R 10 7 15 9 - 10 STR1 8 7 11 5 - 10 STR2 9 12 13 2 - 10 FILLER_P4 10 14 14 1 - 5 ADDRESS r 11 16 45 30 - 5 FILLER_2 R 14 16 45 30 - 10 STR4 13 16 25 10 - 10 FILLER_P5 14 26 45 20 - 5 FILL_FIELD r 17 46 52 7 - 10 FILLER_P6 16 46 50 5 - 10 FILLER_P7 17 51 52 2 - 5 CONTACT_PERSON R 19 46 52 7 - 10 FIRST_NAME 19 46 51 6 - 5 AMOUNT 20 53 60 8 \ No newline at end of file +1 RECORD 1 1 60 60 + 5 FILLER_P1 2 1 1 1 + 5 COMPANY_PREFIX 3 2 4 3 + 5 FILLER_P2 4 5 5 1 + 5 FILLER_P3 5 6 6 1 + 5 COMPANY_NAME r 6 7 15 9 + 5 FILLER_1 R 7 7 15 9 + 10 STR1 8 7 11 5 + 10 STR2 9 12 13 2 + 10 FILLER_P4 10 14 14 1 + 5 ADDRESS r 11 16 45 30 + 5 FILLER_2 R 12 16 45 30 + 10 STR4 13 16 25 10 + 10 FILLER_P5 14 26 45 20 + 5 FILL_FIELD r 15 46 52 7 + 10 FILLER_P6 16 46 50 5 + 10 FILLER_P7 17 51 52 2 + 5 CONTACT_PERSON R 18 46 52 7 + 10 FIRST_NAME 19 46 51 6 + 5 AMOUNT 20 53 60 8 \ No newline at end of file diff --git a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/CommentsTruncationSpec.scala b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/CommentsTruncationSpec.scala index d34e3234..52ae4d58 100644 --- a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/CommentsTruncationSpec.scala +++ b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/CommentsTruncationSpec.scala @@ -17,15 +17,14 @@ package za.co.absa.cobrix.spark.cobol.source import org.scalatest.FunSuite -import org.slf4j.LoggerFactory +import org.slf4j.{Logger, LoggerFactory} import za.co.absa.cobrix.cobol.parser.CopybookParser import za.co.absa.cobrix.cobol.parser.policies.CommentPolicy -import za.co.absa.cobrix.spark.cobol.source.base.SparkTestBase +import za.co.absa.cobrix.spark.cobol.source.base.{SimpleComparisonBase, SparkTestBase} import za.co.absa.cobrix.spark.cobol.source.fixtures.BinaryFileFixture -class CommentsTruncationSpec extends FunSuite with SparkTestBase with BinaryFileFixture { - - private val logger = LoggerFactory.getLogger(this.getClass) +class CommentsTruncationSpec extends FunSuite with SparkTestBase with BinaryFileFixture with SimpleComparisonBase { + private implicit val logger: Logger = LoggerFactory.getLogger(this.getClass) val binFileContents: Array[Byte] = Array[Byte]( // Record 0 (full) @@ -86,9 +85,9 @@ class CommentsTruncationSpec extends FunSuite with SparkTestBase with BinaryFile private val expectedLayout = """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH | - | 1 GRP_01 3 1 11 11 - | 3 FIELD1 2 1 1 1 - | 3 FIELD2 3 2 11 10""" + |1 GRP_01 1 1 11 11 + | 3 FIELD1 2 1 1 1 + | 3 FIELD2 3 2 11 10""" .stripMargin.replace("\r\n", "\n") private val expectedSchema = @@ -101,7 +100,7 @@ class CommentsTruncationSpec extends FunSuite with SparkTestBase with BinaryFile val copybook = CopybookParser.parseTree(copybookWithComments) val layout = copybook.generateRecordLayoutPositions() - assert(layout == expectedLayout) + assertEqualsMultiline(layout, expectedLayout) } test("Test copybook comments are parsed with an adjusted comment positions") { @@ -109,7 +108,7 @@ class CommentsTruncationSpec extends FunSuite with SparkTestBase with BinaryFile commentPolicy = CommentPolicy(truncateComments = true, 3, 50)) val layout = copybook.generateRecordLayoutPositions() - assert(layout == expectedLayout) + assertEqualsMultiline(layout, expectedLayout) } test("Test copybook comments are parsed with no comment truncation") { @@ -117,7 +116,7 @@ class CommentsTruncationSpec extends FunSuite with SparkTestBase with BinaryFile commentPolicy = CommentPolicy(truncateComments = false)) val layout = copybook.generateRecordLayoutPositions() - assert(layout == expectedLayout) + assertEqualsMultiline(layout, expectedLayout) } test("Test copybook are processed by spark-cobol properly with the default comment positions") { @@ -132,7 +131,7 @@ class CommentsTruncationSpec extends FunSuite with SparkTestBase with BinaryFile val actualSchema = df.schema.treeString - assert(actualSchema == expectedSchema) + assertEqualsMultiline(actualSchema, expectedSchema) } } @@ -150,7 +149,7 @@ class CommentsTruncationSpec extends FunSuite with SparkTestBase with BinaryFile val actualSchema = df.schema.treeString - assert(actualSchema == expectedSchema) + assertEqualsMultiline(actualSchema, expectedSchema) } } @@ -167,7 +166,7 @@ class CommentsTruncationSpec extends FunSuite with SparkTestBase with BinaryFile val actualSchema = df.schema.treeString - assert(actualSchema == expectedSchema) + assertEqualsMultiline(actualSchema, expectedSchema) } } diff --git a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/integration/Test11CustomRDWParser.scala b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/integration/Test11CustomRDWParser.scala index fd9b9b35..93d6ef54 100644 --- a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/integration/Test11CustomRDWParser.scala +++ b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/integration/Test11CustomRDWParser.scala @@ -30,7 +30,7 @@ import scala.collection.JavaConverters._ //noinspection NameBooleanParameters class Test11CustomRDWParser extends FunSuite with SparkTestBase { - private val exampleName = "Test10(custom record header parser)" + private val exampleName = "Test11(custom record header parser)" private val inputCopybookPath = "file://../data/test11_copybook.cob" private val inputCopybookFSPath = "../data/test11_copybook.cob" private val inputDataPath = "../data/test11_data" diff --git a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test14RootLevelRedefines.scala b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test14RootLevelRedefines.scala index dbf005c4..6b77738c 100644 --- a/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test14RootLevelRedefines.scala +++ b/spark-cobol/src/test/scala/za/co/absa/cobrix/spark/cobol/source/regression/Test14RootLevelRedefines.scala @@ -60,15 +60,6 @@ class Test14RootLevelRedefines extends WordSpec with SparkTestBase with BinaryFi "Test ASCII CRLF text file " should { "with merged copybooks" in { - val expectedLayout = - """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH - | - |ENTITY1 1 1 1 - | 5 A 1 1 1 1 - |ENTITY2 1 1 1 - | 5 B 2 1 1 1 - |""".stripMargin - withTempDirectory("merged_copybook") { tempDir => val copybook1Path = Paths.get(tempDir, "copybook1.cpy") val copybook2Path = Paths.get(tempDir, "copybook2.cpy") @@ -104,11 +95,10 @@ class Test14RootLevelRedefines extends WordSpec with SparkTestBase with BinaryFi val expectedLayout = """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH | - |ROOT 1 1 1 - | 5 ENTITY1 r 2 1 1 1 - | 10 A 2 1 1 1 - | 5 ENTITY2 R 4 1 1 1 - | 10 B 4 1 1 1 + |5 ENTITY1 r 1 1 1 1 + | 10 A 2 1 1 1 + |5 ENTITY2 R 3 1 1 1 + | 10 B 4 1 1 1 |""".stripMargin withTempTextFile("merged_crlf", ".dat", StandardCharsets.UTF_8, textFileContents) { tmpFileName => val df = spark @@ -125,9 +115,11 @@ class Test14RootLevelRedefines extends WordSpec with SparkTestBase with BinaryFi val count = df.count() val actual = df.toJSON.collect().mkString("[", ",", "]") + val actualLayout = CopybookParser.parseTree(copybook2Roots).generateRecordLayoutPositions() assert(count == 4) assertEqualsMultiline(actual, expected) + assertEqualsMultiline(actualLayout, expectedLayout) } } @@ -135,10 +127,10 @@ class Test14RootLevelRedefines extends WordSpec with SparkTestBase with BinaryFi val expectedLayout = """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH | - | 5 ENTITY1 r 2 1 1 1 - | 10 A 2 1 1 1 - | 5 ENTITY2 R 4 1 1 1 - | 10 B 4 1 1 1 + |5 ENTITY1 r 1 1 1 1 + | 10 A 2 1 1 1 + |5 ENTITY2 R 3 1 1 1 + | 10 B 4 1 1 1 |""".stripMargin withTempTextFile("merged_crlf", ".dat", StandardCharsets.UTF_8, textFileContents) { tmpFileName => val df = spark @@ -168,10 +160,10 @@ class Test14RootLevelRedefines extends WordSpec with SparkTestBase with BinaryFi val expectedLayout = """-------- FIELD LEVEL/NAME --------- --ATTRIBS-- FLD START END LENGTH | - | 5 ENTITY1 r 2 1 1 1 - | 10 A 2 1 1 1 - | 5 ENTITY2 R 4 1 1 1 - | 10 B 4 1 1 1 + |5 ENTITY1 r 1 1 1 1 + | 10 A 2 1 1 1 + |5 ENTITY2 R 3 1 1 1 + | 10 B 4 1 1 1 |""".stripMargin withTempTextFile("merged_crlf", ".dat", StandardCharsets.UTF_8, textFileContents) { tmpFileName => val df = spark From 2b5a33d4a4b2e65993416c925c9d989136d397ee Mon Sep 17 00:00:00 2001 From: Ruslan Iushchenko Date: Fri, 30 Jul 2021 09:06:20 +0200 Subject: [PATCH 09/10] Bump up the minor version number since small breaking changes are introduced. --- README.md | 2 +- cobol-converters/pom.xml | 2 +- cobol-parser/pom.xml | 2 +- pom.xml | 2 +- spark-cobol/pom.xml | 2 +- version.sbt | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index fe4a7599..eae607ac 100644 --- a/README.md +++ b/README.md @@ -267,7 +267,7 @@ You can collect the uber jar of `spark-cobol` either at Then, run `spark-shell` or `spark-submit` adding the fat jar as the option. ```sh -$ spark-shell --jars spark-cobol-assembly-2.2.4-SNAPSHOT.jar +$ spark-shell --jars spark-cobol-assembly-2.3.0-SNAPSHOT.jar ``` ## Other Features diff --git a/cobol-converters/pom.xml b/cobol-converters/pom.xml index 7ce11717..312771c0 100644 --- a/cobol-converters/pom.xml +++ b/cobol-converters/pom.xml @@ -22,7 +22,7 @@ za.co.absa.cobrix cobrix_2.11 - 2.2.4-SNAPSHOT + 2.3.0-SNAPSHOT ../pom.xml diff --git a/cobol-parser/pom.xml b/cobol-parser/pom.xml index 66f7f9cf..3e1c9caf 100644 --- a/cobol-parser/pom.xml +++ b/cobol-parser/pom.xml @@ -22,7 +22,7 @@ za.co.absa.cobrix cobrix_2.11 - 2.2.4-SNAPSHOT + 2.3.0-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index 68051967..bd51c6d0 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ za.co.absa.cobrix cobrix_2.11 - 2.2.4-SNAPSHOT + 2.3.0-SNAPSHOT pom diff --git a/spark-cobol/pom.xml b/spark-cobol/pom.xml index f5cc71c2..ae3d7fbd 100644 --- a/spark-cobol/pom.xml +++ b/spark-cobol/pom.xml @@ -22,7 +22,7 @@ za.co.absa.cobrix cobrix_2.11 - 2.2.4-SNAPSHOT + 2.3.0-SNAPSHOT ../pom.xml diff --git a/version.sbt b/version.sbt index e70f9106..a6dfca80 100644 --- a/version.sbt +++ b/version.sbt @@ -1 +1 @@ -version in ThisBuild := "2.2.4-SNAPSHOT" +version in ThisBuild := "2.3.0-SNAPSHOT" From 3988fe73717279a1de6df0f9b550be80a2c7e37b Mon Sep 17 00:00:00 2001 From: Ruslan Iushchenko Date: Fri, 30 Jul 2021 14:43:52 +0200 Subject: [PATCH 10/10] README fixup --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index eae607ac..c24bd0ca 100644 --- a/README.md +++ b/README.md @@ -328,9 +328,11 @@ The space used by the headers should not be mentioned in the copybook if this op Mainframe data often contain only one root GROUP. In such cases such a GROUP can be considered something similar to XML rowtag. Cobrix allows either to collapse or to retain the GROUP. To turn this on use the following option: -``` +```scala .option("schema_retention_policy", "collapse_root") +``` or +```scala .option("schema_retention_policy", "keep_original") ```