Skip to content

Commit 986055e

Browse files
committed
#762 Add encoders for all single-byte EBCDIC code pages.
1 parent 45ef3a2 commit 986055e

32 files changed

+113
-325
lines changed

cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/encoding/codepage/CodePage037.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ package za.co.absa.cobrix.cobol.parser.encoding.codepage
2020
* EBCDIC code page 37 contains all of the standard Latin-1 characters.
2121
*
2222
*/
23-
class CodePage037 extends SingleByteCodePage(CodePage037.ebcdicToAsciiMapping) {
23+
class CodePage037 extends SingleByteCodePage(CodePage037.ebcdicToAsciiMapping, CodePage037.asciiToEbcdicMapping) {
2424
override def codePageShortName: String = "cp037"
2525
}
2626

@@ -60,4 +60,6 @@ object CodePage037 {
6060
}
6161
ebcdic2ascii
6262
}
63+
64+
lazy val asciiToEbcdicMapping: Array[Byte] = SingleByteCodePage.getReverseTable(ebcdicToAsciiMapping)
6365
}

cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/encoding/codepage/CodePage037Ext.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ package za.co.absa.cobrix.cobol.parser.encoding.codepage
2121
*
2222
* In addition to "cp037" code page it contains conversions for non-printable characters.
2323
*/
24-
class CodePage037Ext extends SingleByteCodePage(CodePage037Ext.ebcdicToAsciiMapping) {
24+
class CodePage037Ext extends SingleByteCodePage(CodePage037Ext.ebcdicToAsciiMapping, CodePage037Ext.asciiToEbcdicMapping) {
2525
override def codePageShortName: String = "cp037_extended"
2626
}
2727

@@ -53,4 +53,6 @@ object CodePage037Ext {
5353
}
5454
ebcdic2ascii
5555
}
56+
57+
lazy val asciiToEbcdicMapping: Array[Byte] = SingleByteCodePage.getReverseTable(ebcdicToAsciiMapping)
5658
}

cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/encoding/codepage/CodePage1025.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ package za.co.absa.cobrix.cobol.parser.encoding.codepage
1919
/**
2020
* EBCDIC code page with full Cyrillic-charset
2121
*/
22-
class CodePage1025 extends SingleByteCodePage(CodePage1025.ebcdicToAsciiMapping) {
22+
class CodePage1025 extends SingleByteCodePage(CodePage1025.ebcdicToAsciiMapping, CodePage1025.asciiToEbcdicMapping) {
2323
override def codePageShortName: String = "cp1025"
2424
}
2525

@@ -56,4 +56,6 @@ object CodePage1025 {
5656
}
5757
ebcdic2ascii
5858
}
59+
60+
lazy val asciiToEbcdicMapping: Array[Byte] = SingleByteCodePage.getReverseTable(ebcdicToAsciiMapping)
5961
}

cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/encoding/codepage/CodePage1047.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ package za.co.absa.cobrix.cobol.parser.encoding.codepage
2020
* EBCDIC code page 1047 contains all of the Latin-1/Open System characters.
2121
*
2222
*/
23-
class CodePage1047 extends SingleByteCodePage(CodePage1047.ebcdicToAsciiMapping) {
23+
class CodePage1047 extends SingleByteCodePage(CodePage1047.ebcdicToAsciiMapping, CodePage1047.asciiToEbcdicMapping) {
2424
override def codePageShortName: String = "cp1047"
2525
}
2626

@@ -55,4 +55,6 @@ object CodePage1047 {
5555
}
5656
ebcdic2ascii
5757
}
58+
59+
lazy val asciiToEbcdicMapping: Array[Byte] = SingleByteCodePage.getReverseTable(ebcdicToAsciiMapping)
5860
}

cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/encoding/codepage/CodePage1140.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ package za.co.absa.cobrix.cobol.parser.encoding.codepage
2323
* It corresponds to code page 037 and only differs from it in position 9F, where the euro sign € is located instead
2424
* of the international currency symbol ¤.
2525
*/
26-
class CodePage1140 extends SingleByteCodePage(CodePage1140.ebcdicToAsciiMapping) {
26+
class CodePage1140 extends SingleByteCodePage(CodePage1140.ebcdicToAsciiMapping, CodePage1140.asciiToEbcdicMapping) {
2727
override def codePageShortName: String = "cp1140"
2828
}
2929

@@ -55,4 +55,6 @@ object CodePage1140 {
5555
}
5656
ebcdic2ascii
5757
}
58+
59+
lazy val asciiToEbcdicMapping: Array[Byte] = SingleByteCodePage.getReverseTable(ebcdicToAsciiMapping)
5860
}

cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/encoding/codepage/CodePage1141.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ package za.co.absa.cobrix.cobol.parser.encoding.codepage
2323
* It corresponds to code page 273 and only differs from it in position 9F, where the euro sign € is located instead
2424
* of the international currency symbol ¤.
2525
*/
26-
class CodePage1141 extends SingleByteCodePage(CodePage1141.ebcdicToAsciiMapping) {
26+
class CodePage1141 extends SingleByteCodePage(CodePage1141.ebcdicToAsciiMapping, CodePage1141.asciiToEbcdicMapping) {
2727
override def codePageShortName: String = "cp1141"
2828
}
2929

@@ -55,4 +55,6 @@ object CodePage1141 {
5555
}
5656
ebcdic2ascii
5757
}
58+
59+
lazy val asciiToEbcdicMapping: Array[Byte] = SingleByteCodePage.getReverseTable(ebcdicToAsciiMapping)
5860
}

cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/encoding/codepage/CodePage1142.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ package za.co.absa.cobrix.cobol.parser.encoding.codepage
2222
* It corresponds to code page 277 and only differs from it in position 5A, where the euro sign € is located instead
2323
* of the international currency symbol ¤.
2424
*/
25-
class CodePage1142 extends SingleByteCodePage(CodePage1142.ebcdicToAsciiMapping) {
25+
class CodePage1142 extends SingleByteCodePage(CodePage1142.ebcdicToAsciiMapping, CodePage1142.asciiToEbcdicMapping) {
2626
override def codePageShortName: String = "cp1142"
2727
}
2828

@@ -54,4 +54,6 @@ object CodePage1142 {
5454
}
5555
ebcdic2ascii
5656
}
57+
58+
lazy val asciiToEbcdicMapping: Array[Byte] = SingleByteCodePage.getReverseTable(ebcdicToAsciiMapping)
5759
}

cobol-parser/src/main/scala/za/co/absa/cobrix/cobol/parser/encoding/codepage/CodePage1143.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ package za.co.absa.cobrix.cobol.parser.encoding.codepage
2222
* It corresponds to code page 278 and only differs from it in position 5A, where the euro sign € is located instead
2323
* of the international currency symbol ¤.
2424
*/
25-
class CodePage1143 extends SingleByteCodePage(CodePage1143.ebcdicToAsciiMapping) {
25+
class CodePage1143 extends SingleByteCodePage(CodePage1143.ebcdicToAsciiMapping, CodePage1143.asciiToEbcdicMapping) {
2626
override def codePageShortName: String = "cp1143"
2727
}
2828

@@ -54,4 +54,6 @@ object CodePage1143 {
5454
}
5555
ebcdic2ascii
5656
}
57+
58+
lazy val asciiToEbcdicMapping: Array[Byte] = SingleByteCodePage.getReverseTable(ebcdicToAsciiMapping)
5759
}

0 commit comments

Comments
 (0)