New EBCDIC encodings.

Reported by Ulrich Schwab and Calvin Buckley via Jack Woehr.

* NOTES: Mention how to enable EBCDIC encodings.
* tests/IBM-*.TXT: New files.
* tools/8bit_tab_to_h.c (main): Emit copyright header with year 2022.
* tools/Makefile: Add rules for generating ebcdic*.h.
* lib/ebcdic*.h: New files, automatically generated by tools/Makefile.
* lib/ebcdic838.h: Tweak reverse mapping manually.
* lib/ebcdic1160.h: Likewise.
* lib/converters.h: Include all ebcdic*.h.
* lib/encodings_zos.def: New file.
* lib/genaliases2.c: Include encodings_zos.def.
* lib/genflags.c: Likewise.
* Makefile.devel (lib/aliases_zos.h lib/canonical_zos.h): New rule.
(lib/flags.h, totally-clean): Update.
* lib/aliases2.h: Include aliases_zos.h.
* lib/iconv.c (USE_ZOS): New macro.
Include encodings_zos.def, canonical_zos.h.
* README, man/iconv_open.3: Document the IBM-* encodings.
* tests/Makefile.in (check-extra-yes): Also test the EBCDIC encodings.
diff --git a/.gitignore b/.gitignore
index fd7e7e8..5231cd4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -288,6 +288,7 @@
 /lib/aliases_osf1.h
 /lib/aliases_osf1_sysosf1.h
 /lib/aliases_dos.h
+/lib/aliases_zos.h
 /lib/aliases_extra.h
 /lib/canonical.h
 /lib/canonical_sysaix.h
@@ -299,6 +300,7 @@
 /lib/canonical_osf1.h
 /lib/canonical_osf1_sysosf1.h
 /lib/canonical_dos.h
+/lib/canonical_zos.h
 /lib/canonical_extra.h
 /lib/canonical_local.h
 /lib/canonical_local_sysaix.h
diff --git a/ChangeLog b/ChangeLog
index 47d2d8a..45e277d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,26 @@
+2022-01-23  Bruno Haible  <bruno@clisp.org>
+
+	New EBCDIC encodings.
+	Reported by Ulrich Schwab and Calvin Buckley via Jack Woehr.
+	* NOTES: Mention how to enable EBCDIC encodings.
+	* tests/IBM-*.TXT: New files.
+	* tools/8bit_tab_to_h.c (main): Emit copyright header with year 2022.
+	* tools/Makefile: Add rules for generating ebcdic*.h.
+	* lib/ebcdic*.h: New files, automatically generated by tools/Makefile.
+	* lib/ebcdic838.h: Tweak reverse mapping manually.
+	* lib/ebcdic1160.h: Likewise.
+	* lib/converters.h: Include all ebcdic*.h.
+	* lib/encodings_zos.def: New file.
+	* lib/genaliases2.c: Include encodings_zos.def.
+	* lib/genflags.c: Likewise.
+	* Makefile.devel (lib/aliases_zos.h lib/canonical_zos.h): New rule.
+	(lib/flags.h, totally-clean): Update.
+	* lib/aliases2.h: Include aliases_zos.h.
+	* lib/iconv.c (USE_ZOS): New macro.
+	Include encodings_zos.def, canonical_zos.h.
+	* README, man/iconv_open.3: Document the IBM-* encodings.
+	* tests/Makefile.in (check-extra-yes): Also test the EBCDIC encodings.
+
 2022-01-04  Bruno Haible  <bruno@clisp.org>
 
 	Update after gnulib changed.
diff --git a/Makefile.devel b/Makefile.devel
index 7f22e0f..3102ad2 100644
--- a/Makefile.devel
+++ b/Makefile.devel
@@ -23,6 +23,7 @@
       lib/aliases_aix.h lib/aliases_aix_sysaix.h \
       lib/aliases_osf1.h lib/aliases_osf1_sysosf1.h \
       lib/aliases_dos.h \
+      lib/aliases_zos.h \
       lib/aliases_extra.h \
       lib/flags.h lib/translit.h \
       man/iconv.1.html man/iconv.3.html man/iconv_close.3.html man/iconv_open.3.html man/iconvctl.3.html man/iconv_open_into.3.html \
@@ -190,13 +191,18 @@
 	./genaliases dos lib/aliases_dos.h lib/canonical_dos.h
 	$(RM) genaliases
 
+lib/aliases_zos.h lib/canonical_zos.h : lib/encodings_zos.def lib/genaliases2.c
+	$(CC) $(CFLAGS) -DUSE_ZOS lib/genaliases2.c -o genaliases
+	./genaliases zos lib/aliases_zos.h lib/canonical_zos.h
+	$(RM) genaliases
+
 lib/aliases_extra.h lib/canonical_extra.h : lib/encodings_extra.def lib/genaliases2.c
 	$(CC) $(CFLAGS) -DUSE_EXTRA lib/genaliases2.c -o genaliases
 	./genaliases extra lib/aliases_extra.h lib/canonical_extra.h
 	$(RM) genaliases
 
 
-lib/flags.h : lib/encodings.def lib/encodings_aix.def lib/encodings_osf1.def lib/encodings_dos.def lib/encodings_extra.def lib/converters.h lib/genflags.c
+lib/flags.h : lib/encodings.def lib/encodings_aix.def lib/encodings_osf1.def lib/encodings_dos.def lib/encodings_zos.def lib/encodings_extra.def lib/converters.h lib/genflags.c
 	$(CC) $(CFLAGS) lib/genflags.c -o genflags
 	./genflags > lib/flags.h
 	$(RM) genflags
@@ -231,11 +237,13 @@
 	rm -f lib/aliases_aix.h lib/aliases_aix_sysaix.h
 	rm -f lib/aliases_osf1.h lib/aliases_osf1_sysosf1.h
 	rm -f lib/aliases_dos.h
+	rm -f lib/aliases_zos.h
 	rm -f lib/aliases_extra.h
 	rm -f lib/canonical.h lib/canonical_sysaix.h lib/canonical_syshpux.h lib/canonical_sysosf1.h lib/canonical_syssolaris.h
 	rm -f lib/canonical_aix.h lib/canonical_aix_sysaix.h
 	rm -f lib/canonical_osf1.h lib/canonical_osf1_sysosf1.h
 	rm -f lib/canonical_dos.h
+	rm -f lib/canonical_zos.h
 	rm -f lib/canonical_extra.h
 	rm -f lib/canonical_local.h lib/canonical_local_sysaix.h lib/canonical_local_syshpux.h lib/canonical_local_sysosf1.h lib/canonical_local_syssolaris.h
 	rm -f lib/flags.h
diff --git a/NOTES b/NOTES
index eb1c0e1..b3103f5 100644
--- a/NOTES
+++ b/NOTES
@@ -328,7 +328,9 @@
    since ISO-8859-* have been adopted.
 
 Q: Support EBCDIC ?
-A: No!
+A: Available through --enable-extra-encodings.
+   Why? Because several people (Ulrich Schwab, Calvin Buckley) have shown
+   interest in these encodings, by preparing forks of GNU libiconv.
 
 Q: How do I add a new character set?
 A: 1. Explain the "why" in this file, above.
diff --git a/README b/README
index 5514a48..fea125d 100644
--- a/README
+++ b/README
@@ -72,6 +72,24 @@
         TDS565
     Platform specifics
         ATARIST, RISCOS-LATIN1
+    EBCDIC compatible (not ASCII compatible, very rarely used)
+        European languages
+            IBM-{037,273,277,278,280,282,284,285,297,423,500,870,871,875,880},
+            IBM-{905,924,1025,1026,1047,1112,1122,1123,1140,1141,1142,1143},
+            IBM-{1144,1145,1146,1147,1148,1149,1153,1154,1155,1156,1157,1158},
+            IBM-{1165,1166,4971}
+        Semitic languages
+            IBM-{424,425,12712,16804}
+        Persian
+            IBM-1097
+        Thai
+            IBM-{838,1160}
+        Laotian
+            IBM-1132
+        Vietnamese
+            IBM-{1130,1164}
+        Indic languages
+            IBM-1137
 
 It can convert from any of these encodings to any other, through Unicode
 conversion.
diff --git a/lib/aliases2.h b/lib/aliases2.h
index 1749d22..6a65c42 100644
--- a/lib/aliases2.h
+++ b/lib/aliases2.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 1999-2003, 2008 Free Software Foundation, Inc.
+ * Copyright (C) 1999-2003, 2008, 2022 Free Software Foundation, Inc.
  * This file is part of the GNU LIBICONV Library.
  *
  * The GNU LIBICONV Library is free software; you can redistribute it
@@ -34,6 +34,9 @@
 #ifdef USE_DOS
 # include "aliases_dos.h"
 #endif
+#ifdef USE_ZOS
+# include "aliases_zos.h"
+#endif
 #ifdef USE_EXTRA
 # include "aliases_extra.h"
 #endif
diff --git a/lib/converters.h b/lib/converters.h
index 900aa11..db53acd 100644
--- a/lib/converters.h
+++ b/lib/converters.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 1999-2002, 2004-2011, 2016 Free Software Foundation, Inc.
+ * Copyright (C) 1999-2002, 2004-2011, 2016, 2022 Free Software Foundation, Inc.
  * This file is part of the GNU LIBICONV Library.
  *
  * The GNU LIBICONV Library is free software; you can redistribute it
@@ -290,6 +290,62 @@
 #include "cp1125.h"
 #endif
 
+#ifdef USE_ZOS
+#include "ebcdic037.h"
+#include "ebcdic273.h"
+#include "ebcdic277.h"
+#include "ebcdic278.h"
+#include "ebcdic280.h"
+#include "ebcdic282.h"
+#include "ebcdic284.h"
+#include "ebcdic285.h"
+#include "ebcdic297.h"
+#include "ebcdic423.h"
+#include "ebcdic424.h"
+#include "ebcdic425.h"
+#include "ebcdic500.h"
+#include "ebcdic838.h"
+#include "ebcdic870.h"
+#include "ebcdic871.h"
+#include "ebcdic875.h"
+#include "ebcdic880.h"
+#include "ebcdic905.h"
+#include "ebcdic924.h"
+#include "ebcdic1025.h"
+#include "ebcdic1026.h"
+#include "ebcdic1047.h"
+#include "ebcdic1097.h"
+#include "ebcdic1112.h"
+#include "ebcdic1122.h"
+#include "ebcdic1123.h"
+#include "ebcdic1130.h"
+#include "ebcdic1132.h"
+#include "ebcdic1137.h"
+#include "ebcdic1140.h"
+#include "ebcdic1141.h"
+#include "ebcdic1142.h"
+#include "ebcdic1143.h"
+#include "ebcdic1144.h"
+#include "ebcdic1145.h"
+#include "ebcdic1146.h"
+#include "ebcdic1147.h"
+#include "ebcdic1148.h"
+#include "ebcdic1149.h"
+#include "ebcdic1153.h"
+#include "ebcdic1154.h"
+#include "ebcdic1155.h"
+#include "ebcdic1156.h"
+#include "ebcdic1157.h"
+#include "ebcdic1158.h"
+#include "ebcdic1160.h"
+#include "ebcdic1164.h"
+#include "ebcdic1165.h"
+#include "ebcdic1166.h"
+#include "ebcdic4971.h"
+#include "ebcdic12712.h"
+#include "ebcdic16804.h"
+#endif
+
 #ifdef USE_EXTRA
 #include "euc_jisx0213.h"
 #include "shift_jisx0213.h"
diff --git a/lib/ebcdic037.h b/lib/ebcdic037.h
new file mode 100644
index 0000000..2de9805
--- /dev/null
+++ b/lib/ebcdic037.h
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-037
+ */
+
+static const unsigned short ebcdic037_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5,
+  0x00e7, 0x00f1, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+  0x00ec, 0x00df, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5,
+  0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4,
+  /* 0xa0 */
+  0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae,
+  /* 0xb0 */
+  0x005e, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x005b, 0x005d, 0x00af, 0x00a8, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic037_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic037_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic037_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0xba, 0xe0, 0xbb, 0xb0, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0x4a, 0xb1, 0x9f, 0xb2, 0x6a, 0xb5, /* 0xa0-0xa7 */
+  0xbd, 0xb4, 0x9a, 0x8a, 0x5f, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0xae, 0x59, /* 0xd8-0xdf */
+  0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48, /* 0xe0-0xe7 */
+  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */
+};
+
+static int
+ebcdic037_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic037_page00[wc];
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1025.h b/lib/ebcdic1025.h
new file mode 100644
index 0000000..d6c94d4
--- /dev/null
+++ b/lib/ebcdic1025.h
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1025
+ */
+
+static const unsigned short ebcdic1025_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x0452, 0x0453, 0x0451, 0x0454, 0x0455, 0x0456,
+  0x0457, 0x0458, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x0459, 0x045a, 0x045b, 0x045c, 0x045e, 0x045f, 0x042a,
+  0x2116, 0x0402, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x0403, 0x0401, 0x0404, 0x0405, 0x0406, 0x0407,
+  0x0408, 0x0409, 0x007c, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f, 0x044e, 0x0430,
+  0x0431, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x0446, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 0x0438,
+  /* 0x90 */
+  0x0439, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+  /* 0xa0 */
+  0x044f, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
+  /* 0xb0 */
+  0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
+  0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x041d, 0x041e, 0x041f, 0x042f, 0x0420, 0x0421,
+  /* 0xe0 */
+  0x005c, 0x00a7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x0422, 0x0423, 0x0416, 0x0412, 0x042c, 0x042b,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x009f,
+};
+
+static int
+ebcdic1025_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1025_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1025_page00[176] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x4a, 0xe0, 0x5a, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x6a, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, /* 0xa0-0xa7 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, /* 0xa8-0xaf */
+};
+static const unsigned char ebcdic1025_page04[96] = {
+  0x00, 0x63, 0x59, 0x62, 0x64, 0x65, 0x66, 0x67, /* 0x00-0x07 */
+  0x68, 0x69, 0x70, 0x71, 0x72, 0x00, 0x74, 0x75, /* 0x08-0x0f */
+  0xb9, 0xba, 0xed, 0xbf, 0xbc, 0xbd, 0xec, 0xfa, /* 0x10-0x17 */
+  0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xda, 0xdb, 0xdc, /* 0x18-0x1f */
+  0xde, 0xdf, 0xea, 0xeb, 0xbe, 0xca, 0xbb, 0xfe, /* 0x20-0x27 */
+  0xfb, 0xfd, 0x57, 0xef, 0xee, 0xfc, 0xb8, 0xdd, /* 0x28-0x2f */
+  0x77, 0x78, 0xaf, 0x8d, 0x8a, 0x8b, 0xae, 0xb2, /* 0x30-0x37 */
+  0x8f, 0x90, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, /* 0x38-0x3f */
+  0xaa, 0xab, 0xac, 0xad, 0x8c, 0x8e, 0x80, 0xb6, /* 0x40-0x47 */
+  0xb3, 0xb5, 0xb7, 0xb1, 0xb0, 0xb4, 0x76, 0xa0, /* 0x48-0x4f */
+  0x00, 0x44, 0x42, 0x43, 0x45, 0x46, 0x47, 0x48, /* 0x50-0x57 */
+  0x49, 0x51, 0x52, 0x53, 0x54, 0x00, 0x55, 0x56, /* 0x58-0x5f */
+};
+
+static int
+ebcdic1025_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x00b0)
+    c = ebcdic1025_page00[wc];
+  else if (wc >= 0x0400 && wc < 0x0460)
+    c = ebcdic1025_page04[wc-0x0400];
+  else if (wc == 0x2116)
+    c = 0x58;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1026.h b/lib/ebcdic1026.h
new file mode 100644
index 0000000..b4f2dc0
--- /dev/null
+++ b/lib/ebcdic1026.h
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1026
+ */
+
+static const unsigned short ebcdic1026_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5,
+  0x007b, 0x00f1, 0x00c7, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+  0x00ec, 0x00df, 0x011e, 0x0130, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5,
+  0x005b, 0x00d1, 0x015f, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x0131, 0x003a, 0x00d6, 0x015e, 0x0027, 0x003d, 0x00dc,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x007d, 0x0060, 0x00a6, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4,
+  /* 0xa0 */
+  0x00b5, 0x00f6, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x005d, 0x0024, 0x0040, 0x00ae,
+  /* 0xb0 */
+  0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x00e7, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x007e, 0x00f2, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x011f, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x005c, 0x00f9, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x00fc, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x0023, 0x00d2, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x0022, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic1026_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1026_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1026_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0xfc, 0xec, 0xad, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0xae, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x68, 0xdc, 0xac, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x8d, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0x48, 0xbb, 0x8c, 0xcc, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0xb0, 0xb1, 0x9f, 0xb2, 0x8e, 0xb5, /* 0xa0-0xa7 */
+  0xbd, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x4a, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0x00, 0x69, 0xed, 0xee, 0xeb, 0xef, 0x7b, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0x7f, 0x00, 0x00, 0x59, /* 0xd8-0xdf */
+  0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0xc0, /* 0xe0-0xe7 */
+  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x00, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xa1, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0xdd, 0xde, 0xdb, 0xe0, 0x00, 0x00, 0xdf, /* 0xf8-0xff */
+};
+static const unsigned char ebcdic1026_page01[72] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0xd0, /* 0x18-0x1f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+  0x5b, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x6a, /* 0x58-0x5f */
+};
+
+static int
+ebcdic1026_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic1026_page00[wc];
+  else if (wc >= 0x0118 && wc < 0x0160)
+    c = ebcdic1026_page01[wc-0x0118];
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1047.h b/lib/ebcdic1047.h
new file mode 100644
index 0000000..1c9bc95
--- /dev/null
+++ b/lib/ebcdic1047.h
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1047
+ */
+
+static const unsigned short ebcdic1047_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5,
+  0x00e7, 0x00f1, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+  0x00ec, 0x00df, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5,
+  0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4,
+  /* 0xa0 */
+  0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x005b, 0x00de, 0x00ae,
+  /* 0xb0 */
+  0x00ac, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x00dd, 0x00a8, 0x00af, 0x005d, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic1047_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1047_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1047_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0xad, 0xe0, 0xbd, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0x4a, 0xb1, 0x9f, 0xb2, 0x6a, 0xb5, /* 0xa0-0xa7 */
+  0xbb, 0xb4, 0x9a, 0x8a, 0xb0, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xba, 0xae, 0x59, /* 0xd8-0xdf */
+  0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48, /* 0xe0-0xe7 */
+  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */
+};
+
+static int
+ebcdic1047_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic1047_page00[wc];
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1097.h b/lib/ebcdic1097.h
new file mode 100644
index 0000000..cb23176
--- /dev/null
+++ b/lib/ebcdic1097.h
@@ -0,0 +1,186 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1097
+ */
+
+static const unsigned short ebcdic1097_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x060c, 0x064b, 0xfe81, 0xfe82, 0xf8fa, 0xfe8d,
+  0xfe8e, 0xf8fb, 0x00a4, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c,
+  /* 0x50 */
+  0x0026, 0xfe80, 0xfe83, 0xfe84, 0xf8f9, 0xfe85, 0xfe8b, 0xfe8f,
+  0xfe91, 0xfb56, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac,
+  /* 0x60 */
+  0x002d, 0x002f, 0xfb58, 0xfe95, 0xfe97, 0xfe99, 0xfe9b, 0xfe9d,
+  0xfe9f, 0xfb7a, 0x061b, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0xfb7c, 0xfea1, 0xfea3, 0xfea5, 0xfea7, 0xfea9, 0xfeab, 0xfead,
+  0xfeaf, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0xfb8a, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0xfeb1, 0xfeb3, 0xfeb5, 0xfeb7,
+  /* 0x90 */
+  0xfeb9, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0xfebb, 0xfebd, 0xfebf, 0xfec1, 0xfec3, 0xfec5,
+  /* 0xa0 */
+  0xfec7, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0xfec9, 0xfeca, 0xfecb, 0xfecc, 0xfecd, 0xfece,
+  /* 0xb0 */
+  0xfecf, 0xfed0, 0xfed1, 0xfed3, 0xfed5, 0xfed7, 0xfb8e, 0xfedb,
+  0xfb92, 0xfb94, 0x005b, 0x005d, 0xfedd, 0xfedf, 0xfee1, 0x00d7,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0xfee3, 0xfee5, 0xfee7, 0xfeed, 0xfee9,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0xfeeb, 0xfeec, 0xfba4, 0xfbfc, 0xfbfd, 0xfbfe,
+  /* 0xe0 */
+  0x005c, 0x061f, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x0640, 0x06f0, 0x06f1, 0x06f2, 0x06f3, 0x06f4,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x06f5, 0x06f6, 0x06f7, 0x06f8, 0x06f9, 0x009f,
+};
+
+static int
+ebcdic1097_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1097_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1097_page00[216] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0xba, 0xe0, 0xbb, 0x00, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+  0x00, 0x00, 0x00, 0x8a, 0x5f, 0xca, 0x00, 0x00, /* 0xa8-0xaf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+  0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, /* 0xd0-0xd7 */
+};
+static const unsigned char ebcdic1097_page06[72] = {
+  0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+  0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0xe1, /* 0x18-0x1f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+  0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+  0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+};
+static const unsigned char ebcdic1097_page06_1[16] = {
+  0xeb, 0xec, 0xed, 0xee, 0xef, 0xfa, 0xfb, 0xfc, /* 0xf0-0xf7 */
+  0xfd, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */
+};
+static const unsigned char ebcdic1097_pagef8[8] = {
+  0x00, 0x54, 0x46, 0x49, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */
+};
+static const unsigned char ebcdic1097_pagefb[88] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x00, /* 0x50-0x57 */
+  0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+  0x00, 0x00, 0x69, 0x00, 0x70, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+  0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xb6, 0x00, /* 0x88-0x8f */
+  0x00, 0x00, 0xb8, 0x00, 0xb9, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
+  0x00, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+};
+static const unsigned char ebcdic1097_pagefb_2[8] = {
+  0x00, 0x00, 0x00, 0x00, 0xdd, 0xde, 0xdf, 0x00, /* 0xf8-0xff */
+};
+static const unsigned char ebcdic1097_pagefe[112] = {
+  0x51, 0x44, 0x45, 0x52, 0x53, 0x55, 0x00, 0x00, /* 0x80-0x87 */
+  0x00, 0x00, 0x00, 0x56, 0x00, 0x47, 0x48, 0x57, /* 0x88-0x8f */
+  0x00, 0x58, 0x00, 0x00, 0x00, 0x63, 0x00, 0x64, /* 0x90-0x97 */
+  0x00, 0x65, 0x00, 0x66, 0x00, 0x67, 0x00, 0x68, /* 0x98-0x9f */
+  0x00, 0x71, 0x00, 0x72, 0x00, 0x73, 0x00, 0x74, /* 0xa0-0xa7 */
+  0x00, 0x75, 0x00, 0x76, 0x00, 0x77, 0x00, 0x78, /* 0xa8-0xaf */
+  0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8f, /* 0xb0-0xb7 */
+  0x00, 0x90, 0x00, 0x9a, 0x00, 0x9b, 0x00, 0x9c, /* 0xb8-0xbf */
+  0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, /* 0xc0-0xc7 */
+  0x00, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, /* 0xc8-0xcf */
+  0xb1, 0xb2, 0x00, 0xb3, 0x00, 0xb4, 0x00, 0xb5, /* 0xd0-0xd7 */
+  0x00, 0x00, 0x00, 0xb7, 0x00, 0xbc, 0x00, 0xbd, /* 0xd8-0xdf */
+  0x00, 0xbe, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, /* 0xe0-0xe7 */
+  0x00, 0xcf, 0x00, 0xda, 0xdb, 0xce, 0x00, 0x00, /* 0xe8-0xef */
+};
+
+static int
+ebcdic1097_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x00d8)
+    c = ebcdic1097_page00[wc];
+  else if (wc >= 0x0608 && wc < 0x0650)
+    c = ebcdic1097_page06[wc-0x0608];
+  else if (wc >= 0x06f0 && wc < 0x0700)
+    c = ebcdic1097_page06_1[wc-0x06f0];
+  else if (wc >= 0xf8f8 && wc < 0xf900)
+    c = ebcdic1097_pagef8[wc-0xf8f8];
+  else if (wc >= 0xfb50 && wc < 0xfba8)
+    c = ebcdic1097_pagefb[wc-0xfb50];
+  else if (wc >= 0xfbf8 && wc < 0xfc00)
+    c = ebcdic1097_pagefb_2[wc-0xfbf8];
+  else if (wc >= 0xfe80 && wc < 0xfef0)
+    c = ebcdic1097_pagefe[wc-0xfe80];
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1112.h b/lib/ebcdic1112.h
new file mode 100644
index 0000000..7ee8e4a
--- /dev/null
+++ b/lib/ebcdic1112.h
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1112
+ */
+
+static const unsigned short ebcdic1112_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x0161, 0x00e4, 0x0105, 0x012f, 0x016b, 0x00e5,
+  0x0113, 0x017e, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x0119, 0x0117, 0x010d, 0x0173, 0x201e, 0x201c,
+  0x0123, 0x00df, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac,
+  /* 0x60 */
+  0x002d, 0x002f, 0x0160, 0x00c4, 0x0104, 0x012e, 0x016a, 0x00c5,
+  0x0112, 0x017d, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x00c9, 0x0118, 0x0116, 0x010c, 0x0172, 0x012a, 0x013b,
+  0x0122, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x0101, 0x017c, 0x0144, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x0156, 0x0157, 0x00e6, 0x0137, 0x00c6, 0x00a4,
+  /* 0xa0 */
+  0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x201d, 0x017a, 0x0100, 0x017b, 0x0143, 0x00ae,
+  /* 0xb0 */
+  0x005e, 0x00a3, 0x012b, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x005b, 0x005d, 0x0179, 0x0136, 0x013c, 0x00d7,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x014d, 0x00f6, 0x0146, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x0107, 0x00fc, 0x0142, 0x015b, 0x2019,
+  /* 0xe0 */
+  0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x014c, 0x00d6, 0x0145, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x0106, 0x00dc, 0x0141, 0x015a, 0x009f,
+};
+
+static int
+ebcdic1112_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1112_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1112_page00[384] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0xba, 0xe0, 0xbb, 0xb0, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0x00, 0x4a, 0xb1, 0x9f, 0x00, 0x6a, 0xb5, /* 0xa0-0xa7 */
+  0x00, 0xb4, 0x00, 0x8a, 0x5f, 0xca, 0xaf, 0x00, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0x00, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x00, 0xda, 0x00, 0x8b, 0xb7, 0xb8, 0xb9, 0x00, /* 0xb8-0xbf */
+  0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x9e, 0x00, /* 0xc0-0xc7 */
+  0x00, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+  0x00, 0x00, 0x00, 0xee, 0x00, 0xef, 0xec, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x59, /* 0xd8-0xdf */
+  0x00, 0x00, 0x00, 0x00, 0x43, 0x47, 0x9c, 0x00, /* 0xe0-0xe7 */
+  0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+  0x00, 0x00, 0x00, 0xce, 0x00, 0xcf, 0xcc, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, /* 0xf8-0xff */
+  /* 0x0100 */
+  0xac, 0x8c, 0x00, 0x00, 0x64, 0x44, 0xfb, 0xdb, /* 0x00-0x07 */
+  0x00, 0x00, 0x00, 0x00, 0x74, 0x54, 0x00, 0x00, /* 0x08-0x0f */
+  0x00, 0x00, 0x68, 0x48, 0x00, 0x00, 0x73, 0x53, /* 0x10-0x17 */
+  0x72, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+  0x00, 0x00, 0x78, 0x58, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+  0x00, 0x00, 0x76, 0xb2, 0x00, 0x00, 0x65, 0x45, /* 0x28-0x2f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbd, 0x9d, /* 0x30-0x37 */
+  0x00, 0x00, 0x00, 0x77, 0xbe, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+  0x00, 0xfd, 0xdd, 0xae, 0x8e, 0xed, 0xcd, 0x00, /* 0x40-0x47 */
+  0x00, 0x00, 0x00, 0x00, 0xeb, 0xcb, 0x00, 0x00, /* 0x48-0x4f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x9b, /* 0x50-0x57 */
+  0x00, 0x00, 0xfe, 0xde, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+  0x62, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+  0x00, 0x00, 0x66, 0x46, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+  0x00, 0x00, 0x75, 0x55, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+  0x00, 0xbc, 0xab, 0xad, 0x8d, 0x69, 0x49, 0x00, /* 0x78-0x7f */
+};
+static const unsigned char ebcdic1112_page20[8] = {
+  0x00, 0xdf, 0x00, 0x00, 0x57, 0xaa, 0x56, 0x00, /* 0x18-0x1f */
+};
+
+static int
+ebcdic1112_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0180)
+    c = ebcdic1112_page00[wc];
+  else if (wc >= 0x2018 && wc < 0x2020)
+    c = ebcdic1112_page20[wc-0x2018];
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1122.h b/lib/ebcdic1122.h
new file mode 100644
index 0000000..2b97ac3
--- /dev/null
+++ b/lib/ebcdic1122.h
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1122
+ */
+
+static const unsigned short ebcdic1122_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x007b, 0x00e0, 0x00e1, 0x00e3, 0x007d,
+  0x00e7, 0x00f1, 0x00a7, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x0060, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+  0x00ec, 0x00df, 0x00a4, 0x00c5, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x0023, 0x00c0, 0x00c1, 0x00c3, 0x0024,
+  0x00c7, 0x00d1, 0x00f6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x005c, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x00e9, 0x003a, 0x00c4, 0x00d6, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x0161, 0x00fd, 0x017e, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x005d,
+  /* 0xa0 */
+  0x00b5, 0x00fc, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x0160, 0x00dd, 0x017d, 0x00ae,
+  /* 0xb0 */
+  0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x005b, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x00e4, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00a6, 0x00f2, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x00e5, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x007e, 0x00f9, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x00c9, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x0040, 0x00d2, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic1122_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1122_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1122_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0x63, 0x67, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0xec, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0xb5, 0x71, 0x9f, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x51, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0x43, 0xbb, 0x47, 0xdc, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0xb0, 0xb1, 0x5a, 0xb2, 0xcc, 0x4a, /* 0xa0-0xa7 */
+  0xbd, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x66, 0x7b, 0x5b, 0x9e, 0x68, /* 0xc0-0xc7 */
+  0x74, 0xe0, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0x00, 0x69, 0xed, 0xee, 0xeb, 0xef, 0x7c, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0x00, 0x59, /* 0xd8-0xdf */
+  0x44, 0x45, 0x42, 0x46, 0xc0, 0xd0, 0x9c, 0x48, /* 0xe0-0xe7 */
+  0x54, 0x79, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x00, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0x6a, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0xdd, 0xde, 0xdb, 0xa1, 0x8d, 0x00, 0xdf, /* 0xf8-0xff */
+};
+static const unsigned char ebcdic1122_page01[32] = {
+  0xac, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0x8e, 0x00, /* 0x78-0x7f */
+};
+
+static int
+ebcdic1122_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic1122_page00[wc];
+  else if (wc >= 0x0160 && wc < 0x0180)
+    c = ebcdic1122_page01[wc-0x0160];
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1123.h b/lib/ebcdic1123.h
new file mode 100644
index 0000000..9f60dae
--- /dev/null
+++ b/lib/ebcdic1123.h
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1123
+ */
+
+static const unsigned short ebcdic1123_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x0452, 0x0491, 0x0451, 0x0454, 0x0455, 0x0456,
+  0x0457, 0x0458, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x0459, 0x045a, 0x045b, 0x045c, 0x045e, 0x045f, 0x042a,
+  0x2116, 0x0402, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x0490, 0x0401, 0x0404, 0x0405, 0x0406, 0x0407,
+  0x0408, 0x0409, 0x007c, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f, 0x044e, 0x0430,
+  0x0431, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x0446, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 0x0438,
+  /* 0x90 */
+  0x0439, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+  /* 0xa0 */
+  0x044f, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
+  /* 0xb0 */
+  0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
+  0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x041d, 0x041e, 0x041f, 0x042f, 0x0420, 0x0421,
+  /* 0xe0 */
+  0x005c, 0x00a7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x0422, 0x0423, 0x0416, 0x0412, 0x042c, 0x042b,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x009f,
+};
+
+static int
+ebcdic1123_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1123_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1123_page00[176] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x4a, 0xe0, 0x5a, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x6a, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, /* 0xa0-0xa7 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, /* 0xa8-0xaf */
+};
+static const unsigned char ebcdic1123_page04[152] = {
+  0x00, 0x63, 0x59, 0x00, 0x64, 0x65, 0x66, 0x67, /* 0x00-0x07 */
+  0x68, 0x69, 0x70, 0x71, 0x72, 0x00, 0x74, 0x75, /* 0x08-0x0f */
+  0xb9, 0xba, 0xed, 0xbf, 0xbc, 0xbd, 0xec, 0xfa, /* 0x10-0x17 */
+  0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xda, 0xdb, 0xdc, /* 0x18-0x1f */
+  0xde, 0xdf, 0xea, 0xeb, 0xbe, 0xca, 0xbb, 0xfe, /* 0x20-0x27 */
+  0xfb, 0xfd, 0x57, 0xef, 0xee, 0xfc, 0xb8, 0xdd, /* 0x28-0x2f */
+  0x77, 0x78, 0xaf, 0x8d, 0x8a, 0x8b, 0xae, 0xb2, /* 0x30-0x37 */
+  0x8f, 0x90, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, /* 0x38-0x3f */
+  0xaa, 0xab, 0xac, 0xad, 0x8c, 0x8e, 0x80, 0xb6, /* 0x40-0x47 */
+  0xb3, 0xb5, 0xb7, 0xb1, 0xb0, 0xb4, 0x76, 0xa0, /* 0x48-0x4f */
+  0x00, 0x44, 0x42, 0x00, 0x45, 0x46, 0x47, 0x48, /* 0x50-0x57 */
+  0x49, 0x51, 0x52, 0x53, 0x54, 0x00, 0x55, 0x56, /* 0x58-0x5f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+  0x62, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+};
+
+static int
+ebcdic1123_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x00b0)
+    c = ebcdic1123_page00[wc];
+  else if (wc >= 0x0400 && wc < 0x0498)
+    c = ebcdic1123_page04[wc-0x0400];
+  else if (wc == 0x2116)
+    c = 0x58;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1130.h b/lib/ebcdic1130.h
new file mode 100644
index 0000000..ad9c8b4
--- /dev/null
+++ b/lib/ebcdic1130.h
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1130
+ */
+
+static const unsigned short ebcdic1130_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x0103, 0x00e5,
+  0x00e7, 0x00f1, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+  0x0303, 0x00df, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x0102, 0x00c5,
+  0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x20ab, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x0111, 0x0309, 0x0300, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x0152, 0x00c6, 0x00a4,
+  /* 0xa0 */
+  0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x0110, 0x0323, 0x0301, 0x00ae,
+  /* 0xb0 */
+  0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x0153, 0x0178, 0x00d7,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x01b0, 0x00f3, 0x01a1,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x01af, 0x00d3, 0x01a0,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic1130_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1130_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1130_page00[440] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x4a, 0xe0, 0x5a, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0xbb, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0xb0, 0xb1, 0x9f, 0xb2, 0x6a, 0xb5, /* 0xa0-0xa7 */
+  0x00, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0x00, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x00, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x00, 0x63, 0x67, 0x9e, 0x68, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x00, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0x00, 0x69, 0x00, 0xee, 0xeb, 0x00, 0xec, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0x00, 0x00, 0x59, /* 0xd8-0xdf */
+  0x44, 0x45, 0x42, 0x00, 0x43, 0x47, 0x9c, 0x48, /* 0xe0-0xe7 */
+  0x54, 0x51, 0x52, 0x53, 0x00, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x00, 0x49, 0x00, 0xce, 0xcb, 0x00, 0xcc, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xf8-0xff */
+  /* 0x0100 */
+  0x00, 0x00, 0x66, 0x46, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+  0xac, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+  0x00, 0x00, 0x9d, 0xbd, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+  0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
+  0xef, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xed, /* 0xa8-0xaf */
+  0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+};
+static const unsigned char ebcdic1130_page03[40] = {
+  0x8e, 0xae, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
+  0x00, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+  0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+};
+
+static int
+ebcdic1130_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x01b8)
+    c = ebcdic1130_page00[wc];
+  else if (wc >= 0x0300 && wc < 0x0328)
+    c = ebcdic1130_page03[wc-0x0300];
+  else if (wc == 0x20ab)
+    c = 0x78;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1132.h b/lib/ebcdic1132.h
new file mode 100644
index 0000000..582be5f
--- /dev/null
+++ b/lib/ebcdic1132.h
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1132
+ */
+
+static const unsigned short ebcdic1132_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x0e81, 0x0e82, 0x0e84, 0x0e87, 0x0e88, 0x0eaa,
+  0x0e8a, 0x005b, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c,
+  /* 0x50 */
+  0x0026, 0xfffd, 0x0e8d, 0x0e94, 0x0e95, 0x0e96, 0x0e97, 0x0e99,
+  0x0e9a, 0x005d, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac,
+  /* 0x60 */
+  0x002d, 0x002f, 0x0e9b, 0x0e9c, 0x0e9d, 0x0e9e, 0x0e9f, 0x0ea1,
+  0x0ea2, 0x005e, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x20ad, 0xfffd, 0x0ea3, 0x0ea5, 0x0ea7, 0x0eab, 0x0ead, 0x0eae,
+  0xfffd, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0xfffd, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0xfffd, 0xfffd, 0x0eaf, 0x0eb0, 0x0eb2, 0x0eb3,
+  /* 0x90 */
+  0xfffd, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x0eb4, 0x0eb5, 0x0eb6, 0x0eb7, 0x0eb8, 0x0eb9,
+  /* 0xa0 */
+  0xfffd, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x0ebc, 0x0eb1, 0x0ebb, 0x0ebd, 0xfffd, 0xfffd,
+  /* 0xb0 */
+  0x0ed0, 0x0ed1, 0x0ed2, 0x0ed3, 0x0ed4, 0x0ed5, 0x0ed6, 0x0ed7,
+  0x0ed8, 0x0ed9, 0xfffd, 0x0ec0, 0x0ec1, 0x0ec2, 0x0ec3, 0x0ec4,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0xfffd, 0x0ec8, 0x0ec9, 0x0eca, 0x0ecb, 0x0ecc,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x0ecd, 0x0ec6, 0xfffd, 0x0edc, 0x0edd, 0xfffd,
+  /* 0xe0 */
+  0x005c, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x009f,
+};
+
+static int
+ebcdic1132_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  unsigned short wc = ebcdic1132_2uni[c];
+  if (wc != 0xfffd) {
+    *pwc = (ucs4_t) wc;
+    return 1;
+  }
+  return RET_ILSEQ;
+}
+
+static const unsigned char ebcdic1132_page00[176] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x49, 0xe0, 0x59, 0x69, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x6a, 0x00, /* 0xa0-0xa7 */
+  0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
+};
+static const unsigned char ebcdic1132_page0e[96] = {
+  0x00, 0x42, 0x43, 0x00, 0x44, 0x00, 0x00, 0x45, /* 0x80-0x87 */
+  0x46, 0x00, 0x48, 0x00, 0x00, 0x52, 0x00, 0x00, /* 0x88-0x8f */
+  0x00, 0x00, 0x00, 0x00, 0x53, 0x54, 0x55, 0x56, /* 0x90-0x97 */
+  0x00, 0x57, 0x58, 0x62, 0x63, 0x64, 0x65, 0x66, /* 0x98-0x9f */
+  0x00, 0x67, 0x68, 0x72, 0x00, 0x73, 0x00, 0x74, /* 0xa0-0xa7 */
+  0x00, 0x00, 0x47, 0x75, 0x00, 0x76, 0x77, 0x8c, /* 0xa8-0xaf */
+  0x8d, 0xab, 0x8e, 0x8f, 0x9a, 0x9b, 0x9c, 0x9d, /* 0xb0-0xb7 */
+  0x9e, 0x9f, 0x00, 0xac, 0xaa, 0xad, 0x00, 0x00, /* 0xb8-0xbf */
+  0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0x00, 0xdb, 0x00, /* 0xc0-0xc7 */
+  0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xda, 0x00, 0x00, /* 0xc8-0xcf */
+  0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xd0-0xd7 */
+  0xb8, 0xb9, 0x00, 0x00, 0xdd, 0xde, 0x00, 0x00, /* 0xd8-0xdf */
+};
+
+static int
+ebcdic1132_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x00b0)
+    c = ebcdic1132_page00[wc];
+  else if (wc >= 0x0e80 && wc < 0x0ee0)
+    c = ebcdic1132_page0e[wc-0x0e80];
+  else if (wc == 0x20ad)
+    c = 0x70;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1137.h b/lib/ebcdic1137.h
new file mode 100644
index 0000000..19b28a7
--- /dev/null
+++ b/lib/ebcdic1137.h
@@ -0,0 +1,146 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1137
+ */
+
+static const unsigned short ebcdic1137_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x0901, 0x0902, 0x0903, 0x0905, 0x0906, 0x0907,
+  0x0908, 0x0909, 0x090a, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c,
+  /* 0x50 */
+  0x0026, 0x090b, 0x090c, 0x090d, 0x090e, 0x090f, 0x0910, 0x0911,
+  0x0912, 0x0913, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x0914, 0x0915, 0x0916, 0x0917, 0x0918, 0x0919,
+  0x091a, 0x091b, 0x091c, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x091d, 0x091e, 0x091f, 0x0920, 0x0921, 0x0922, 0x0923, 0x0924,
+  0x0925, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x0926, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x0927, 0x0928, 0x092a, 0x092b, 0x092c, 0x092d,
+  /* 0x90 */
+  0x092e, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x092f, 0x0930, 0x0932, 0x0933, 0x0935, 0x0936,
+  /* 0xa0 */
+  0x200c, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x0937, 0x0938, 0x0939, 0x005b, 0x093c, 0x093d,
+  /* 0xb0 */
+  0x093e, 0x093f, 0x0940, 0x0941, 0x0942, 0x0943, 0x0944, 0x0945,
+  0x0946, 0x0947, 0x0948, 0x0949, 0x094a, 0x005d, 0x094b, 0x094c,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x094d, 0x0950, 0x0951, 0x0952, 0xfffd, 0xfffd,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x0960, 0x0961, 0x0962, 0x0963, 0x0964, 0x0965,
+  /* 0xe0 */
+  0x005c, 0x200d, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x0966, 0x0967, 0x0968, 0x0969, 0x096a, 0x096b,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x096c, 0x096d, 0x096e, 0x096f, 0x0970, 0x009f,
+};
+
+static int
+ebcdic1137_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  unsigned short wc = ebcdic1137_2uni[c];
+  if (wc != 0xfffd) {
+    *pwc = (ucs4_t) wc;
+    return 1;
+  }
+  return RET_ILSEQ;
+}
+
+static const unsigned char ebcdic1137_page00[168] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0xad, 0xe0, 0xbd, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+};
+static const unsigned char ebcdic1137_page09[120] = {
+  0x00, 0x42, 0x43, 0x44, 0x00, 0x45, 0x46, 0x47, /* 0x00-0x07 */
+  0x48, 0x49, 0x4a, 0x51, 0x52, 0x53, 0x54, 0x55, /* 0x08-0x0f */
+  0x56, 0x57, 0x58, 0x59, 0x62, 0x63, 0x64, 0x65, /* 0x10-0x17 */
+  0x66, 0x67, 0x68, 0x69, 0x6a, 0x70, 0x71, 0x72, /* 0x18-0x1f */
+  0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x80, 0x8a, /* 0x20-0x27 */
+  0x8b, 0x00, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x9a, /* 0x28-0x2f */
+  0x9b, 0x00, 0x9c, 0x9d, 0x00, 0x9e, 0x9f, 0xaa, /* 0x30-0x37 */
+  0xab, 0xac, 0x00, 0x00, 0xae, 0xaf, 0xb0, 0xb1, /* 0x38-0x3f */
+  0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, /* 0x40-0x47 */
+  0xba, 0xbb, 0xbc, 0xbe, 0xbf, 0xca, 0x00, 0x00, /* 0x48-0x4f */
+  0xcb, 0xcc, 0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+  0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xea, 0xeb, /* 0x60-0x67 */
+  0xec, 0xed, 0xee, 0xef, 0xfa, 0xfb, 0xfc, 0xfd, /* 0x68-0x6f */
+  0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+};
+static const unsigned char ebcdic1137_page20[8] = {
+  0x00, 0x00, 0x00, 0x00, 0xa0, 0xe1, 0x00, 0x00, /* 0x08-0x0f */
+};
+
+static int
+ebcdic1137_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x00a8)
+    c = ebcdic1137_page00[wc];
+  else if (wc >= 0x0900 && wc < 0x0978)
+    c = ebcdic1137_page09[wc-0x0900];
+  else if (wc >= 0x2008 && wc < 0x2010)
+    c = ebcdic1137_page20[wc-0x2008];
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1140.h b/lib/ebcdic1140.h
new file mode 100644
index 0000000..f10c1cf
--- /dev/null
+++ b/lib/ebcdic1140.h
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1140
+ */
+
+static const unsigned short ebcdic1140_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5,
+  0x00e7, 0x00f1, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+  0x00ec, 0x00df, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5,
+  0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x20ac,
+  /* 0xa0 */
+  0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae,
+  /* 0xb0 */
+  0x005e, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x005b, 0x005d, 0x00af, 0x00a8, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic1140_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1140_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1140_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0xba, 0xe0, 0xbb, 0xb0, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0x4a, 0xb1, 0x00, 0xb2, 0x6a, 0xb5, /* 0xa0-0xa7 */
+  0xbd, 0xb4, 0x9a, 0x8a, 0x5f, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0xae, 0x59, /* 0xd8-0xdf */
+  0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48, /* 0xe0-0xe7 */
+  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */
+};
+
+static int
+ebcdic1140_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic1140_page00[wc];
+  else if (wc == 0x20ac)
+    c = 0x9f;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1141.h b/lib/ebcdic1141.h
new file mode 100644
index 0000000..94a1bba
--- /dev/null
+++ b/lib/ebcdic1141.h
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1141
+ */
+
+static const unsigned short ebcdic1141_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x007b, 0x00e0, 0x00e1, 0x00e3, 0x00e5,
+  0x00e7, 0x00f1, 0x00c4, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+  0x00ec, 0x007e, 0x00dc, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x005b, 0x00c0, 0x00c1, 0x00c3, 0x00c5,
+  0x00c7, 0x00d1, 0x00f6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x0060, 0x003a, 0x0023, 0x00a7, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x20ac,
+  /* 0xa0 */
+  0x00b5, 0x00df, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae,
+  /* 0xb0 */
+  0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x0040, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x00e4, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00a6, 0x00f2, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x00fc, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x007d, 0x00f9, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x00d6, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x005c, 0x00d2, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x005d, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic1141_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1141_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1141_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0xb5, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x63, 0xec, 0xfc, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0x43, 0xbb, 0xdc, 0x59, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0xb0, 0xb1, 0x00, 0xb2, 0xcc, 0x7c, /* 0xa0-0xa7 */
+  0xbd, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x66, 0x4a, 0x67, 0x9e, 0x68, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xe0, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0x5a, 0xad, 0xae, 0xa1, /* 0xd8-0xdf */
+  0x44, 0x45, 0x42, 0x46, 0xc0, 0x47, 0x9c, 0x48, /* 0xe0-0xe7 */
+  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0x6a, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0xdd, 0xde, 0xdb, 0xd0, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */
+};
+
+static int
+ebcdic1141_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic1141_page00[wc];
+  else if (wc == 0x20ac)
+    c = 0x9f;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1142.h b/lib/ebcdic1142.h
new file mode 100644
index 0000000..4676d66
--- /dev/null
+++ b/lib/ebcdic1142.h
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1142
+ */
+
+static const unsigned short ebcdic1142_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x007d,
+  0x00e7, 0x00f1, 0x0023, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+  0x00ec, 0x00df, 0x20ac, 0x00c5, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x0024,
+  0x00c7, 0x00d1, 0x00f8, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00a6, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x0060, 0x003a, 0x00c6, 0x00d8, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x0040, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x007b, 0x00b8, 0x005b, 0x005d,
+  /* 0xa0 */
+  0x00b5, 0x00fc, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae,
+  /* 0xb0 */
+  0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x00e6, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x00e5, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x007e, 0x00f9, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic1142_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1142_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1142_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0x4a, 0x67, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x80, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x9e, 0xe0, 0x9f, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0x9c, 0xbb, 0x47, 0xdc, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0xb0, 0xb1, 0x00, 0xb2, 0x70, 0xb5, /* 0xa0-0xa7 */
+  0xbd, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x66, 0x63, 0x5b, 0x7b, 0x68, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf, /* 0xd0-0xd7 */
+  0x7c, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0xae, 0x59, /* 0xd8-0xdf */
+  0x44, 0x45, 0x42, 0x46, 0x43, 0xd0, 0xc0, 0x48, /* 0xe0-0xe7 */
+  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1, /* 0xf0-0xf7 */
+  0x6a, 0xdd, 0xde, 0xdb, 0xa1, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */
+};
+
+static int
+ebcdic1142_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic1142_page00[wc];
+  else if (wc == 0x20ac)
+    c = 0x5a;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1143.h b/lib/ebcdic1143.h
new file mode 100644
index 0000000..e602466
--- /dev/null
+++ b/lib/ebcdic1143.h
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1143
+ */
+
+static const unsigned short ebcdic1143_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x007b, 0x00e0, 0x00e1, 0x00e3, 0x007d,
+  0x00e7, 0x00f1, 0x00a7, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x0060, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+  0x00ec, 0x00df, 0x20ac, 0x00c5, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x0023, 0x00c0, 0x00c1, 0x00c3, 0x0024,
+  0x00c7, 0x00d1, 0x00f6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x005c, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x00e9, 0x003a, 0x00c4, 0x00d6, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x005d,
+  /* 0xa0 */
+  0x00b5, 0x00fc, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae,
+  /* 0xb0 */
+  0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x005b, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x00e4, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00a6, 0x00f2, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x00e5, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x007e, 0x00f9, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x00c9, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x0040, 0x00d2, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic1143_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1143_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1143_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0x63, 0x67, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0xec, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0xb5, 0x71, 0x9f, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x51, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0x43, 0xbb, 0x47, 0xdc, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0xb0, 0xb1, 0x00, 0xb2, 0xcc, 0x4a, /* 0xa0-0xa7 */
+  0xbd, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x66, 0x7b, 0x5b, 0x9e, 0x68, /* 0xc0-0xc7 */
+  0x74, 0xe0, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0x7c, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0xae, 0x59, /* 0xd8-0xdf */
+  0x44, 0x45, 0x42, 0x46, 0xc0, 0xd0, 0x9c, 0x48, /* 0xe0-0xe7 */
+  0x54, 0x79, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0x6a, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0xdd, 0xde, 0xdb, 0xa1, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */
+};
+
+static int
+ebcdic1143_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic1143_page00[wc];
+  else if (wc == 0x20ac)
+    c = 0x5a;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1144.h b/lib/ebcdic1144.h
new file mode 100644
index 0000000..5d63eb8
--- /dev/null
+++ b/lib/ebcdic1144.h
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1144
+ */
+
+static const unsigned short ebcdic1144_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x007b, 0x00e1, 0x00e3, 0x00e5,
+  0x005c, 0x00f1, 0x00b0, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x005d, 0x00ea, 0x00eb, 0x007d, 0x00ed, 0x00ee, 0x00ef,
+  0x007e, 0x00df, 0x00e9, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5,
+  0x00c7, 0x00d1, 0x00f2, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x00f9, 0x003a, 0x00a3, 0x00a7, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1,
+  /* 0x90 */
+  0x005b, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x20ac,
+  /* 0xa0 */
+  0x00b5, 0x00ec, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae,
+  /* 0xb0 */
+  0x00a2, 0x0023, 0x00a5, 0x00b7, 0x00a9, 0x0040, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x00e0, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00a6, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x00e8, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x0060, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x00e7, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic1144_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1144_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1144_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0xb1, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0xb5, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x90, 0x48, 0x51, 0x5f, 0x6d, /* 0x58-0x5f */
+  0xdd, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0x44, 0xbb, 0x54, 0x58, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0xb0, 0x7b, 0x00, 0xb2, 0xcd, 0x7c, /* 0xa0-0xa7 */
+  0xbd, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x4a, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0xae, 0x59, /* 0xd8-0xdf */
+  0xc0, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0xe0, /* 0xe0-0xe7 */
+  0xd0, 0x5a, 0x52, 0x53, 0xa1, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x8c, 0x49, 0x6a, 0xce, 0xcb, 0xcf, 0xcc, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0x79, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */
+};
+
+static int
+ebcdic1144_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic1144_page00[wc];
+  else if (wc == 0x20ac)
+    c = 0x9f;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1145.h b/lib/ebcdic1145.h
new file mode 100644
index 0000000..23788d5
--- /dev/null
+++ b/lib/ebcdic1145.h
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1145
+ */
+
+static const unsigned short ebcdic1145_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5,
+  0x00e7, 0x00a6, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+  0x00ec, 0x00df, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5,
+  0x00c7, 0x0023, 0x00f1, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x0060, 0x003a, 0x00d1, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x20ac,
+  /* 0xa0 */
+  0x00b5, 0x00a8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae,
+  /* 0xb0 */
+  0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x005e, 0x0021, 0x00af, 0x007e, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic1145_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1145_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1145_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0xbb, 0x7f, 0x69, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x4a, 0xe0, 0x5a, 0xba, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xbd, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0xb0, 0xb1, 0x00, 0xb2, 0x49, 0xb5, /* 0xa0-0xa7 */
+  0xa1, 0xb4, 0x9a, 0x8a, 0x5f, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0xac, 0x7b, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0xae, 0x59, /* 0xd8-0xdf */
+  0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48, /* 0xe0-0xe7 */
+  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x8c, 0x6a, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */
+};
+
+static int
+ebcdic1145_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic1145_page00[wc];
+  else if (wc == 0x20ac)
+    c = 0x9f;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1146.h b/lib/ebcdic1146.h
new file mode 100644
index 0000000..46a60b5
--- /dev/null
+++ b/lib/ebcdic1146.h
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1146
+ */
+
+static const unsigned short ebcdic1146_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5,
+  0x00e7, 0x00f1, 0x0024, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+  0x00ec, 0x00df, 0x0021, 0x00a3, 0x002a, 0x0029, 0x003b, 0x00ac,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5,
+  0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x20ac,
+  /* 0xa0 */
+  0x00b5, 0x00af, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae,
+  /* 0xb0 */
+  0x00a2, 0x005b, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x005e, 0x005d, 0x007e, 0x00a8, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic1146_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1146_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1146_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x5a, 0x7f, 0x7b, 0x4a, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0xb1, 0xe0, 0xbb, 0xba, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xbc, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0xb0, 0x5b, 0x00, 0xb2, 0x6a, 0xb5, /* 0xa0-0xa7 */
+  0xbd, 0xb4, 0x9a, 0x8a, 0x5f, 0xca, 0xaf, 0xa1, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0xae, 0x59, /* 0xd8-0xdf */
+  0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48, /* 0xe0-0xe7 */
+  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */
+};
+
+static int
+ebcdic1146_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic1146_page00[wc];
+  else if (wc == 0x20ac)
+    c = 0x9f;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1147.h b/lib/ebcdic1147.h
new file mode 100644
index 0000000..34e3645
--- /dev/null
+++ b/lib/ebcdic1147.h
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1147
+ */
+
+static const unsigned short ebcdic1147_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x0040, 0x00e1, 0x00e3, 0x00e5,
+  0x005c, 0x00f1, 0x00b0, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x007b, 0x00ea, 0x00eb, 0x007d, 0x00ed, 0x00ee, 0x00ef,
+  0x00ec, 0x00df, 0x00a7, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5,
+  0x00c7, 0x00d1, 0x00f9, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x00b5, 0x003a, 0x00a3, 0x00e0, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1,
+  /* 0x90 */
+  0x005b, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x20ac,
+  /* 0xa0 */
+  0x0060, 0x00a8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae,
+  /* 0xb0 */
+  0x00a2, 0x0023, 0x00a5, 0x00b7, 0x00a9, 0x005d, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x007e, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x00e9, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x00e8, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00a6, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x00e7, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic1147_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1147_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1147_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0xb1, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x44, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x90, 0x48, 0xb5, 0x5f, 0x6d, /* 0x58-0x5f */
+  0xa0, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0x51, 0xbb, 0x54, 0xbd, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0xb0, 0x7b, 0x00, 0xb2, 0xdd, 0x5a, /* 0xa0-0xa7 */
+  0xa1, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x4a, 0x8f, 0xea, 0xfa, 0xbe, 0x79, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0xae, 0x59, /* 0xd8-0xdf */
+  0x7c, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0xe0, /* 0xe0-0xe7 */
+  0xd0, 0xc0, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0x6a, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */
+};
+
+static int
+ebcdic1147_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic1147_page00[wc];
+  else if (wc == 0x20ac)
+    c = 0x9f;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1148.h b/lib/ebcdic1148.h
new file mode 100644
index 0000000..fc51e27
--- /dev/null
+++ b/lib/ebcdic1148.h
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1148
+ */
+
+static const unsigned short ebcdic1148_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5,
+  0x00e7, 0x00f1, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+  0x00ec, 0x00df, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5,
+  0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x20ac,
+  /* 0xa0 */
+  0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae,
+  /* 0xb0 */
+  0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic1148_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1148_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1148_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x4a, 0xe0, 0x5a, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0xbb, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0xb0, 0xb1, 0x00, 0xb2, 0x6a, 0xb5, /* 0xa0-0xa7 */
+  0xbd, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0xae, 0x59, /* 0xd8-0xdf */
+  0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48, /* 0xe0-0xe7 */
+  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */
+};
+
+static int
+ebcdic1148_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic1148_page00[wc];
+  else if (wc == 0x20ac)
+    c = 0x9f;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1149.h b/lib/ebcdic1149.h
new file mode 100644
index 0000000..027844e
--- /dev/null
+++ b/lib/ebcdic1149.h
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1149
+ */
+
+static const unsigned short ebcdic1149_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5,
+  0x00e7, 0x00f1, 0x00de, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+  0x00ec, 0x00df, 0x00c6, 0x0024, 0x002a, 0x0029, 0x003b, 0x00d6,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5,
+  0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x00f0, 0x003a, 0x0023, 0x00d0, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x0060, 0x00fd, 0x007b, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x007d, 0x00b8, 0x005d, 0x20ac,
+  /* 0xa0 */
+  0x00b5, 0x00f6, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x0040, 0x00dd, 0x005b, 0x00ae,
+  /* 0xb0 */
+  0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x005c, 0x00d7,
+  /* 0xc0 */
+  0x00fe, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x007e, 0x00f2, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x00e6, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x00b4, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x005e, 0x00d2, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic1149_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1149_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1149_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0xac, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0xae, 0xbe, 0x9e, 0xec, 0x6d, /* 0x58-0x5f */
+  0x8c, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0x8e, 0xbb, 0x9c, 0xcc, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0xb0, 0xb1, 0x00, 0xb2, 0x6a, 0xb5, /* 0xa0-0xa7 */
+  0xbd, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0xe0, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x5a, 0x68, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0x7c, 0x69, 0xed, 0xee, 0xeb, 0xef, 0x5f, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0x4a, 0x59, /* 0xd8-0xdf */
+  0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0xd0, 0x48, /* 0xe0-0xe7 */
+  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x79, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xa1, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0xc0, 0xdf, /* 0xf8-0xff */
+};
+
+static int
+ebcdic1149_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic1149_page00[wc];
+  else if (wc == 0x20ac)
+    c = 0x9f;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1153.h b/lib/ebcdic1153.h
new file mode 100644
index 0000000..09bdd6d
--- /dev/null
+++ b/lib/ebcdic1153.h
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1153
+ */
+
+static const unsigned short ebcdic1153_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x0163, 0x00e1, 0x0103, 0x010d,
+  0x00e7, 0x0107, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x0119, 0x00eb, 0x016f, 0x00ed, 0x00ee, 0x013e,
+  0x013a, 0x00df, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x02dd, 0x00c1, 0x0102, 0x010c,
+  0x00c7, 0x0106, 0x007c, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x02c7, 0x00c9, 0x0118, 0x00cb, 0x016e, 0x00cd, 0x00ce, 0x013d,
+  0x0139, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x02d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x015b, 0x0148, 0x0111, 0x00fd, 0x0159, 0x015f,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x0142, 0x0144, 0x0161, 0x00b8, 0x02db, 0x20ac,
+  /* 0xa0 */
+  0x0105, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x015a, 0x0147, 0x0110, 0x00dd, 0x0158, 0x015e,
+  /* 0xb0 */
+  0x02d9, 0x0104, 0x017c, 0x0162, 0x017b, 0x00a7, 0x017e, 0x017a,
+  0x017d, 0x0179, 0x0141, 0x0143, 0x0160, 0x00a8, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x0155, 0x00f3, 0x0151,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x011a, 0x0171, 0x00fc, 0x0165, 0x00fa, 0x011b,
+  /* 0xe0 */
+  0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x010f, 0x00d4, 0x00d6, 0x0154, 0x00d3, 0x0150,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x010e, 0x0170, 0x00dc, 0x0164, 0x00da, 0x009f,
+};
+
+static int
+ebcdic1153_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1153_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1153_page00[384] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x4a, 0xe0, 0x5a, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x6a, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, /* 0xa0-0xa7 */
+  0xbd, 0x00, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, /* 0xa8-0xaf */
+  0x90, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+  0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+  0x00, 0x65, 0x62, 0x00, 0x63, 0x00, 0x00, 0x68, /* 0xc0-0xc7 */
+  0x00, 0x71, 0x00, 0x73, 0x00, 0x75, 0x76, 0x00, /* 0xc8-0xcf */
+  0x00, 0x00, 0x00, 0xee, 0xeb, 0x00, 0xec, 0xbf, /* 0xd0-0xd7 */
+  0x00, 0x00, 0xfe, 0x00, 0xfc, 0xad, 0x00, 0x59, /* 0xd8-0xdf */
+  0x00, 0x45, 0x42, 0x00, 0x43, 0x00, 0x00, 0x48, /* 0xe0-0xe7 */
+  0x00, 0x51, 0x00, 0x53, 0x00, 0x55, 0x56, 0x00, /* 0xe8-0xef */
+  0x00, 0x00, 0x00, 0xce, 0xcb, 0x00, 0xcc, 0xe1, /* 0xf0-0xf7 */
+  0x00, 0x00, 0xde, 0x00, 0xdc, 0x8d, 0x00, 0x00, /* 0xf8-0xff */
+  /* 0x0100 */
+  0x00, 0x00, 0x66, 0x46, 0xb1, 0xa0, 0x69, 0x49, /* 0x00-0x07 */
+  0x00, 0x00, 0x00, 0x00, 0x67, 0x47, 0xfa, 0xea, /* 0x08-0x0f */
+  0xac, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+  0x72, 0x52, 0xda, 0xdf, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+  0x00, 0x78, 0x58, 0x00, 0x00, 0x77, 0x57, 0x00, /* 0x38-0x3f */
+  0x00, 0xba, 0x9a, 0xbb, 0x9b, 0x00, 0x00, 0xab, /* 0x40-0x47 */
+  0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+  0xef, 0xcf, 0x00, 0x00, 0xed, 0xcd, 0x00, 0x00, /* 0x50-0x57 */
+  0xae, 0x8e, 0xaa, 0x8a, 0x00, 0x00, 0xaf, 0x8f, /* 0x58-0x5f */
+  0xbc, 0x9c, 0xb3, 0x44, 0xfd, 0xdd, 0x00, 0x00, /* 0x60-0x67 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x54, /* 0x68-0x6f */
+  0xfb, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+  0x00, 0xb9, 0xb7, 0xb4, 0xb2, 0xb8, 0xb6, 0x00, /* 0x78-0x7f */
+};
+static const unsigned char ebcdic1153_page02[32] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, /* 0xc0-0xc7 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+  0x80, 0xb0, 0x00, 0x9e, 0x00, 0x64, 0x00, 0x00, /* 0xd8-0xdf */
+};
+
+static int
+ebcdic1153_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0180)
+    c = ebcdic1153_page00[wc];
+  else if (wc >= 0x02c0 && wc < 0x02e0)
+    c = ebcdic1153_page02[wc-0x02c0];
+  else if (wc == 0x20ac)
+    c = 0x9f;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1154.h b/lib/ebcdic1154.h
new file mode 100644
index 0000000..3d7c866
--- /dev/null
+++ b/lib/ebcdic1154.h
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1154
+ */
+
+static const unsigned short ebcdic1154_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x0452, 0x0453, 0x0451, 0x0454, 0x0455, 0x0456,
+  0x0457, 0x0458, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x0459, 0x045a, 0x045b, 0x045c, 0x045e, 0x045f, 0x042a,
+  0x2116, 0x0402, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x0403, 0x0401, 0x0404, 0x0405, 0x0406, 0x0407,
+  0x0408, 0x0409, 0x007c, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f, 0x044e, 0x0430,
+  0x0431, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x0446, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 0x0438,
+  /* 0x90 */
+  0x0439, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+  /* 0xa0 */
+  0x044f, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
+  /* 0xb0 */
+  0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
+  0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x041d, 0x041e, 0x041f, 0x042f, 0x0420, 0x0421,
+  /* 0xe0 */
+  0x005c, 0x20ac, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x0422, 0x0423, 0x0416, 0x0412, 0x042c, 0x042b,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x009f,
+};
+
+static int
+ebcdic1154_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1154_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1154_page00[176] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x4a, 0xe0, 0x5a, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x6a, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, /* 0xa8-0xaf */
+};
+static const unsigned char ebcdic1154_page04[96] = {
+  0x00, 0x63, 0x59, 0x62, 0x64, 0x65, 0x66, 0x67, /* 0x00-0x07 */
+  0x68, 0x69, 0x70, 0x71, 0x72, 0x00, 0x74, 0x75, /* 0x08-0x0f */
+  0xb9, 0xba, 0xed, 0xbf, 0xbc, 0xbd, 0xec, 0xfa, /* 0x10-0x17 */
+  0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xda, 0xdb, 0xdc, /* 0x18-0x1f */
+  0xde, 0xdf, 0xea, 0xeb, 0xbe, 0xca, 0xbb, 0xfe, /* 0x20-0x27 */
+  0xfb, 0xfd, 0x57, 0xef, 0xee, 0xfc, 0xb8, 0xdd, /* 0x28-0x2f */
+  0x77, 0x78, 0xaf, 0x8d, 0x8a, 0x8b, 0xae, 0xb2, /* 0x30-0x37 */
+  0x8f, 0x90, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, /* 0x38-0x3f */
+  0xaa, 0xab, 0xac, 0xad, 0x8c, 0x8e, 0x80, 0xb6, /* 0x40-0x47 */
+  0xb3, 0xb5, 0xb7, 0xb1, 0xb0, 0xb4, 0x76, 0xa0, /* 0x48-0x4f */
+  0x00, 0x44, 0x42, 0x43, 0x45, 0x46, 0x47, 0x48, /* 0x50-0x57 */
+  0x49, 0x51, 0x52, 0x53, 0x54, 0x00, 0x55, 0x56, /* 0x58-0x5f */
+};
+
+static int
+ebcdic1154_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x00b0)
+    c = ebcdic1154_page00[wc];
+  else if (wc >= 0x0400 && wc < 0x0460)
+    c = ebcdic1154_page04[wc-0x0400];
+  else if (wc == 0x20ac)
+    c = 0xe1;
+  else if (wc == 0x2116)
+    c = 0x58;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1155.h b/lib/ebcdic1155.h
new file mode 100644
index 0000000..acf874a
--- /dev/null
+++ b/lib/ebcdic1155.h
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1155
+ */
+
+static const unsigned short ebcdic1155_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5,
+  0x007b, 0x00f1, 0x00c7, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+  0x00ec, 0x00df, 0x011e, 0x0130, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5,
+  0x005b, 0x00d1, 0x015f, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x0131, 0x003a, 0x00d6, 0x015e, 0x0027, 0x003d, 0x00dc,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x007d, 0x0060, 0x00a6, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x20ac,
+  /* 0xa0 */
+  0x00b5, 0x00f6, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x005d, 0x0024, 0x0040, 0x00ae,
+  /* 0xb0 */
+  0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x00e7, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x007e, 0x00f2, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x011f, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x005c, 0x00f9, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x00fc, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x0023, 0x00d2, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x0022, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic1155_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1155_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1155_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0xfc, 0xec, 0xad, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0xae, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x68, 0xdc, 0xac, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x8d, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0x48, 0xbb, 0x8c, 0xcc, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0xb0, 0xb1, 0x00, 0xb2, 0x8e, 0xb5, /* 0xa0-0xa7 */
+  0xbd, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x4a, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0x00, 0x69, 0xed, 0xee, 0xeb, 0xef, 0x7b, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0x7f, 0x00, 0x00, 0x59, /* 0xd8-0xdf */
+  0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0xc0, /* 0xe0-0xe7 */
+  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x00, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xa1, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0xdd, 0xde, 0xdb, 0xe0, 0x00, 0x00, 0xdf, /* 0xf8-0xff */
+};
+static const unsigned char ebcdic1155_page01[72] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0xd0, /* 0x18-0x1f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+  0x5b, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x6a, /* 0x58-0x5f */
+};
+
+static int
+ebcdic1155_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic1155_page00[wc];
+  else if (wc >= 0x0118 && wc < 0x0160)
+    c = ebcdic1155_page01[wc-0x0118];
+  else if (wc == 0x20ac)
+    c = 0x9f;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1156.h b/lib/ebcdic1156.h
new file mode 100644
index 0000000..78c128a
--- /dev/null
+++ b/lib/ebcdic1156.h
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1156
+ */
+
+static const unsigned short ebcdic1156_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x0161, 0x00e4, 0x0105, 0x012f, 0x016b, 0x00e5,
+  0x0113, 0x017e, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x0119, 0x0117, 0x010d, 0x0173, 0x201e, 0x201c,
+  0x0123, 0x00df, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac,
+  /* 0x60 */
+  0x002d, 0x002f, 0x0160, 0x00c4, 0x0104, 0x012e, 0x016a, 0x00c5,
+  0x0112, 0x017d, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x00c9, 0x0118, 0x0116, 0x010c, 0x0172, 0x012a, 0x013b,
+  0x0122, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x0101, 0x017c, 0x0144, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x0156, 0x0157, 0x00e6, 0x0137, 0x00c6, 0x20ac,
+  /* 0xa0 */
+  0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x201d, 0x017a, 0x0100, 0x017b, 0x0143, 0x00ae,
+  /* 0xb0 */
+  0x005e, 0x00a3, 0x012b, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x005b, 0x005d, 0x0179, 0x0136, 0x013c, 0x00d7,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x014d, 0x00f6, 0x0146, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x0107, 0x00fc, 0x0142, 0x015b, 0x2019,
+  /* 0xe0 */
+  0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x014c, 0x00d6, 0x0145, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x0106, 0x00dc, 0x0141, 0x015a, 0x009f,
+};
+
+static int
+ebcdic1156_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1156_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1156_page00[384] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0xba, 0xe0, 0xbb, 0xb0, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0x00, 0x4a, 0xb1, 0x00, 0x00, 0x6a, 0xb5, /* 0xa0-0xa7 */
+  0x00, 0xb4, 0x00, 0x8a, 0x5f, 0xca, 0xaf, 0x00, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0x00, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x00, 0xda, 0x00, 0x8b, 0xb7, 0xb8, 0xb9, 0x00, /* 0xb8-0xbf */
+  0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x9e, 0x00, /* 0xc0-0xc7 */
+  0x00, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+  0x00, 0x00, 0x00, 0xee, 0x00, 0xef, 0xec, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x59, /* 0xd8-0xdf */
+  0x00, 0x00, 0x00, 0x00, 0x43, 0x47, 0x9c, 0x00, /* 0xe0-0xe7 */
+  0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+  0x00, 0x00, 0x00, 0xce, 0x00, 0xcf, 0xcc, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, /* 0xf8-0xff */
+  /* 0x0100 */
+  0xac, 0x8c, 0x00, 0x00, 0x64, 0x44, 0xfb, 0xdb, /* 0x00-0x07 */
+  0x00, 0x00, 0x00, 0x00, 0x74, 0x54, 0x00, 0x00, /* 0x08-0x0f */
+  0x00, 0x00, 0x68, 0x48, 0x00, 0x00, 0x73, 0x53, /* 0x10-0x17 */
+  0x72, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+  0x00, 0x00, 0x78, 0x58, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+  0x00, 0x00, 0x76, 0xb2, 0x00, 0x00, 0x65, 0x45, /* 0x28-0x2f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbd, 0x9d, /* 0x30-0x37 */
+  0x00, 0x00, 0x00, 0x77, 0xbe, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+  0x00, 0xfd, 0xdd, 0xae, 0x8e, 0xed, 0xcd, 0x00, /* 0x40-0x47 */
+  0x00, 0x00, 0x00, 0x00, 0xeb, 0xcb, 0x00, 0x00, /* 0x48-0x4f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x9b, /* 0x50-0x57 */
+  0x00, 0x00, 0xfe, 0xde, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+  0x62, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+  0x00, 0x00, 0x66, 0x46, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+  0x00, 0x00, 0x75, 0x55, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+  0x00, 0xbc, 0xab, 0xad, 0x8d, 0x69, 0x49, 0x00, /* 0x78-0x7f */
+};
+static const unsigned char ebcdic1156_page20[8] = {
+  0x00, 0xdf, 0x00, 0x00, 0x57, 0xaa, 0x56, 0x00, /* 0x18-0x1f */
+};
+
+static int
+ebcdic1156_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0180)
+    c = ebcdic1156_page00[wc];
+  else if (wc >= 0x2018 && wc < 0x2020)
+    c = ebcdic1156_page20[wc-0x2018];
+  else if (wc == 0x20ac)
+    c = 0x9f;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1157.h b/lib/ebcdic1157.h
new file mode 100644
index 0000000..1118a76
--- /dev/null
+++ b/lib/ebcdic1157.h
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1157
+ */
+
+static const unsigned short ebcdic1157_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x007b, 0x00e0, 0x00e1, 0x00e3, 0x007d,
+  0x00e7, 0x00f1, 0x00a7, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x0060, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+  0x00ec, 0x00df, 0x20ac, 0x00c5, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x0023, 0x00c0, 0x00c1, 0x00c3, 0x0024,
+  0x00c7, 0x00d1, 0x00f6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x005c, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x00e9, 0x003a, 0x00c4, 0x00d6, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x0161, 0x00fd, 0x017e, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x005d,
+  /* 0xa0 */
+  0x00b5, 0x00fc, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x0160, 0x00dd, 0x017d, 0x00ae,
+  /* 0xb0 */
+  0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x005b, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x00e4, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00a6, 0x00f2, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x00e5, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x007e, 0x00f9, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x00c9, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x0040, 0x00d2, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic1157_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1157_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1157_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0x63, 0x67, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0xec, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0xb5, 0x71, 0x9f, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x51, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0x43, 0xbb, 0x47, 0xdc, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0xb0, 0xb1, 0x00, 0xb2, 0xcc, 0x4a, /* 0xa0-0xa7 */
+  0xbd, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x66, 0x7b, 0x5b, 0x9e, 0x68, /* 0xc0-0xc7 */
+  0x74, 0xe0, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0x00, 0x69, 0xed, 0xee, 0xeb, 0xef, 0x7c, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0x00, 0x59, /* 0xd8-0xdf */
+  0x44, 0x45, 0x42, 0x46, 0xc0, 0xd0, 0x9c, 0x48, /* 0xe0-0xe7 */
+  0x54, 0x79, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x00, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0x6a, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0xdd, 0xde, 0xdb, 0xa1, 0x8d, 0x00, 0xdf, /* 0xf8-0xff */
+};
+static const unsigned char ebcdic1157_page01[32] = {
+  0xac, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0x8e, 0x00, /* 0x78-0x7f */
+};
+
+static int
+ebcdic1157_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic1157_page00[wc];
+  else if (wc >= 0x0160 && wc < 0x0180)
+    c = ebcdic1157_page01[wc-0x0160];
+  else if (wc == 0x20ac)
+    c = 0x5a;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1158.h b/lib/ebcdic1158.h
new file mode 100644
index 0000000..95aa784
--- /dev/null
+++ b/lib/ebcdic1158.h
@@ -0,0 +1,146 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1158
+ */
+
+static const unsigned short ebcdic1158_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x0452, 0x0491, 0x0451, 0x0454, 0x0455, 0x0456,
+  0x0457, 0x0458, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x0459, 0x045a, 0x045b, 0x045c, 0x045e, 0x045f, 0x042a,
+  0x2116, 0x0402, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x0490, 0x0401, 0x0404, 0x0405, 0x0406, 0x0407,
+  0x0408, 0x0409, 0x007c, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f, 0x044e, 0x0430,
+  0x0431, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x0446, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 0x0438,
+  /* 0x90 */
+  0x0439, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+  /* 0xa0 */
+  0x044f, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
+  /* 0xb0 */
+  0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
+  0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x041d, 0x041e, 0x041f, 0x042f, 0x0420, 0x0421,
+  /* 0xe0 */
+  0x005c, 0x20ac, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x0422, 0x0423, 0x0416, 0x0412, 0x042c, 0x042b,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x009f,
+};
+
+static int
+ebcdic1158_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1158_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1158_page00[176] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x4a, 0xe0, 0x5a, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x6a, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, /* 0xa8-0xaf */
+};
+static const unsigned char ebcdic1158_page04[152] = {
+  0x00, 0x63, 0x59, 0x00, 0x64, 0x65, 0x66, 0x67, /* 0x00-0x07 */
+  0x68, 0x69, 0x70, 0x71, 0x72, 0x00, 0x74, 0x75, /* 0x08-0x0f */
+  0xb9, 0xba, 0xed, 0xbf, 0xbc, 0xbd, 0xec, 0xfa, /* 0x10-0x17 */
+  0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xda, 0xdb, 0xdc, /* 0x18-0x1f */
+  0xde, 0xdf, 0xea, 0xeb, 0xbe, 0xca, 0xbb, 0xfe, /* 0x20-0x27 */
+  0xfb, 0xfd, 0x57, 0xef, 0xee, 0xfc, 0xb8, 0xdd, /* 0x28-0x2f */
+  0x77, 0x78, 0xaf, 0x8d, 0x8a, 0x8b, 0xae, 0xb2, /* 0x30-0x37 */
+  0x8f, 0x90, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, /* 0x38-0x3f */
+  0xaa, 0xab, 0xac, 0xad, 0x8c, 0x8e, 0x80, 0xb6, /* 0x40-0x47 */
+  0xb3, 0xb5, 0xb7, 0xb1, 0xb0, 0xb4, 0x76, 0xa0, /* 0x48-0x4f */
+  0x00, 0x44, 0x42, 0x00, 0x45, 0x46, 0x47, 0x48, /* 0x50-0x57 */
+  0x49, 0x51, 0x52, 0x53, 0x54, 0x00, 0x55, 0x56, /* 0x58-0x5f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+  0x62, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+};
+
+static int
+ebcdic1158_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x00b0)
+    c = ebcdic1158_page00[wc];
+  else if (wc >= 0x0400 && wc < 0x0498)
+    c = ebcdic1158_page04[wc-0x0400];
+  else if (wc == 0x20ac)
+    c = 0xe1;
+  else if (wc == 0x2116)
+    c = 0x58;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1160.h b/lib/ebcdic1160.h
new file mode 100644
index 0000000..e0104b0
--- /dev/null
+++ b/lib/ebcdic1160.h
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1160
+ */
+
+static const unsigned short ebcdic1160_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06,
+  0x0e07, 0x005b, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c,
+  /* 0x50 */
+  0x0026, 0x0e48, 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d,
+  0x0e0e, 0x005d, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac,
+  /* 0x60 */
+  0x002d, 0x002f, 0x0e0f, 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14,
+  0x0e15, 0x005e, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x0e3f, 0x0e4e, 0x0e16, 0x0e17, 0x0e18, 0x0e19, 0x0e1a, 0x0e1b,
+  0x0e1c, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x0e4f, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x0e1d, 0x0e1e, 0x0e1f, 0x0e20, 0x0e21, 0x0e22,
+  /* 0x90 */
+  0x0e5a, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27, 0x0e28,
+  /* 0xa0 */
+  0x0e5b, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e,
+  /* 0xb0 */
+  0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57,
+  0x0e58, 0x0e59, 0x0e2f, 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x0e49, 0x0e35, 0x0e36, 0x0e37, 0x0e38, 0x0e39,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x0e3a, 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44,
+  /* 0xe0 */
+  0x005c, 0x0e4a, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x0e45, 0x0e46, 0x0e47, 0x0e48, 0x0e49, 0x0e4a,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4b, 0x20ac, 0x009f,
+};
+
+static int
+ebcdic1160_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1160_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1160_page00[176] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x49, 0xe0, 0x59, 0x69, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x6a, 0x00, /* 0xa0-0xa7 */
+  0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
+};
+static const unsigned char ebcdic1160_page0e[96] = {
+  0x00, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, /* 0x00-0x07 */
+  0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x62, /* 0x08-0x0f */
+  0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x72, 0x73, /* 0x10-0x17 */
+  0x74, 0x75, 0x76, 0x77, 0x78, 0x8a, 0x8b, 0x8c, /* 0x18-0x1f */
+  0x8d, 0x8e, 0x8f, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, /* 0x20-0x27 */
+  0x9f, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xba, /* 0x28-0x2f */
+  0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xcb, 0xcc, 0xcd, /* 0x30-0x37 */
+  0xce, 0xcf, 0xda, 0x00, 0x00, 0x00, 0x00, 0x70, /* 0x38-0x3f */
+  0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xea, 0xeb, 0xec, /* 0x40-0x47 */
+  0xed, 0xee, 0xef, 0xfa, 0xfb, 0xfc, 0x71, 0x80, /* 0x48-0x4f */
+  0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x50-0x57 */
+  0xb8, 0xb9, 0x90, 0xa0, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+};
+
+static int
+ebcdic1160_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x00b0)
+    c = ebcdic1160_page00[wc];
+  else if (wc >= 0x0e00 && wc < 0x0e60)
+    c = ebcdic1160_page0e[wc-0x0e00];
+  else if (wc == 0x20ac)
+    c = 0xfe;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1164.h b/lib/ebcdic1164.h
new file mode 100644
index 0000000..6620da9
--- /dev/null
+++ b/lib/ebcdic1164.h
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1164
+ */
+
+static const unsigned short ebcdic1164_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x0103, 0x00e5,
+  0x00e7, 0x00f1, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+  0x0303, 0x00df, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x0102, 0x00c5,
+  0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x20ab, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x0111, 0x0309, 0x0300, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x0152, 0x00c6, 0x20ac,
+  /* 0xa0 */
+  0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x0110, 0x0323, 0x0301, 0x00ae,
+  /* 0xb0 */
+  0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x0153, 0x0178, 0x00d7,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x01b0, 0x00f3, 0x01a1,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x01af, 0x00d3, 0x01a0,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic1164_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1164_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1164_page00[440] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x4a, 0xe0, 0x5a, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0xbb, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0xb0, 0xb1, 0x00, 0xb2, 0x6a, 0xb5, /* 0xa0-0xa7 */
+  0x00, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0x00, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x00, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x00, 0x63, 0x67, 0x9e, 0x68, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x00, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0x00, 0x69, 0x00, 0xee, 0xeb, 0x00, 0xec, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0x00, 0x00, 0x59, /* 0xd8-0xdf */
+  0x44, 0x45, 0x42, 0x00, 0x43, 0x47, 0x9c, 0x48, /* 0xe0-0xe7 */
+  0x54, 0x51, 0x52, 0x53, 0x00, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x00, 0x49, 0x00, 0xce, 0xcb, 0x00, 0xcc, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xf8-0xff */
+  /* 0x0100 */
+  0x00, 0x00, 0x66, 0x46, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+  0xac, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+  0x00, 0x00, 0x9d, 0xbd, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+  0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
+  0xef, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xed, /* 0xa8-0xaf */
+  0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+};
+static const unsigned char ebcdic1164_page03[40] = {
+  0x8e, 0xae, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
+  0x00, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+  0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+};
+static const unsigned char ebcdic1164_page20[8] = {
+  0x00, 0x00, 0x00, 0x78, 0x9f, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
+};
+
+static int
+ebcdic1164_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x01b8)
+    c = ebcdic1164_page00[wc];
+  else if (wc >= 0x0300 && wc < 0x0328)
+    c = ebcdic1164_page03[wc-0x0300];
+  else if (wc >= 0x20a8 && wc < 0x20b0)
+    c = ebcdic1164_page20[wc-0x20a8];
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1165.h b/lib/ebcdic1165.h
new file mode 100644
index 0000000..e7ced17
--- /dev/null
+++ b/lib/ebcdic1165.h
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1165
+ */
+
+static const unsigned short ebcdic1165_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x0163, 0x00e1, 0x0103, 0x010d,
+  0x00e7, 0x0107, 0x00dd, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x0119, 0x00eb, 0x016f, 0x00ed, 0x00ee, 0x013e,
+  0x013a, 0x00df, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x02dd, 0x00c1, 0x0102, 0x010c,
+  0x00c7, 0x0106, 0x00a8, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x02c7, 0x00c9, 0x0118, 0x00cb, 0x016e, 0x00cd, 0x00ce, 0x013d,
+  0x0139, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x02d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x015b, 0x0148, 0x0111, 0x00fd, 0x0159, 0x015f,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x0142, 0x0144, 0x0161, 0x00b8, 0x02db, 0x20ac,
+  /* 0xa0 */
+  0x0105, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x015a, 0x0147, 0x0110, 0x005b, 0x0158, 0x015e,
+  /* 0xb0 */
+  0x02d9, 0x0104, 0x017c, 0x0162, 0x017b, 0x00a7, 0x017e, 0x017a,
+  0x017d, 0x0179, 0x0141, 0x0143, 0x0160, 0x005d, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x0155, 0x00f3, 0x0151,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x011a, 0x0171, 0x00fc, 0x0165, 0x00fa, 0x011b,
+  /* 0xe0 */
+  0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x010f, 0x00d4, 0x00d6, 0x0154, 0x00d3, 0x0150,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x010e, 0x0170, 0x00dc, 0x0164, 0x00da, 0x009f,
+};
+
+static int
+ebcdic1165_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1165_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1165_page00[384] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0xad, 0xe0, 0xbd, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, /* 0xa0-0xa7 */
+  0x6a, 0x00, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, /* 0xa8-0xaf */
+  0x90, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+  0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+  0x00, 0x65, 0x62, 0x00, 0x63, 0x00, 0x00, 0x68, /* 0xc0-0xc7 */
+  0x00, 0x71, 0x00, 0x73, 0x00, 0x75, 0x76, 0x00, /* 0xc8-0xcf */
+  0x00, 0x00, 0x00, 0xee, 0xeb, 0x00, 0xec, 0xbf, /* 0xd0-0xd7 */
+  0x00, 0x00, 0xfe, 0x00, 0xfc, 0x4a, 0x00, 0x59, /* 0xd8-0xdf */
+  0x00, 0x45, 0x42, 0x00, 0x43, 0x00, 0x00, 0x48, /* 0xe0-0xe7 */
+  0x00, 0x51, 0x00, 0x53, 0x00, 0x55, 0x56, 0x00, /* 0xe8-0xef */
+  0x00, 0x00, 0x00, 0xce, 0xcb, 0x00, 0xcc, 0xe1, /* 0xf0-0xf7 */
+  0x00, 0x00, 0xde, 0x00, 0xdc, 0x8d, 0x00, 0x00, /* 0xf8-0xff */
+  /* 0x0100 */
+  0x00, 0x00, 0x66, 0x46, 0xb1, 0xa0, 0x69, 0x49, /* 0x00-0x07 */
+  0x00, 0x00, 0x00, 0x00, 0x67, 0x47, 0xfa, 0xea, /* 0x08-0x0f */
+  0xac, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+  0x72, 0x52, 0xda, 0xdf, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+  0x00, 0x78, 0x58, 0x00, 0x00, 0x77, 0x57, 0x00, /* 0x38-0x3f */
+  0x00, 0xba, 0x9a, 0xbb, 0x9b, 0x00, 0x00, 0xab, /* 0x40-0x47 */
+  0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+  0xef, 0xcf, 0x00, 0x00, 0xed, 0xcd, 0x00, 0x00, /* 0x50-0x57 */
+  0xae, 0x8e, 0xaa, 0x8a, 0x00, 0x00, 0xaf, 0x8f, /* 0x58-0x5f */
+  0xbc, 0x9c, 0xb3, 0x44, 0xfd, 0xdd, 0x00, 0x00, /* 0x60-0x67 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x54, /* 0x68-0x6f */
+  0xfb, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+  0x00, 0xb9, 0xb7, 0xb4, 0xb2, 0xb8, 0xb6, 0x00, /* 0x78-0x7f */
+};
+static const unsigned char ebcdic1165_page02[32] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, /* 0xc0-0xc7 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+  0x80, 0xb0, 0x00, 0x9e, 0x00, 0x64, 0x00, 0x00, /* 0xd8-0xdf */
+};
+
+static int
+ebcdic1165_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0180)
+    c = ebcdic1165_page00[wc];
+  else if (wc >= 0x02c0 && wc < 0x02e0)
+    c = ebcdic1165_page02[wc-0x02c0];
+  else if (wc == 0x20ac)
+    c = 0x9f;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic1166.h b/lib/ebcdic1166.h
new file mode 100644
index 0000000..2b1fb6c
--- /dev/null
+++ b/lib/ebcdic1166.h
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-1166
+ */
+
+static const unsigned short ebcdic1166_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x04d9, 0x0493, 0x0451, 0x0454, 0x0455, 0x0456,
+  0x049b, 0x0458, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x04a3, 0x04e9, 0x04b1, 0x04af, 0x045e, 0x04bb, 0x042a,
+  0x2116, 0x04d8, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x0492, 0x0401, 0x0404, 0x0405, 0x0406, 0x049a,
+  0x0408, 0x04a2, 0x007c, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x04e8, 0x04b0, 0x04ae, 0x00ad, 0x040e, 0x04ba, 0x044e, 0x0430,
+  0x0431, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x0446, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 0x0438,
+  /* 0x90 */
+  0x0439, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+  /* 0xa0 */
+  0x044f, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
+  /* 0xb0 */
+  0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
+  0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x041d, 0x041e, 0x041f, 0x042f, 0x0420, 0x0421,
+  /* 0xe0 */
+  0x005c, 0x20ac, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x0422, 0x0423, 0x0416, 0x0412, 0x042c, 0x042b,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x009f,
+};
+
+static int
+ebcdic1166_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic1166_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic1166_page00[176] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x4a, 0xe0, 0x5a, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x6a, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, /* 0xa8-0xaf */
+};
+static const unsigned char ebcdic1166_page04[240] = {
+  0x00, 0x63, 0x00, 0x00, 0x64, 0x65, 0x66, 0x00, /* 0x00-0x07 */
+  0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, /* 0x08-0x0f */
+  0xb9, 0xba, 0xed, 0xbf, 0xbc, 0xbd, 0xec, 0xfa, /* 0x10-0x17 */
+  0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xda, 0xdb, 0xdc, /* 0x18-0x1f */
+  0xde, 0xdf, 0xea, 0xeb, 0xbe, 0xca, 0xbb, 0xfe, /* 0x20-0x27 */
+  0xfb, 0xfd, 0x57, 0xef, 0xee, 0xfc, 0xb8, 0xdd, /* 0x28-0x2f */
+  0x77, 0x78, 0xaf, 0x8d, 0x8a, 0x8b, 0xae, 0xb2, /* 0x30-0x37 */
+  0x8f, 0x90, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, /* 0x38-0x3f */
+  0xaa, 0xab, 0xac, 0xad, 0x8c, 0x8e, 0x80, 0xb6, /* 0x40-0x47 */
+  0xb3, 0xb5, 0xb7, 0xb1, 0xb0, 0xb4, 0x76, 0xa0, /* 0x48-0x4f */
+  0x00, 0x44, 0x00, 0x00, 0x45, 0x46, 0x47, 0x00, /* 0x50-0x57 */
+  0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, /* 0x58-0x5f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+  0x00, 0x00, 0x62, 0x43, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+  0x00, 0x00, 0x67, 0x48, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
+  0x00, 0x00, 0x69, 0x51, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x54, /* 0xa8-0xaf */
+  0x71, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+  0x00, 0x00, 0x75, 0x56, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+  0x59, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+  0x70, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+};
+
+static int
+ebcdic1166_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x00b0)
+    c = ebcdic1166_page00[wc];
+  else if (wc >= 0x0400 && wc < 0x04f0)
+    c = ebcdic1166_page04[wc-0x0400];
+  else if (wc == 0x20ac)
+    c = 0xe1;
+  else if (wc == 0x2116)
+    c = 0x58;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic12712.h b/lib/ebcdic12712.h
new file mode 100644
index 0000000..bafb3f0
--- /dev/null
+++ b/lib/ebcdic12712.h
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-12712
+ */
+
+static const unsigned short ebcdic12712_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6,
+  0x05d7, 0x05d8, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c,
+  /* 0x50 */
+  0x0026, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
+  0x05e0, 0x05e1, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac,
+  /* 0x60 */
+  0x002d, 0x002f, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
+  0x05e8, 0x05e9, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0xfffd, 0x05ea, 0xfffd, 0xfffd, 0x00a0, 0xfffd, 0xfffd, 0xfffd,
+  0x2017, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0xfffd, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0xfffd, 0xfffd, 0xfffd, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0xfffd, 0xfffd, 0x20ac, 0x00b8, 0x20aa, 0x00a4,
+  /* 0xa0 */
+  0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00ae,
+  /* 0xb0 */
+  0x005e, 0x00a3, 0x00a5, 0x2022, 0x00a9, 0x00a7, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x005b, 0x005d, 0x203e, 0x00a8, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x202d, 0x202e, 0x202c, 0xfffd, 0xfffd,
+  /* 0xe0 */
+  0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x202a, 0x202b, 0x200e, 0x200f, 0x009f,
+};
+
+static int
+ebcdic12712_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  unsigned short wc = ebcdic12712_2uni[c];
+  if (wc != 0xfffd) {
+    *pwc = (ucs4_t) wc;
+    return 1;
+  }
+  return RET_ILSEQ;
+}
+
+static const unsigned char ebcdic12712_page00[248] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0xba, 0xe0, 0xbb, 0xb0, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x74, 0x00, 0x4a, 0xb1, 0x9f, 0xb2, 0x6a, 0xb5, /* 0xa0-0xa7 */
+  0xbd, 0xb4, 0x00, 0x8a, 0x5f, 0xca, 0xaf, 0x00, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0x00, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x00, 0x8b, 0xb7, 0xb8, 0xb9, 0x00, /* 0xb8-0xbf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, /* 0xd0-0xd7 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, /* 0xf0-0xf7 */
+};
+static const unsigned char ebcdic12712_page05[32] = {
+  0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, /* 0xd0-0xd7 */
+  0x49, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, /* 0xd8-0xdf */
+  0x58, 0x59, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, /* 0xe0-0xe7 */
+  0x68, 0x69, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+};
+static const unsigned char ebcdic12712_page20[56] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xfe, /* 0x08-0x0f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, /* 0x10-0x17 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+  0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+  0x00, 0x00, 0xfb, 0xfc, 0xdd, 0xdb, 0xdc, 0x00, /* 0x28-0x2f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x00, /* 0x38-0x3f */
+};
+static const unsigned char ebcdic12712_page20_1[8] = {
+  0x00, 0x00, 0x9e, 0x00, 0x9c, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
+};
+
+static int
+ebcdic12712_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x00f8)
+    c = ebcdic12712_page00[wc];
+  else if (wc >= 0x05d0 && wc < 0x05f0)
+    c = ebcdic12712_page05[wc-0x05d0];
+  else if (wc >= 0x2008 && wc < 0x2040)
+    c = ebcdic12712_page20[wc-0x2008];
+  else if (wc >= 0x20a8 && wc < 0x20b0)
+    c = ebcdic12712_page20_1[wc-0x20a8];
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic16804.h b/lib/ebcdic16804.h
new file mode 100644
index 0000000..fd7af59
--- /dev/null
+++ b/lib/ebcdic16804.h
@@ -0,0 +1,178 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-16804
+ */
+
+static const unsigned short ebcdic16804_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x0651, 0xfe7d, 0x0640, 0x200b, 0x0621, 0x0622,
+  0xfe82, 0x0623, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c,
+  /* 0x50 */
+  0x0026, 0xfe84, 0x0624, 0xfffd, 0xfffd, 0x0626, 0x0627, 0xfe8e,
+  0x0628, 0xfe91, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac,
+  /* 0x60 */
+  0x002d, 0x002f, 0x0629, 0x062a, 0xfe97, 0x062b, 0xfe9b, 0x062c,
+  0xfe9f, 0x062d, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0xfea3, 0x062e, 0xfea7, 0x062f, 0x0630, 0x0631, 0x0632, 0x0633,
+  0xfeb3, 0x060c, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x0634, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0xfeb7, 0x0635, 0xfebb, 0x0636, 0xfebf, 0x0637,
+  /* 0x90 */
+  0x0638, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x0639, 0xfeca, 0xfecb, 0xfecc, 0x063a, 0xfece,
+  /* 0xa0 */
+  0xfecf, 0x00f7, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0xfed0, 0x0641, 0xfed3, 0x0642, 0xfed7, 0x0643,
+  /* 0xb0 */
+  0xfedb, 0x0644, 0xfef5, 0xfef6, 0xfef7, 0xfef8, 0xfffd, 0xfffd,
+  0xfefb, 0xfefc, 0xfedf, 0x0645, 0xfee3, 0x0646, 0xfee7, 0x0647,
+  /* 0xc0 */
+  0x061b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0xfeeb, 0xfffd, 0xfeec, 0xfffd, 0x0648,
+  /* 0xd0 */
+  0x061f, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x0649, 0xfef0, 0x064a, 0xfef2, 0xfef3, 0x0660,
+  /* 0xe0 */
+  0x00d7, 0x2007, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x0661, 0x0662, 0xfffd, 0x0663, 0x0664, 0x0665,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x20ac, 0x0666, 0x0667, 0x0668, 0x0669, 0x009f,
+};
+
+static int
+ebcdic16804_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  unsigned short wc = ebcdic16804_2uni[c];
+  if (wc != 0xfffd) {
+    *pwc = (ucs4_t) wc;
+    return 1;
+  }
+  return RET_ILSEQ;
+}
+
+static const unsigned char ebcdic16804_page00[248] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x00, 0x00, 0x00, 0x00, 0x6d, /* 0x58-0x5f */
+  0x00, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0x00, 0x4f, 0x00, 0x00, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x6a, 0x00, /* 0xa0-0xa7 */
+  0x00, 0x00, 0x00, 0x00, 0x5f, 0xca, 0x00, 0x00, /* 0xa8-0xaf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, /* 0xd0-0xd7 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, /* 0xf0-0xf7 */
+};
+static const unsigned char ebcdic16804_page06[104] = {
+  0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+  0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xd0, /* 0x18-0x1f */
+  0x00, 0x46, 0x47, 0x49, 0x52, 0x00, 0x55, 0x56, /* 0x20-0x27 */
+  0x58, 0x62, 0x63, 0x65, 0x67, 0x69, 0x71, 0x73, /* 0x28-0x2f */
+  0x74, 0x75, 0x76, 0x77, 0x80, 0x8b, 0x8d, 0x8f, /* 0x30-0x37 */
+  0x90, 0x9a, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+  0x44, 0xab, 0xad, 0xaf, 0xb1, 0xbb, 0xbd, 0xbf, /* 0x40-0x47 */
+  0xcf, 0xda, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+  0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+  0xdf, 0xea, 0xeb, 0xed, 0xee, 0xef, 0xfb, 0xfc, /* 0x60-0x67 */
+  0xfd, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+};
+static const unsigned char ebcdic16804_page20[16] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, /* 0x00-0x07 */
+  0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+};
+static const unsigned char ebcdic16804_pagefe[136] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, /* 0x78-0x7f */
+  0x00, 0x00, 0x48, 0x00, 0x51, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, /* 0x88-0x8f */
+  0x00, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, /* 0x90-0x97 */
+  0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x68, /* 0x98-0x9f */
+  0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x72, /* 0xa0-0xa7 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
+  0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x8a, /* 0xb0-0xb7 */
+  0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x8e, /* 0xb8-0xbf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+  0x00, 0x00, 0x9b, 0x9c, 0x9d, 0x00, 0x9f, 0xa0, /* 0xc8-0xcf */
+  0xaa, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0xae, /* 0xd0-0xd7 */
+  0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0xba, /* 0xd8-0xdf */
+  0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0xbe, /* 0xe0-0xe7 */
+  0x00, 0x00, 0x00, 0xcb, 0xcd, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+  0xdb, 0x00, 0xdd, 0xde, 0x00, 0xb2, 0xb3, 0xb4, /* 0xf0-0xf7 */
+  0xb5, 0x00, 0x00, 0xb8, 0xb9, 0x00, 0x00, 0x00, /* 0xf8-0xff */
+};
+
+static int
+ebcdic16804_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x00f8)
+    c = ebcdic16804_page00[wc];
+  else if (wc >= 0x0608 && wc < 0x0670)
+    c = ebcdic16804_page06[wc-0x0608];
+  else if (wc >= 0x2000 && wc < 0x2010)
+    c = ebcdic16804_page20[wc-0x2000];
+  else if (wc == 0x20ac)
+    c = 0xfa;
+  else if (wc >= 0xfe78 && wc < 0xff00)
+    c = ebcdic16804_pagefe[wc-0xfe78];
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic273.h b/lib/ebcdic273.h
new file mode 100644
index 0000000..6dc48f4
--- /dev/null
+++ b/lib/ebcdic273.h
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-273
+ */
+
+static const unsigned short ebcdic273_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x007b, 0x00e0, 0x00e1, 0x00e3, 0x00e5,
+  0x00e7, 0x00f1, 0x00c4, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+  0x00ec, 0x007e, 0x00dc, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x005b, 0x00c0, 0x00c1, 0x00c3, 0x00c5,
+  0x00c7, 0x00d1, 0x00f6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x0060, 0x003a, 0x0023, 0x00a7, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4,
+  /* 0xa0 */
+  0x00b5, 0x00df, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae,
+  /* 0xb0 */
+  0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x0040, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x00e4, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00a6, 0x00f2, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x00fc, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x007d, 0x00f9, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x00d6, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x005c, 0x00d2, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x005d, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic273_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic273_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic273_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0xb5, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x63, 0xec, 0xfc, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0x43, 0xbb, 0xdc, 0x59, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0xb0, 0xb1, 0x9f, 0xb2, 0xcc, 0x7c, /* 0xa0-0xa7 */
+  0xbd, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x66, 0x4a, 0x67, 0x9e, 0x68, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xe0, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0x5a, 0xad, 0xae, 0xa1, /* 0xd8-0xdf */
+  0x44, 0x45, 0x42, 0x46, 0xc0, 0x47, 0x9c, 0x48, /* 0xe0-0xe7 */
+  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0x6a, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0xdd, 0xde, 0xdb, 0xd0, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */
+};
+
+static int
+ebcdic273_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic273_page00[wc];
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic277.h b/lib/ebcdic277.h
new file mode 100644
index 0000000..c21cfe2
--- /dev/null
+++ b/lib/ebcdic277.h
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-277
+ */
+
+static const unsigned short ebcdic277_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x007d,
+  0x00e7, 0x00f1, 0x0023, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+  0x00ec, 0x00df, 0x00a4, 0x00c5, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x0024,
+  0x00c7, 0x00d1, 0x00f8, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00a6, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x0060, 0x003a, 0x00c6, 0x00d8, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x0040, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x007b, 0x00b8, 0x005b, 0x005d,
+  /* 0xa0 */
+  0x00b5, 0x00fc, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae,
+  /* 0xb0 */
+  0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x00e6, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x00e5, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x007e, 0x00f9, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic277_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic277_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic277_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0x4a, 0x67, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x80, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x9e, 0xe0, 0x9f, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0x9c, 0xbb, 0x47, 0xdc, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0xb0, 0xb1, 0x5a, 0xb2, 0x70, 0xb5, /* 0xa0-0xa7 */
+  0xbd, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x66, 0x63, 0x5b, 0x7b, 0x68, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf, /* 0xd0-0xd7 */
+  0x7c, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0xae, 0x59, /* 0xd8-0xdf */
+  0x44, 0x45, 0x42, 0x46, 0x43, 0xd0, 0xc0, 0x48, /* 0xe0-0xe7 */
+  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1, /* 0xf0-0xf7 */
+  0x6a, 0xdd, 0xde, 0xdb, 0xa1, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */
+};
+
+static int
+ebcdic277_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic277_page00[wc];
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic278.h b/lib/ebcdic278.h
new file mode 100644
index 0000000..37b06d4
--- /dev/null
+++ b/lib/ebcdic278.h
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-278
+ */
+
+static const unsigned short ebcdic278_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x007b, 0x00e0, 0x00e1, 0x00e3, 0x007d,
+  0x00e7, 0x00f1, 0x00a7, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x0060, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+  0x00ec, 0x00df, 0x00a4, 0x00c5, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x0023, 0x00c0, 0x00c1, 0x00c3, 0x0024,
+  0x00c7, 0x00d1, 0x00f6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x005c, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x00e9, 0x003a, 0x00c4, 0x00d6, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x005d,
+  /* 0xa0 */
+  0x00b5, 0x00fc, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae,
+  /* 0xb0 */
+  0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x005b, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x00e4, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00a6, 0x00f2, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x00e5, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x007e, 0x00f9, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x00c9, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x0040, 0x00d2, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic278_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic278_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic278_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0x63, 0x67, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0xec, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0xb5, 0x71, 0x9f, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x51, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0x43, 0xbb, 0x47, 0xdc, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0xb0, 0xb1, 0x5a, 0xb2, 0xcc, 0x4a, /* 0xa0-0xa7 */
+  0xbd, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x66, 0x7b, 0x5b, 0x9e, 0x68, /* 0xc0-0xc7 */
+  0x74, 0xe0, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0x7c, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0xae, 0x59, /* 0xd8-0xdf */
+  0x44, 0x45, 0x42, 0x46, 0xc0, 0xd0, 0x9c, 0x48, /* 0xe0-0xe7 */
+  0x54, 0x79, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0x6a, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0xdd, 0xde, 0xdb, 0xa1, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */
+};
+
+static int
+ebcdic278_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic278_page00[wc];
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic280.h b/lib/ebcdic280.h
new file mode 100644
index 0000000..2102f15
--- /dev/null
+++ b/lib/ebcdic280.h
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-280
+ */
+
+static const unsigned short ebcdic280_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x007b, 0x00e1, 0x00e3, 0x00e5,
+  0x005c, 0x00f1, 0x00b0, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x005d, 0x00ea, 0x00eb, 0x007d, 0x00ed, 0x00ee, 0x00ef,
+  0x007e, 0x00df, 0x00e9, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5,
+  0x00c7, 0x00d1, 0x00f2, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x00f9, 0x003a, 0x00a3, 0x00a7, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1,
+  /* 0x90 */
+  0x005b, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4,
+  /* 0xa0 */
+  0x00b5, 0x00ec, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae,
+  /* 0xb0 */
+  0x00a2, 0x0023, 0x00a5, 0x00b7, 0x00a9, 0x0040, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x00e0, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00a6, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x00e8, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x0060, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x00e7, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic280_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic280_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic280_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0xb1, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0xb5, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x90, 0x48, 0x51, 0x5f, 0x6d, /* 0x58-0x5f */
+  0xdd, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0x44, 0xbb, 0x54, 0x58, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0xb0, 0x7b, 0x9f, 0xb2, 0xcd, 0x7c, /* 0xa0-0xa7 */
+  0xbd, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x4a, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0xae, 0x59, /* 0xd8-0xdf */
+  0xc0, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0xe0, /* 0xe0-0xe7 */
+  0xd0, 0x5a, 0x52, 0x53, 0xa1, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x8c, 0x49, 0x6a, 0xce, 0xcb, 0xcf, 0xcc, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0x79, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */
+};
+
+static int
+ebcdic280_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic280_page00[wc];
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic282.h b/lib/ebcdic282.h
new file mode 100644
index 0000000..3779bc1
--- /dev/null
+++ b/lib/ebcdic282.h
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-282
+ */
+
+static const unsigned short ebcdic282_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x007b, 0x00e5,
+  0x007e, 0x00f1, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+  0x00ec, 0x00df, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x0023, 0x00c5,
+  0x005c, 0x00d1, 0x00f5, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x0060, 0x003a, 0x00c3, 0x00d5, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4,
+  /* 0xa0 */
+  0x00b5, 0x00e7, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae,
+  /* 0xb0 */
+  0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x007d, 0x00d7,
+  /* 0xc0 */
+  0x00e3, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00a6,
+  /* 0xd0 */
+  0x00b4, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x00c7, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x0040,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic282_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic282_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic282_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0x66, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0xef, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x4a, 0x68, 0x5a, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0x46, 0xbb, 0xbe, 0x48, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0xb0, 0xb1, 0x9f, 0xb2, 0xcf, 0xb5, /* 0xa0-0xa7 */
+  0xbd, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0xd0, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x7b, 0x63, 0x67, 0x9e, 0xe0, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0xac, 0x69, 0xed, 0xee, 0xeb, 0x7c, 0xec, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0xae, 0x59, /* 0xd8-0xdf */
+  0x44, 0x45, 0x42, 0xc0, 0x43, 0x47, 0x9c, 0xa1, /* 0xe0-0xe7 */
+  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0x6a, 0xcc, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */
+};
+
+static int
+ebcdic282_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic282_page00[wc];
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic284.h b/lib/ebcdic284.h
new file mode 100644
index 0000000..368a7de
--- /dev/null
+++ b/lib/ebcdic284.h
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-284
+ */
+
+static const unsigned short ebcdic284_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5,
+  0x00e7, 0x00a6, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+  0x00ec, 0x00df, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5,
+  0x00c7, 0x0023, 0x00f1, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x0060, 0x003a, 0x00d1, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4,
+  /* 0xa0 */
+  0x00b5, 0x00a8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae,
+  /* 0xb0 */
+  0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x005e, 0x0021, 0x00af, 0x007e, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic284_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic284_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic284_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0xbb, 0x7f, 0x69, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x4a, 0xe0, 0x5a, 0xba, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xbd, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0xb0, 0xb1, 0x9f, 0xb2, 0x49, 0xb5, /* 0xa0-0xa7 */
+  0xa1, 0xb4, 0x9a, 0x8a, 0x5f, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0xac, 0x7b, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0xae, 0x59, /* 0xd8-0xdf */
+  0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48, /* 0xe0-0xe7 */
+  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x8c, 0x6a, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */
+};
+
+static int
+ebcdic284_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic284_page00[wc];
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic285.h b/lib/ebcdic285.h
new file mode 100644
index 0000000..feb65a8
--- /dev/null
+++ b/lib/ebcdic285.h
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-285
+ */
+
+static const unsigned short ebcdic285_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5,
+  0x00e7, 0x00f1, 0x0024, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+  0x00ec, 0x00df, 0x0021, 0x00a3, 0x002a, 0x0029, 0x003b, 0x00ac,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5,
+  0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4,
+  /* 0xa0 */
+  0x00b5, 0x00af, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae,
+  /* 0xb0 */
+  0x00a2, 0x005b, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x005e, 0x005d, 0x007e, 0x00a8, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic285_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic285_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic285_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x5a, 0x7f, 0x7b, 0x4a, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0xb1, 0xe0, 0xbb, 0xba, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xbc, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0xb0, 0x5b, 0x9f, 0xb2, 0x6a, 0xb5, /* 0xa0-0xa7 */
+  0xbd, 0xb4, 0x9a, 0x8a, 0x5f, 0xca, 0xaf, 0xa1, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0xae, 0x59, /* 0xd8-0xdf */
+  0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48, /* 0xe0-0xe7 */
+  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */
+};
+
+static int
+ebcdic285_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic285_page00[wc];
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic297.h b/lib/ebcdic297.h
new file mode 100644
index 0000000..391dff3
--- /dev/null
+++ b/lib/ebcdic297.h
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-297
+ */
+
+static const unsigned short ebcdic297_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x0040, 0x00e1, 0x00e3, 0x00e5,
+  0x005c, 0x00f1, 0x00b0, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x007b, 0x00ea, 0x00eb, 0x007d, 0x00ed, 0x00ee, 0x00ef,
+  0x00ec, 0x00df, 0x00a7, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5,
+  0x00c7, 0x00d1, 0x00f9, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x00b5, 0x003a, 0x00a3, 0x00e0, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1,
+  /* 0x90 */
+  0x005b, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4,
+  /* 0xa0 */
+  0x0060, 0x00a8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae,
+  /* 0xb0 */
+  0x00a2, 0x0023, 0x00a5, 0x00b7, 0x00a9, 0x005d, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x007e, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x00e9, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x00e8, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00a6, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x00e7, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic297_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic297_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic297_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0xb1, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x44, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x90, 0x48, 0xb5, 0x5f, 0x6d, /* 0x58-0x5f */
+  0xa0, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0x51, 0xbb, 0x54, 0xbd, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0xb0, 0x7b, 0x9f, 0xb2, 0xdd, 0x5a, /* 0xa0-0xa7 */
+  0xa1, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x4a, 0x8f, 0xea, 0xfa, 0xbe, 0x79, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0xae, 0x59, /* 0xd8-0xdf */
+  0x7c, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0xe0, /* 0xe0-0xe7 */
+  0xd0, 0xc0, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0x6a, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */
+};
+
+static int
+ebcdic297_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic297_page00[wc];
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic423.h b/lib/ebcdic423.h
new file mode 100644
index 0000000..6dd6388
--- /dev/null
+++ b/lib/ebcdic423.h
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-423
+ */
+
+static const unsigned short ebcdic423_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
+  0x0398, 0x0399, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
+  0x03a1, 0x03a3, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
+  0xfffd, 0xfffd, 0x007c, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0xfffd, 0x0386, 0x0388, 0x0389, 0x00a0, 0x038a, 0x038c, 0x038e,
+  0x038f, 0x0060, 0x003a, 0x00a3, 0x00a7, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00c4, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6,
+  /* 0x90 */
+  0x00d6, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc,
+  /* 0xa0 */
+  0x00dc, 0x00a8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3,
+  /* 0xb0 */
+  0xfffd, 0x03ac, 0x03ad, 0x03ae, 0x03ca, 0x03af, 0x03cc, 0x03cd,
+  0x03cb, 0x03ce, 0x03c2, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8,
+  /* 0xc0 */
+  0x00b8, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x03c9, 0x00e2, 0x00e0, 0x00e4, 0x00ea,
+  /* 0xd0 */
+  0x00b4, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b1, 0x00e9, 0x00e8, 0x00eb, 0x00ee, 0x00ef,
+  /* 0xe0 */
+  0x00b0, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00bd, 0x00f6, 0x00f4, 0x00fb, 0x00f9, 0x00fc,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00ff, 0x00e7, 0x00c7, 0xfffd, 0xfffd, 0x009f,
+};
+
+static int
+ebcdic423_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  unsigned short wc = ebcdic423_2uni[c];
+  if (wc != 0xfffd) {
+    *pwc = (ucs4_t) wc;
+    return 1;
+  }
+  return RET_ILSEQ;
+}
+
+static const unsigned char ebcdic423_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0x00, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x4a, 0x00, 0x5a, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0x00, 0x6a, 0x00, 0x00, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x74, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x7c, /* 0xa0-0xa7 */
+  0xa1, 0x00, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, /* 0xa8-0xaf */
+  0xe0, 0xda, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+  0xc0, 0x00, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, /* 0xb8-0xbf */
+  0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xfc, /* 0xc0-0xc7 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, /* 0xd0-0xd7 */
+  0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+  0xcd, 0x00, 0xcc, 0x00, 0xce, 0x00, 0x00, 0xfb, /* 0xe0-0xe7 */
+  0xdc, 0xdb, 0xcf, 0xdd, 0x00, 0x00, 0xde, 0xdf, /* 0xe8-0xef */
+  0x00, 0x00, 0x00, 0x00, 0xec, 0x00, 0xeb, 0x00, /* 0xf0-0xf7 */
+  0x00, 0xee, 0x00, 0xed, 0xef, 0x00, 0x00, 0xfa, /* 0xf8-0xff */
+};
+static const unsigned char ebcdic423_page03[80] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x00, /* 0x80-0x87 */
+  0x72, 0x73, 0x75, 0x00, 0x76, 0x00, 0x77, 0x78, /* 0x88-0x8f */
+  0x00, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0x90-0x97 */
+  0x48, 0x49, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, /* 0x98-0x9f */
+  0x57, 0x58, 0x00, 0x59, 0x62, 0x63, 0x64, 0x65, /* 0xa0-0xa7 */
+  0x66, 0x67, 0x00, 0x00, 0xb1, 0xb2, 0xb3, 0xb5, /* 0xa8-0xaf */
+  0x00, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x9a, /* 0xb0-0xb7 */
+  0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xaa, 0xab, 0xac, /* 0xb8-0xbf */
+  0xad, 0xae, 0xba, 0xaf, 0xbb, 0xbc, 0xbd, 0xbe, /* 0xc0-0xc7 */
+  0xbf, 0xcb, 0xb4, 0xb8, 0xb6, 0xb7, 0xb9, 0x00, /* 0xc8-0xcf */
+};
+
+static int
+ebcdic423_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic423_page00[wc];
+  else if (wc >= 0x0380 && wc < 0x03d0)
+    c = ebcdic423_page03[wc-0x0380];
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic424.h b/lib/ebcdic424.h
new file mode 100644
index 0000000..f426e89
--- /dev/null
+++ b/lib/ebcdic424.h
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-424
+ */
+
+static const unsigned short ebcdic424_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6,
+  0x05d7, 0x05d8, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c,
+  /* 0x50 */
+  0x0026, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
+  0x05e0, 0x05e1, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac,
+  /* 0x60 */
+  0x002d, 0x002f, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
+  0x05e8, 0x05e9, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0xfffd, 0x05ea, 0xfffd, 0xfffd, 0x00a0, 0xfffd, 0xfffd, 0xfffd,
+  0x2017, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0xfffd, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0xfffd, 0xfffd, 0xfffd, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0xfffd, 0xfffd, 0xfffd, 0x00b8, 0xfffd, 0x00a4,
+  /* 0xa0 */
+  0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00ae,
+  /* 0xb0 */
+  0x005e, 0x00a3, 0x00a5, 0x2022, 0x00a9, 0x00a7, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x005b, 0x005d, 0x203e, 0x00a8, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+  /* 0xe0 */
+  0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x009f,
+};
+
+static int
+ebcdic424_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  unsigned short wc = ebcdic424_2uni[c];
+  if (wc != 0xfffd) {
+    *pwc = (ucs4_t) wc;
+    return 1;
+  }
+  return RET_ILSEQ;
+}
+
+static const unsigned char ebcdic424_page00[248] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0xba, 0xe0, 0xbb, 0xb0, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x74, 0x00, 0x4a, 0xb1, 0x9f, 0xb2, 0x6a, 0xb5, /* 0xa0-0xa7 */
+  0xbd, 0xb4, 0x00, 0x8a, 0x5f, 0xca, 0xaf, 0x00, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0x00, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x00, 0x8b, 0xb7, 0xb8, 0xb9, 0x00, /* 0xb8-0xbf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, /* 0xd0-0xd7 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, /* 0xf0-0xf7 */
+};
+static const unsigned char ebcdic424_page05[32] = {
+  0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, /* 0xd0-0xd7 */
+  0x49, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, /* 0xd8-0xdf */
+  0x58, 0x59, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, /* 0xe0-0xe7 */
+  0x68, 0x69, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+};
+static const unsigned char ebcdic424_page20[48] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, /* 0x10-0x17 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+  0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x00, /* 0x38-0x3f */
+};
+
+static int
+ebcdic424_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x00f8)
+    c = ebcdic424_page00[wc];
+  else if (wc >= 0x05d0 && wc < 0x05f0)
+    c = ebcdic424_page05[wc-0x05d0];
+  else if (wc >= 0x2010 && wc < 0x2040)
+    c = ebcdic424_page20[wc-0x2010];
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic425.h b/lib/ebcdic425.h
new file mode 100644
index 0000000..d2f04b1
--- /dev/null
+++ b/lib/ebcdic425.h
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-425
+ */
+
+static const unsigned short ebcdic425_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x060c, 0x00e0, 0x061b, 0x0640, 0x061f,
+  0x00e7, 0x0621, 0x0622, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x0623, 0x00ee, 0x00ef,
+  0x0624, 0x0625, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x0626, 0x00c0, 0x0627, 0x0628, 0x0629,
+  0x00c7, 0x062a, 0x062b, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x062c, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x062d, 0x00ce, 0x00cf,
+  0x062e, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x062f, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x0630, 0x0631, 0x0632, 0x0633,
+  /* 0x90 */
+  0x0634, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x0635, 0x0636, 0x00e6, 0x0637, 0x00c6, 0x20ac,
+  /* 0xa0 */
+  0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x0638, 0x0639, 0x063a, 0x005b, 0x0641, 0x0642,
+  /* 0xb0 */
+  0x0643, 0x0644, 0x0645, 0x0646, 0x00a9, 0x00a7, 0x0647, 0x0152,
+  0x0153, 0x0178, 0x0648, 0x0649, 0x064a, 0x005d, 0x064b, 0x00d7,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x064c, 0x064d, 0x064e, 0x064f,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x0650, 0x00fb, 0x00fc, 0x00f9, 0x0651, 0x00ff,
+  /* 0xe0 */
+  0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x0652, 0x00d4, 0x200c, 0x200d, 0x200e, 0x200f,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0xfffd, 0x00db, 0x00dc, 0x00d9, 0x00a4, 0x009f,
+};
+
+static int
+ebcdic425_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  unsigned short wc = ebcdic425_2uni[c];
+  if (wc != 0xfffd) {
+    *pwc = (ucs4_t) wc;
+    return 1;
+  }
+  return RET_ILSEQ;
+}
+
+static const unsigned char ebcdic425_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0xad, 0xe0, 0xbd, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xb5, /* 0xa0-0xa7 */
+  0x00, 0xb4, 0x00, 0x8a, 0x00, 0xca, 0x00, 0x00, /* 0xa8-0xaf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, /* 0xb0-0xb7 */
+  0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+  0x64, 0x00, 0x62, 0x00, 0x00, 0x00, 0x9e, 0x68, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x00, 0x00, 0x76, 0x77, /* 0xc8-0xcf */
+  0x00, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0xbf, /* 0xd0-0xd7 */
+  0x00, 0xfd, 0x00, 0xfb, 0xfc, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+  0x44, 0x00, 0x42, 0x00, 0x00, 0x00, 0x9c, 0x48, /* 0xe0-0xe7 */
+  0x54, 0x51, 0x52, 0x53, 0x00, 0x00, 0x56, 0x57, /* 0xe8-0xef */
+  0x00, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0xe1, /* 0xf0-0xf7 */
+  0x00, 0xdd, 0x00, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xf8-0xff */
+};
+static const unsigned char ebcdic425_page01[48] = {
+  0x00, 0x00, 0xb7, 0xb8, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+  0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+};
+static const unsigned char ebcdic425_page06[80] = {
+  0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+  0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x47, /* 0x18-0x1f */
+  0x00, 0x49, 0x4a, 0x55, 0x58, 0x59, 0x63, 0x65, /* 0x20-0x27 */
+  0x66, 0x67, 0x69, 0x6a, 0x70, 0x75, 0x78, 0x80, /* 0x28-0x2f */
+  0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x9a, 0x9b, 0x9d, /* 0x30-0x37 */
+  0xaa, 0xab, 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+  0x46, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb6, /* 0x40-0x47 */
+  0xba, 0xbb, 0xbc, 0xbe, 0xcc, 0xcd, 0xce, 0xcf, /* 0x48-0x4f */
+  0xda, 0xde, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+};
+static const unsigned char ebcdic425_page20[8] = {
+  0x00, 0x00, 0x00, 0x00, 0xec, 0xed, 0xee, 0xef, /* 0x08-0x0f */
+};
+
+static int
+ebcdic425_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic425_page00[wc];
+  else if (wc >= 0x0150 && wc < 0x0180)
+    c = ebcdic425_page01[wc-0x0150];
+  else if (wc >= 0x0608 && wc < 0x0658)
+    c = ebcdic425_page06[wc-0x0608];
+  else if (wc >= 0x2008 && wc < 0x2010)
+    c = ebcdic425_page20[wc-0x2008];
+  else if (wc == 0x20ac)
+    c = 0x9f;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic4971.h b/lib/ebcdic4971.h
new file mode 100644
index 0000000..0fa4683
--- /dev/null
+++ b/lib/ebcdic4971.h
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-4971
+ */
+
+static const unsigned short ebcdic4971_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
+  0x0398, 0x0399, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
+  0x03a1, 0x03a3, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
+  0x03aa, 0x03ab, 0x007c, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00a8, 0x0386, 0x0388, 0x0389, 0x00a0, 0x038a, 0x038c, 0x038e,
+  0x038f, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x0385, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc,
+  /* 0xa0 */
+  0x00b4, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3,
+  /* 0xb0 */
+  0x00a3, 0x03ac, 0x03ad, 0x03ae, 0x03ca, 0x03af, 0x03cc, 0x03cd,
+  0x03cb, 0x03ce, 0x03c2, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x03c9, 0x0390, 0x03b0, 0x2018, 0x2015,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b1, 0x00bd, 0xfffd, 0x0387, 0x2019, 0x00a6,
+  /* 0xe0 */
+  0x005c, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00a7, 0xfffd, 0xfffd, 0x00ab, 0x00ac,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00a9, 0x20ac, 0xfffd, 0x00bb, 0x009f,
+};
+
+static int
+ebcdic4971_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  unsigned short wc = ebcdic4971_2uni[c];
+  if (wc != 0xfffd) {
+    *pwc = (ucs4_t) wc;
+    return 1;
+  }
+  return RET_ILSEQ;
+}
+
+static const unsigned char ebcdic4971_page00[192] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x4a, 0xe0, 0x5a, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x6a, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x74, 0x00, 0x00, 0xb0, 0x00, 0x00, 0xdf, 0xeb, /* 0xa0-0xa7 */
+  0x70, 0xfb, 0x00, 0xee, 0xef, 0xca, 0x00, 0x00, /* 0xa8-0xaf */
+  0x90, 0xda, 0xea, 0xfa, 0xa0, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+  0x00, 0x00, 0x00, 0xfe, 0x00, 0xdb, 0x00, 0x00, /* 0xb8-0xbf */
+};
+static const unsigned char ebcdic4971_page03[80] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x71, 0xdd, /* 0x80-0x87 */
+  0x72, 0x73, 0x75, 0x00, 0x76, 0x00, 0x77, 0x78, /* 0x88-0x8f */
+  0xcc, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0x90-0x97 */
+  0x48, 0x49, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, /* 0x98-0x9f */
+  0x57, 0x58, 0x00, 0x59, 0x62, 0x63, 0x64, 0x65, /* 0xa0-0xa7 */
+  0x66, 0x67, 0x68, 0x69, 0xb1, 0xb2, 0xb3, 0xb5, /* 0xa8-0xaf */
+  0xcd, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x9a, /* 0xb0-0xb7 */
+  0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xaa, 0xab, 0xac, /* 0xb8-0xbf */
+  0xad, 0xae, 0xba, 0xaf, 0xbb, 0xbc, 0xbd, 0xbe, /* 0xc0-0xc7 */
+  0xbf, 0xcb, 0xb4, 0xb8, 0xb6, 0xb7, 0xb9, 0x00, /* 0xc8-0xcf */
+};
+static const unsigned char ebcdic4971_page20[16] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, /* 0x10-0x17 */
+  0xce, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+};
+
+static int
+ebcdic4971_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x00c0)
+    c = ebcdic4971_page00[wc];
+  else if (wc >= 0x0380 && wc < 0x03d0)
+    c = ebcdic4971_page03[wc-0x0380];
+  else if (wc >= 0x2010 && wc < 0x2020)
+    c = ebcdic4971_page20[wc-0x2010];
+  else if (wc == 0x20ac)
+    c = 0xfc;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic500.h b/lib/ebcdic500.h
new file mode 100644
index 0000000..4270513
--- /dev/null
+++ b/lib/ebcdic500.h
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-500
+ */
+
+static const unsigned short ebcdic500_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5,
+  0x00e7, 0x00f1, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+  0x00ec, 0x00df, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5,
+  0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4,
+  /* 0xa0 */
+  0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x00dd, 0x00de, 0x00ae,
+  /* 0xb0 */
+  0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic500_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic500_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic500_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x4a, 0xe0, 0x5a, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0xbb, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0xb0, 0xb1, 0x9f, 0xb2, 0x6a, 0xb5, /* 0xa0-0xa7 */
+  0xbd, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0xae, 0x59, /* 0xd8-0xdf */
+  0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48, /* 0xe0-0xe7 */
+  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */
+};
+
+static int
+ebcdic500_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic500_page00[wc];
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic838.h b/lib/ebcdic838.h
new file mode 100644
index 0000000..99911bd
--- /dev/null
+++ b/lib/ebcdic838.h
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-838
+ */
+
+static const unsigned short ebcdic838_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06,
+  0x0e07, 0x005b, 0x00a2, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c,
+  /* 0x50 */
+  0x0026, 0x0e48, 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d,
+  0x0e0e, 0x005d, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x00ac,
+  /* 0x60 */
+  0x002d, 0x002f, 0x0e0f, 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14,
+  0x0e15, 0x005e, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x0e3f, 0x0e4e, 0x0e16, 0x0e17, 0x0e18, 0x0e19, 0x0e1a, 0x0e1b,
+  0x0e1c, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x0e4f, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x0e1d, 0x0e1e, 0x0e1f, 0x0e20, 0x0e21, 0x0e22,
+  /* 0x90 */
+  0x0e5a, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27, 0x0e28,
+  /* 0xa0 */
+  0x0e5b, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e,
+  /* 0xb0 */
+  0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57,
+  0x0e58, 0x0e59, 0x0e2f, 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x0e49, 0x0e35, 0x0e36, 0x0e37, 0x0e38, 0x0e39,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x0e3a, 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44,
+  /* 0xe0 */
+  0x005c, 0x0e4a, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x0e45, 0x0e46, 0x0e47, 0x0e48, 0x0e49, 0x0e4a,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4b, 0x0e4c, 0x009f,
+};
+
+static int
+ebcdic838_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic838_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic838_page00[176] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x49, 0xe0, 0x59, 0x69, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x6a, 0x00, /* 0xa0-0xa7 */
+  0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
+};
+static const unsigned char ebcdic838_page0e[96] = {
+  0x00, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, /* 0x00-0x07 */
+  0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x62, /* 0x08-0x0f */
+  0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x72, 0x73, /* 0x10-0x17 */
+  0x74, 0x75, 0x76, 0x77, 0x78, 0x8a, 0x8b, 0x8c, /* 0x18-0x1f */
+  0x8d, 0x8e, 0x8f, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, /* 0x20-0x27 */
+  0x9f, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xba, /* 0x28-0x2f */
+  0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xcb, 0xcc, 0xcd, /* 0x30-0x37 */
+  0xce, 0xcf, 0xda, 0x00, 0x00, 0x00, 0x00, 0x70, /* 0x38-0x3f */
+  0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xea, 0xeb, 0xec, /* 0x40-0x47 */
+  0xed, 0xee, 0xef, 0xfa, 0xfb, 0xfc, 0x71, 0x80, /* 0x48-0x4f */
+  0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x50-0x57 */
+  0xb8, 0xb9, 0x90, 0xa0, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+};
+
+static int
+ebcdic838_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x00b0)
+    c = ebcdic838_page00[wc];
+  else if (wc >= 0x0e00 && wc < 0x0e60)
+    c = ebcdic838_page0e[wc-0x0e00];
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic870.h b/lib/ebcdic870.h
new file mode 100644
index 0000000..8b14f83
--- /dev/null
+++ b/lib/ebcdic870.h
@@ -0,0 +1,154 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-870
+ */
+
+static const unsigned short ebcdic870_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x0163, 0x00e1, 0x0103, 0x010d,
+  0x00e7, 0x0107, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x0119, 0x00eb, 0x016f, 0x00ed, 0x00ee, 0x013e,
+  0x013a, 0x00df, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x02dd, 0x00c1, 0x0102, 0x010c,
+  0x00c7, 0x0106, 0x007c, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x02c7, 0x00c9, 0x0118, 0x00cb, 0x016e, 0x00cd, 0x00ce, 0x013d,
+  0x0139, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x02d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x015b, 0x0148, 0x0111, 0x00fd, 0x0159, 0x015f,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x0142, 0x0144, 0x0161, 0x00b8, 0x02db, 0x00a4,
+  /* 0xa0 */
+  0x0105, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x015a, 0x0147, 0x0110, 0x00dd, 0x0158, 0x015e,
+  /* 0xb0 */
+  0x02d9, 0x0104, 0x017c, 0x0162, 0x017b, 0x00a7, 0x017e, 0x017a,
+  0x017d, 0x0179, 0x0141, 0x0143, 0x0160, 0x00a8, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x0155, 0x00f3, 0x0151,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x011a, 0x0171, 0x00fc, 0x0165, 0x00fa, 0x011b,
+  /* 0xe0 */
+  0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x010f, 0x00d4, 0x00d6, 0x0154, 0x00d3, 0x0150,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x010e, 0x0170, 0x00dc, 0x0164, 0x00da, 0x009f,
+};
+
+static int
+ebcdic870_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic870_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic870_page00[384] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x4a, 0xe0, 0x5a, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x6a, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0xb5, /* 0xa0-0xa7 */
+  0xbd, 0x00, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, /* 0xa8-0xaf */
+  0x90, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+  0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+  0x00, 0x65, 0x62, 0x00, 0x63, 0x00, 0x00, 0x68, /* 0xc0-0xc7 */
+  0x00, 0x71, 0x00, 0x73, 0x00, 0x75, 0x76, 0x00, /* 0xc8-0xcf */
+  0x00, 0x00, 0x00, 0xee, 0xeb, 0x00, 0xec, 0xbf, /* 0xd0-0xd7 */
+  0x00, 0x00, 0xfe, 0x00, 0xfc, 0xad, 0x00, 0x59, /* 0xd8-0xdf */
+  0x00, 0x45, 0x42, 0x00, 0x43, 0x00, 0x00, 0x48, /* 0xe0-0xe7 */
+  0x00, 0x51, 0x00, 0x53, 0x00, 0x55, 0x56, 0x00, /* 0xe8-0xef */
+  0x00, 0x00, 0x00, 0xce, 0xcb, 0x00, 0xcc, 0xe1, /* 0xf0-0xf7 */
+  0x00, 0x00, 0xde, 0x00, 0xdc, 0x8d, 0x00, 0x00, /* 0xf8-0xff */
+  /* 0x0100 */
+  0x00, 0x00, 0x66, 0x46, 0xb1, 0xa0, 0x69, 0x49, /* 0x00-0x07 */
+  0x00, 0x00, 0x00, 0x00, 0x67, 0x47, 0xfa, 0xea, /* 0x08-0x0f */
+  0xac, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+  0x72, 0x52, 0xda, 0xdf, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+  0x00, 0x78, 0x58, 0x00, 0x00, 0x77, 0x57, 0x00, /* 0x38-0x3f */
+  0x00, 0xba, 0x9a, 0xbb, 0x9b, 0x00, 0x00, 0xab, /* 0x40-0x47 */
+  0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+  0xef, 0xcf, 0x00, 0x00, 0xed, 0xcd, 0x00, 0x00, /* 0x50-0x57 */
+  0xae, 0x8e, 0xaa, 0x8a, 0x00, 0x00, 0xaf, 0x8f, /* 0x58-0x5f */
+  0xbc, 0x9c, 0xb3, 0x44, 0xfd, 0xdd, 0x00, 0x00, /* 0x60-0x67 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x54, /* 0x68-0x6f */
+  0xfb, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+  0x00, 0xb9, 0xb7, 0xb4, 0xb2, 0xb8, 0xb6, 0x00, /* 0x78-0x7f */
+};
+static const unsigned char ebcdic870_page02[32] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, /* 0xc0-0xc7 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+  0x80, 0xb0, 0x00, 0x9e, 0x00, 0x64, 0x00, 0x00, /* 0xd8-0xdf */
+};
+
+static int
+ebcdic870_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0180)
+    c = ebcdic870_page00[wc];
+  else if (wc >= 0x02c0 && wc < 0x02e0)
+    c = ebcdic870_page02[wc-0x02c0];
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic871.h b/lib/ebcdic871.h
new file mode 100644
index 0000000..0e091cd
--- /dev/null
+++ b/lib/ebcdic871.h
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-871
+ */
+
+static const unsigned short ebcdic871_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5,
+  0x00e7, 0x00f1, 0x00de, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+  0x00ec, 0x00df, 0x00c6, 0x0024, 0x002a, 0x0029, 0x003b, 0x00d6,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5,
+  0x00c7, 0x00d1, 0x00a6, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x00f0, 0x003a, 0x0023, 0x00d0, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x0060, 0x00fd, 0x007b, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x007d, 0x00b8, 0x005d, 0x00a4,
+  /* 0xa0 */
+  0x00b5, 0x00f6, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x0040, 0x00dd, 0x005b, 0x00ae,
+  /* 0xb0 */
+  0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc,
+  0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x005c, 0x00d7,
+  /* 0xc0 */
+  0x00fe, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x007e, 0x00f2, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x00e6, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x00b4, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x005e, 0x00d2, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic871_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic871_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic871_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0xac, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0xae, 0xbe, 0x9e, 0xec, 0x6d, /* 0x58-0x5f */
+  0x8c, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0x8e, 0xbb, 0x9c, 0xcc, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0xb0, 0xb1, 0x9f, 0xb2, 0x6a, 0xb5, /* 0xa0-0xa7 */
+  0xbd, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0xe0, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x5a, 0x68, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0x7c, 0x69, 0xed, 0xee, 0xeb, 0xef, 0x5f, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0x4a, 0x59, /* 0xd8-0xdf */
+  0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0xd0, 0x48, /* 0xe0-0xe7 */
+  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x79, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xa1, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0xc0, 0xdf, /* 0xf8-0xff */
+};
+
+static int
+ebcdic871_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic871_page00[wc];
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic875.h b/lib/ebcdic875.h
new file mode 100644
index 0000000..dee3f46
--- /dev/null
+++ b/lib/ebcdic875.h
@@ -0,0 +1,145 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-875
+ */
+
+static const unsigned short ebcdic875_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
+  0x0398, 0x0399, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
+  0x03a1, 0x03a3, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
+  0x03aa, 0x03ab, 0x007c, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00a8, 0x0386, 0x0388, 0x0389, 0x00a0, 0x038a, 0x038c, 0x038e,
+  0x038f, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x0385, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc,
+  /* 0xa0 */
+  0x00b4, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3,
+  /* 0xb0 */
+  0x00a3, 0x03ac, 0x03ad, 0x03ae, 0x03ca, 0x03af, 0x03cc, 0x03cd,
+  0x03cb, 0x03ce, 0x03c2, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x03c9, 0x0390, 0x03b0, 0x2018, 0x2015,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b1, 0x00bd, 0xfffd, 0x0387, 0x2019, 0x00a6,
+  /* 0xe0 */
+  0x005c, 0xfffd, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00a7, 0xfffd, 0xfffd, 0x00ab, 0x00ac,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00a9, 0xfffd, 0xfffd, 0x00bb, 0x009f,
+};
+
+static int
+ebcdic875_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  unsigned short wc = ebcdic875_2uni[c];
+  if (wc != 0xfffd) {
+    *pwc = (ucs4_t) wc;
+    return 1;
+  }
+  return RET_ILSEQ;
+}
+
+static const unsigned char ebcdic875_page00[192] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x4a, 0xe0, 0x5a, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x6a, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x74, 0x00, 0x00, 0xb0, 0x00, 0x00, 0xdf, 0xeb, /* 0xa0-0xa7 */
+  0x70, 0xfb, 0x00, 0xee, 0xef, 0xca, 0x00, 0x00, /* 0xa8-0xaf */
+  0x90, 0xda, 0xea, 0xfa, 0xa0, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+  0x00, 0x00, 0x00, 0xfe, 0x00, 0xdb, 0x00, 0x00, /* 0xb8-0xbf */
+};
+static const unsigned char ebcdic875_page03[80] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x71, 0xdd, /* 0x80-0x87 */
+  0x72, 0x73, 0x75, 0x00, 0x76, 0x00, 0x77, 0x78, /* 0x88-0x8f */
+  0xcc, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0x90-0x97 */
+  0x48, 0x49, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, /* 0x98-0x9f */
+  0x57, 0x58, 0x00, 0x59, 0x62, 0x63, 0x64, 0x65, /* 0xa0-0xa7 */
+  0x66, 0x67, 0x68, 0x69, 0xb1, 0xb2, 0xb3, 0xb5, /* 0xa8-0xaf */
+  0xcd, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x9a, /* 0xb0-0xb7 */
+  0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xaa, 0xab, 0xac, /* 0xb8-0xbf */
+  0xad, 0xae, 0xba, 0xaf, 0xbb, 0xbc, 0xbd, 0xbe, /* 0xc0-0xc7 */
+  0xbf, 0xcb, 0xb4, 0xb8, 0xb6, 0xb7, 0xb9, 0x00, /* 0xc8-0xcf */
+};
+static const unsigned char ebcdic875_page20[16] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, /* 0x10-0x17 */
+  0xce, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+};
+
+static int
+ebcdic875_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x00c0)
+    c = ebcdic875_page00[wc];
+  else if (wc >= 0x0380 && wc < 0x03d0)
+    c = ebcdic875_page03[wc-0x0380];
+  else if (wc >= 0x2010 && wc < 0x2020)
+    c = ebcdic875_page20[wc-0x2010];
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic880.h b/lib/ebcdic880.h
new file mode 100644
index 0000000..bcadc52
--- /dev/null
+++ b/lib/ebcdic880.h
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-880
+ */
+
+static const unsigned short ebcdic880_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x0452, 0x0453, 0x0451, 0x0454, 0x0455, 0x0456,
+  0x0457, 0x0458, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x0459, 0x045a, 0x045b, 0x045c, 0x045e, 0x045f, 0x042a,
+  0x2116, 0x0402, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x0403, 0x0401, 0x0404, 0x0405, 0x0406, 0x0407,
+  0x0408, 0x0409, 0x007c, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f, 0x044e, 0x0430,
+  0x0431, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x0446, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 0x0438,
+  /* 0x90 */
+  0x0439, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+  /* 0xa0 */
+  0x044f, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
+  /* 0xb0 */
+  0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
+  0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x041d, 0x041e, 0x041f, 0x042f, 0x0420, 0x0421,
+  /* 0xe0 */
+  0x005c, 0x00a4, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x0422, 0x0423, 0x0416, 0x0412, 0x042c, 0x042b,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x009f,
+};
+
+static int
+ebcdic880_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic880_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic880_page00[176] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x4a, 0xe0, 0x5a, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x6a, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, /* 0xa8-0xaf */
+};
+static const unsigned char ebcdic880_page04[96] = {
+  0x00, 0x63, 0x59, 0x62, 0x64, 0x65, 0x66, 0x67, /* 0x00-0x07 */
+  0x68, 0x69, 0x70, 0x71, 0x72, 0x00, 0x74, 0x75, /* 0x08-0x0f */
+  0xb9, 0xba, 0xed, 0xbf, 0xbc, 0xbd, 0xec, 0xfa, /* 0x10-0x17 */
+  0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xda, 0xdb, 0xdc, /* 0x18-0x1f */
+  0xde, 0xdf, 0xea, 0xeb, 0xbe, 0xca, 0xbb, 0xfe, /* 0x20-0x27 */
+  0xfb, 0xfd, 0x57, 0xef, 0xee, 0xfc, 0xb8, 0xdd, /* 0x28-0x2f */
+  0x77, 0x78, 0xaf, 0x8d, 0x8a, 0x8b, 0xae, 0xb2, /* 0x30-0x37 */
+  0x8f, 0x90, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, /* 0x38-0x3f */
+  0xaa, 0xab, 0xac, 0xad, 0x8c, 0x8e, 0x80, 0xb6, /* 0x40-0x47 */
+  0xb3, 0xb5, 0xb7, 0xb1, 0xb0, 0xb4, 0x76, 0xa0, /* 0x48-0x4f */
+  0x00, 0x44, 0x42, 0x43, 0x45, 0x46, 0x47, 0x48, /* 0x50-0x57 */
+  0x49, 0x51, 0x52, 0x53, 0x54, 0x00, 0x55, 0x56, /* 0x58-0x5f */
+};
+
+static int
+ebcdic880_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x00b0)
+    c = ebcdic880_page00[wc];
+  else if (wc >= 0x0400 && wc < 0x0460)
+    c = ebcdic880_page04[wc-0x0400];
+  else if (wc == 0x2116)
+    c = 0x58;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic905.h b/lib/ebcdic905.h
new file mode 100644
index 0000000..6041c99
--- /dev/null
+++ b/lib/ebcdic905.h
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-905
+ */
+
+static const unsigned short ebcdic905_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0xfffd, 0x010b,
+  0x007b, 0x00f1, 0x00c7, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+  0x00ec, 0x00df, 0x011e, 0x0130, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0xfffd, 0x010a,
+  0x005b, 0x00d1, 0x015f, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0xfffd, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x0131, 0x003a, 0x00d6, 0x015e, 0x0027, 0x003d, 0x00dc,
+  /* 0x80 */
+  0x02d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x0127, 0x0109, 0x015d, 0x016d, 0xfffd, 0x007c,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x0125, 0x011d, 0x0135, 0x00b8, 0xfffd, 0x00a4,
+  /* 0xa0 */
+  0x00b5, 0x00f6, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x0126, 0x0108, 0x015c, 0x016c, 0xfffd, 0x0040,
+  /* 0xb0 */
+  0x02d9, 0x00a3, 0x017c, 0x007d, 0x017b, 0x00a7, 0x005d, 0x00b7,
+  0x00bd, 0x0024, 0x0124, 0x011c, 0x0134, 0x00a8, 0x00b4, 0x00d7,
+  /* 0xc0 */
+  0x00e7, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x007e, 0x00f2, 0x00f3, 0x0121,
+  /* 0xd0 */
+  0x011f, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x0060, 0x00fb, 0x005c, 0x00f9, 0x00fa, 0xfffd,
+  /* 0xe0 */
+  0x00fc, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x0023, 0x00d2, 0x00d3, 0x0120,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x0022, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic905_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  unsigned short wc = ebcdic905_2uni[c];
+  if (wc != 0xfffd) {
+    *pwc = (ucs4_t) wc;
+    return 1;
+  }
+  return RET_ILSEQ;
+}
+
+static const unsigned char ebcdic905_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x4f, 0xfc, 0xec, 0xb9, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0xaf, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0x68, 0xdc, 0xb6, 0x5f, 0x6d, /* 0x58-0x5f */
+  0xda, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0x48, 0x8f, 0xb3, 0xcc, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0x00, 0x00, 0xb1, 0x9f, 0x00, 0x00, 0xb5, /* 0xa0-0xa7 */
+  0xbd, 0x00, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, /* 0xa8-0xaf */
+  0x90, 0x00, 0xea, 0xfa, 0xbe, 0xa0, 0x00, 0xb7, /* 0xb0-0xb7 */
+  0x9d, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x00, 0x63, 0x00, 0x00, 0x4a, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0x00, 0x69, 0xed, 0xee, 0xeb, 0x00, 0x7b, 0xbf, /* 0xd0-0xd7 */
+  0x00, 0xfd, 0xfe, 0xfb, 0x7f, 0x00, 0x00, 0x59, /* 0xd8-0xdf */
+  0x44, 0x45, 0x42, 0x00, 0x43, 0x00, 0x00, 0xc0, /* 0xe0-0xe7 */
+  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x00, 0x49, 0xcd, 0xce, 0xcb, 0x00, 0xa1, 0xe1, /* 0xf0-0xf7 */
+  0x00, 0xdd, 0xde, 0xdb, 0xe0, 0x00, 0x00, 0x00, /* 0xf8-0xff */
+};
+static const unsigned char ebcdic905_page01[120] = {
+  0xab, 0x8b, 0x67, 0x47, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+  0x00, 0x00, 0x00, 0x00, 0xbb, 0x9b, 0x5a, 0xd0, /* 0x18-0x1f */
+  0xef, 0xcf, 0x00, 0x00, 0xba, 0x9a, 0xaa, 0x8a, /* 0x20-0x27 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+  0x5b, 0x79, 0x00, 0x00, 0xbc, 0x9c, 0x00, 0x00, /* 0x30-0x37 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+  0x00, 0x00, 0x00, 0x00, 0xac, 0x8c, 0x7c, 0x6a, /* 0x58-0x5f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+  0x00, 0x00, 0x00, 0x00, 0xad, 0x8d, 0x00, 0x00, /* 0x68-0x6f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+  0x00, 0x00, 0x00, 0xb4, 0xb2, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+};
+static const unsigned char ebcdic905_page02[8] = {
+  0x80, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+};
+
+static int
+ebcdic905_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic905_page00[wc];
+  else if (wc >= 0x0108 && wc < 0x0180)
+    c = ebcdic905_page01[wc-0x0108];
+  else if (wc >= 0x02d8 && wc < 0x02e0)
+    c = ebcdic905_page02[wc-0x02d8];
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/ebcdic924.h b/lib/ebcdic924.h
new file mode 100644
index 0000000..cc7cd7c
--- /dev/null
+++ b/lib/ebcdic924.h
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 1999-2022 Free Software Foundation, Inc.
+ * This file is part of the GNU LIBICONV Library.
+ *
+ * The GNU LIBICONV Library is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * The GNU LIBICONV Library is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+ * If not, see <https://www.gnu.org/licenses/>.
+ */
+
+/*
+ * IBM-924
+ */
+
+static const unsigned short ebcdic924_2uni[256] = {
+  /* 0x00 */
+  0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f,
+  0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+  /* 0x10 */
+  0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087,
+  0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f,
+  /* 0x20 */
+  0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b,
+  0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007,
+  /* 0x30 */
+  0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004,
+  0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a,
+  /* 0x40 */
+  0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5,
+  0x00e7, 0x00f1, 0x00dd, 0x002e, 0x003c, 0x0028, 0x002b, 0x007c,
+  /* 0x50 */
+  0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef,
+  0x00ec, 0x00df, 0x0021, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e,
+  /* 0x60 */
+  0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5,
+  0x00c7, 0x00d1, 0x0160, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f,
+  /* 0x70 */
+  0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf,
+  0x00cc, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022,
+  /* 0x80 */
+  0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+  0x0068, 0x0069, 0x00ab, 0x00bb, 0x00f0, 0x00fd, 0x00fe, 0x00b1,
+  /* 0x90 */
+  0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070,
+  0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x017e, 0x00c6, 0x20ac,
+  /* 0xa0 */
+  0x00b5, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+  0x0079, 0x007a, 0x00a1, 0x00bf, 0x00d0, 0x005b, 0x00de, 0x00ae,
+  /* 0xb0 */
+  0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x0152,
+  0x0153, 0x0178, 0x00ac, 0x0161, 0x00af, 0x005d, 0x017d, 0x00d7,
+  /* 0xc0 */
+  0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+  0x0048, 0x0049, 0x00ad, 0x00f4, 0x00f6, 0x00f2, 0x00f3, 0x00f5,
+  /* 0xd0 */
+  0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+  0x0051, 0x0052, 0x00b9, 0x00fb, 0x00fc, 0x00f9, 0x00fa, 0x00ff,
+  /* 0xe0 */
+  0x005c, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+  0x0059, 0x005a, 0x00b2, 0x00d4, 0x00d6, 0x00d2, 0x00d3, 0x00d5,
+  /* 0xf0 */
+  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+  0x0038, 0x0039, 0x00b3, 0x00db, 0x00dc, 0x00d9, 0x00da, 0x009f,
+};
+
+static int
+ebcdic924_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
+{
+  unsigned char c = *s;
+  *pwc = (ucs4_t) ebcdic924_2uni[c];
+  return 1;
+}
+
+static const unsigned char ebcdic924_page00[256] = {
+  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 0x00-0x07 */
+  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
+  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 0x10-0x17 */
+  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
+  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 0x20-0x27 */
+  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* 0x28-0x2f */
+  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x30-0x37 */
+  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0x38-0x3f */
+  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x40-0x47 */
+  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* 0x48-0x4f */
+  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 0x50-0x57 */
+  0xe7, 0xe8, 0xe9, 0xad, 0xe0, 0xbd, 0x5f, 0x6d, /* 0x58-0x5f */
+  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x60-0x67 */
+  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* 0x68-0x6f */
+  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 0x70-0x77 */
+  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07, /* 0x78-0x7f */
+  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, /* 0x80-0x87 */
+  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, /* 0x88-0x8f */
+  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, /* 0x90-0x97 */
+  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, /* 0x98-0x9f */
+  0x41, 0xaa, 0xb0, 0xb1, 0x00, 0xb2, 0x00, 0xb5, /* 0xa0-0xa7 */
+  0x00, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xbc, /* 0xa8-0xaf */
+  0x90, 0x8f, 0xea, 0xfa, 0x00, 0xa0, 0xb6, 0xb3, /* 0xb0-0xb7 */
+  0x00, 0xda, 0x9b, 0x8b, 0x00, 0x00, 0x00, 0xab, /* 0xb8-0xbf */
+  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68, /* 0xc0-0xc7 */
+  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* 0xc8-0xcf */
+  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf, /* 0xd0-0xd7 */
+  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0x4a, 0xae, 0x59, /* 0xd8-0xdf */
+  0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48, /* 0xe0-0xe7 */
+  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* 0xe8-0xef */
+  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1, /* 0xf0-0xf7 */
+  0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf, /* 0xf8-0xff */
+};
+static const unsigned char ebcdic924_page01[48] = {
+  0x00, 0x00, 0xb7, 0xb8, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+  0x6a, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+  0xb9, 0x00, 0x00, 0x00, 0x00, 0xbe, 0x9d, 0x00, /* 0x78-0x7f */
+};
+
+static int
+ebcdic924_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, size_t n)
+{
+  unsigned char c = 0;
+  if (wc < 0x0100)
+    c = ebcdic924_page00[wc];
+  else if (wc >= 0x0150 && wc < 0x0180)
+    c = ebcdic924_page01[wc-0x0150];
+  else if (wc == 0x20ac)
+    c = 0x9f;
+  if (c != 0 || wc == 0) {
+    *r = c;
+    return 1;
+  }
+  return RET_ILUNI;
+}
diff --git a/lib/encodings_zos.def b/lib/encodings_zos.def
new file mode 100644
index 0000000..838b6be
--- /dev/null
+++ b/lib/encodings_zos.def
@@ -0,0 +1,471 @@
+/* Copyright (C) 2022 Free Software Foundation, Inc.
+   This file is part of the GNU LIBICONV Library.
+
+   The GNU LIBICONV Library is free software; you can redistribute it
+   and/or modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either version 2.1
+   of the License, or (at your option) any later version.
+
+   The GNU LIBICONV Library is distributed in the hope that it will be
+   useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU LIBICONV Library; see the file COPYING.LIB.
+   If not, see <https://www.gnu.org/licenses/>.  */
+
+/* Encodings used by system dependent locales on z/OS. */
+
+DEFENCODING(( "IBM-037",
+              "IBM037",                 /* IANA */
+              "CP037",                  /* IANA */
+              "EBCDIC-CP-US",           /* IANA */
+              "EBCDIC-CP-CA",           /* IANA */
+              "EBCDIC-CP-WT",           /* IANA */
+              "EBCDIC-CP-NL",           /* IANA */
+              "csIBM037",               /* IANA */
+            ),
+            ebcdic037,
+            { ebcdic037_mbtowc, NULL },   { ebcdic037_wctomb, NULL })
+
+DEFENCODING(( "IBM-273",
+              "IBM273",                 /* IANA */
+              "CP273",                  /* IANA */
+              "csIBM273",               /* IANA */
+            ),
+            ebcdic273,
+            { ebcdic273_mbtowc, NULL },   { ebcdic273_wctomb, NULL })
+
+DEFENCODING(( "IBM-277",
+              "IBM277",                 /* IANA */
+              "EBCDIC-CP-DK",           /* IANA */
+              "EBCDIC-CP-NO",           /* IANA */
+              "csIBM277",               /* IANA */
+            ),
+            ebcdic277,
+            { ebcdic277_mbtowc, NULL },   { ebcdic277_wctomb, NULL })
+
+DEFENCODING(( "IBM-278",
+              "IBM278",                 /* IANA */
+              "CP278",                  /* IANA */
+              "EBCDIC-CP-FI",           /* IANA */
+              "EBCDIC-CP-SE",           /* IANA */
+              "csIBM278",               /* IANA */
+            ),
+            ebcdic278,
+            { ebcdic278_mbtowc, NULL },   { ebcdic278_wctomb, NULL })
+
+DEFENCODING(( "IBM-280",
+              "IBM280",                 /* IANA */
+              "CP280",                  /* IANA */
+              "EBCDIC-CP-IT",           /* IANA */
+              "csIBM280",               /* IANA */
+            ),
+            ebcdic280,
+            { ebcdic280_mbtowc, NULL },   { ebcdic280_wctomb, NULL })
+
+DEFENCODING(( "IBM-282",
+              "IBM282",
+            ),
+            ebcdic282,
+            { ebcdic282_mbtowc, NULL },   { ebcdic282_wctomb, NULL })
+
+DEFENCODING(( "IBM-284",
+              "IBM284",                 /* IANA */
+              "CP284",                  /* IANA */
+              "EBCDIC-CP-ES",           /* IANA */
+              "csIBM284",               /* IANA */
+            ),
+            ebcdic284,
+            { ebcdic284_mbtowc, NULL },   { ebcdic284_wctomb, NULL })
+
+DEFENCODING(( "IBM-285",
+              "IBM285",                 /* IANA */
+              "CP285",                  /* IANA */
+              "EBCDIC-CP-GB",           /* IANA */
+              "csIBM285",               /* IANA */
+            ),
+            ebcdic285,
+            { ebcdic285_mbtowc, NULL },   { ebcdic285_wctomb, NULL })
+
+DEFENCODING(( "IBM-297",
+              "IBM297",                 /* IANA */
+              "CP297",                  /* IANA */
+              "EBCDIC-CP-FR",           /* IANA */
+              "csIBM297",               /* IANA */
+            ),
+            ebcdic297,
+            { ebcdic297_mbtowc, NULL },   { ebcdic297_wctomb, NULL })
+
+DEFENCODING(( "IBM-423",
+              "IBM423",                 /* IANA */
+              "CP423",                  /* IANA */
+              "EBCDIC-CP-GR",           /* IANA */
+              "csIBM423",               /* IANA */
+            ),
+            ebcdic423,
+            { ebcdic423_mbtowc, NULL },   { ebcdic423_wctomb, NULL })
+
+DEFENCODING(( "IBM-424",
+              "IBM424",                 /* IANA */
+              "CP424",                  /* IANA */
+              "EBCDIC-CP-HE",           /* IANA */
+              "csIBM424",               /* IANA */
+            ),
+            ebcdic424,
+            { ebcdic424_mbtowc, NULL },   { ebcdic424_wctomb, NULL })
+
+DEFENCODING(( "IBM-425",
+              "IBM425",
+            ),
+            ebcdic425,
+            { ebcdic425_mbtowc, NULL },   { ebcdic425_wctomb, NULL })
+
+DEFENCODING(( "IBM-500",
+              "IBM500",                 /* IANA */
+              "CP500",                  /* IANA */
+              "EBCDIC-CP-BE",           /* IANA */
+              "EBCDIC-CP-CH",           /* IANA */
+              "csIBM500",               /* IANA */
+            ),
+            ebcdic500,
+            { ebcdic500_mbtowc, NULL },   { ebcdic500_wctomb, NULL })
+
+DEFENCODING(( "IBM-838",
+              "IBM838",
+              "IBM-THAI",               /* IANA */
+              "csIBMThai",              /* IANA */
+            ),
+            ebcdic838,
+            { ebcdic838_mbtowc, NULL },   { ebcdic838_wctomb, NULL })
+
+DEFENCODING(( "IBM-870",
+              "IBM870",                 /* IANA */
+              "CP870",                  /* IANA */
+              "EBCDIC-CP-ROECE",        /* IANA */
+              "EBCDIC-CP-YU",           /* IANA */
+              "csIBM870",               /* IANA */
+            ),
+            ebcdic870,
+            { ebcdic870_mbtowc, NULL },   { ebcdic870_wctomb, NULL })
+
+DEFENCODING(( "IBM-871",
+              "IBM871",                 /* IANA */
+              "CP871",                  /* IANA */
+              "EBCDIC-CP-IS",           /* IANA */
+              "csIBM871",               /* IANA */
+            ),
+            ebcdic871,
+            { ebcdic871_mbtowc, NULL },   { ebcdic871_wctomb, NULL })
+
+DEFENCODING(( "IBM-875",
+              "IBM875",                 /* glibc */
+              "CP875",                  /* glibc */
+              "EBCDIC-GREEK",           /* glibc */
+            ),
+            ebcdic875,
+            { ebcdic875_mbtowc, NULL },   { ebcdic875_wctomb, NULL })
+
+DEFENCODING(( "IBM-880",
+              "IBM880",                 /* IANA */
+              "CP880",                  /* IANA */
+              "EBCDIC-CYRILLIC",        /* IANA */
+              "csIBM880",               /* IANA */
+            ),
+            ebcdic880,
+            { ebcdic880_mbtowc, NULL },   { ebcdic880_wctomb, NULL })
+
+DEFENCODING(( "IBM-905",
+              "IBM905",                 /* IANA */
+              "CP905",                  /* IANA */
+              "EBCDIC-CP-TR",           /* IANA */
+              "csIBM905",               /* IANA */
+            ),
+            ebcdic905,
+            { ebcdic905_mbtowc, NULL },   { ebcdic905_wctomb, NULL })
+
+DEFENCODING(( "IBM-924",
+              "IBM924",
+              "IBM00924",               /* IANA */
+              "CCSID00924",             /* IANA */
+              "CP00924",                /* IANA */
+              "EBCDIC-LATIN9-EURO",     /* IANA */
+              "csIBM00924",             /* IANA */
+            ),
+            ebcdic924,
+            { ebcdic924_mbtowc, NULL },   { ebcdic924_wctomb, NULL })
+
+DEFENCODING(( "IBM-1025",
+              "IBM1025",                /* glibc */
+              "CP1025",                 /* glibc */
+            ),
+            ebcdic1025,
+            { ebcdic1025_mbtowc, NULL },  { ebcdic1025_wctomb, NULL })
+
+DEFENCODING(( "IBM-1026",
+              "IBM1026",                /* IANA */
+              "CP1026",                 /* IANA */
+              "csIBM1026",              /* IANA */
+            ),
+            ebcdic1026,
+            { ebcdic1026_mbtowc, NULL },  { ebcdic1026_wctomb, NULL })
+
+DEFENCODING(( "IBM-1047",               /* IANA */
+              "IBM1047",                /* IANA */
+              "CP1047",                 /* glibc */
+              "csIBM1047",              /* IANA */
+            ),
+            ebcdic1047,
+            { ebcdic1047_mbtowc, NULL },  { ebcdic1047_wctomb, NULL })
+
+DEFENCODING(( "IBM-1097",
+              "IBM1097",                /* glibc */
+              "CP1097",                 /* glibc */
+            ),
+            ebcdic1097,
+            { ebcdic1097_mbtowc, NULL },  { ebcdic1097_wctomb, NULL })
+
+DEFENCODING(( "IBM-1112",
+              "IBM1112",                /* glibc */
+              "CP1112",                 /* glibc */
+            ),
+            ebcdic1112,
+            { ebcdic1112_mbtowc, NULL },  { ebcdic1112_wctomb, NULL })
+
+DEFENCODING(( "IBM-1122",
+              "IBM1122",                /* glibc */
+              "CP1122",                 /* glibc */
+            ),
+            ebcdic1122,
+            { ebcdic1122_mbtowc, NULL },  { ebcdic1122_wctomb, NULL })
+
+DEFENCODING(( "IBM-1123",
+              "IBM1123",                /* glibc */
+              "CP1123",                 /* glibc */
+            ),
+            ebcdic1123,
+            { ebcdic1123_mbtowc, NULL },  { ebcdic1123_wctomb, NULL })
+
+DEFENCODING(( "IBM-1130",
+              "IBM1130",                /* glibc */
+              "CP1130",                 /* glibc */
+            ),
+            ebcdic1130,
+            { ebcdic1130_mbtowc, NULL },  { ebcdic1130_wctomb, NULL })
+
+DEFENCODING(( "IBM-1132",
+              "IBM1132",                /* glibc */
+              "CP1132",                 /* glibc */
+            ),
+            ebcdic1132,
+            { ebcdic1132_mbtowc, NULL },  { ebcdic1132_wctomb, NULL })
+
+DEFENCODING(( "IBM-1137",
+              "IBM1137",                /* glibc */
+              "CP1137",                 /* glibc */
+            ),
+            ebcdic1137,
+            { ebcdic1137_mbtowc, NULL },  { ebcdic1137_wctomb, NULL })
+
+DEFENCODING(( "IBM-1140",
+              "IBM1140",
+              "IBM01140",               /* IANA */
+              "CCSID01140",             /* IANA */
+              "CP01140",                /* IANA */
+              "EBCDIC-US-37+EURO",      /* IANA */
+              "csIBM01140",             /* IANA */
+            ),
+            ebcdic1140,
+            { ebcdic1140_mbtowc, NULL },  { ebcdic1140_wctomb, NULL })
+
+DEFENCODING(( "IBM-1141",
+              "IBM1141",
+              "IBM01141",               /* IANA */
+              "CCSID01141",             /* IANA */
+              "CP01141",                /* IANA */
+              "EBCDIC-DE-273+EURO",     /* IANA */
+              "csIBM01141",             /* IANA */
+            ),
+            ebcdic1141,
+            { ebcdic1141_mbtowc, NULL },  { ebcdic1141_wctomb, NULL })
+
+DEFENCODING(( "IBM-1142",
+              "IBM1142",
+              "IBM01142",               /* IANA */
+              "CCSID01142",             /* IANA */
+              "CP01142",                /* IANA */
+              "EBCDIC-DK-277+EURO",     /* IANA */
+              "EBCDIC-NO-277+EURO",     /* IANA */
+              "csIBM01142",             /* IANA */
+            ),
+            ebcdic1142,
+            { ebcdic1142_mbtowc, NULL },  { ebcdic1142_wctomb, NULL })
+
+DEFENCODING(( "IBM-1143",
+              "IBM1143",
+              "IBM01143",               /* IANA */
+              "CCSID01143",             /* IANA */
+              "CP01143",                /* IANA */
+              "EBCDIC-FI-278+EURO",     /* IANA */
+              "EBCDIC-SE-278+EURO",     /* IANA */
+              "csIBM01143",             /* IANA */
+            ),
+            ebcdic1143,
+            { ebcdic1143_mbtowc, NULL },  { ebcdic1143_wctomb, NULL })
+
+DEFENCODING(( "IBM-1144",
+              "IBM1144",
+              "IBM01144",               /* IANA */
+              "CCSID01144",             /* IANA */
+              "CP01144",                /* IANA */
+              "EBCDIC-IT-280+EURO",     /* IANA */
+              "csPC8CodePage1144",      /* IANA */
+            ),
+            ebcdic1144,
+            { ebcdic1144_mbtowc, NULL },  { ebcdic1144_wctomb, NULL })
+
+DEFENCODING(( "IBM-1145",
+              "IBM1145",
+              "IBM01145",               /* IANA */
+              "CCSID01145",             /* IANA */
+              "CP01145",                /* IANA */
+              "EBCDIC-ES-284+EURO",     /* IANA */
+              "csIBM01145",             /* IANA */
+            ),
+            ebcdic1145,
+            { ebcdic1145_mbtowc, NULL },  { ebcdic1145_wctomb, NULL })
+
+DEFENCODING(( "IBM-1146",
+              "IBM1146",
+              "IBM01146",               /* IANA */
+              "CCSID01146",             /* IANA */
+              "CP01146",                /* IANA */
+              "EBCDIC-GB-285+EURO",     /* IANA */
+              "csPC8CodePage1146",      /* IANA */
+            ),
+            ebcdic1146,
+            { ebcdic1146_mbtowc, NULL },  { ebcdic1146_wctomb, NULL })
+
+DEFENCODING(( "IBM-1147",
+              "IBM1147",
+              "IBM01147",               /* IANA */
+              "CCSID01147",             /* IANA */
+              "CP01147",                /* IANA */
+              "EBCDIC-FR-297+EURO",     /* IANA */
+              "csIBM01147",             /* IANA */
+            ),
+            ebcdic1147,
+            { ebcdic1147_mbtowc, NULL },  { ebcdic1147_wctomb, NULL })
+
+DEFENCODING(( "IBM-1148",
+              "IBM1148",
+              "IBM01148",               /* IANA */
+              "CCSID01148",             /* IANA */
+              "CP01148",                /* IANA */
+              "EBCDIC-INTERNATIONAL-500+EURO", /* IANA */
+              "csIBM01148",             /* IANA */
+            ),
+            ebcdic1148,
+            { ebcdic1148_mbtowc, NULL },  { ebcdic1148_wctomb, NULL })
+
+DEFENCODING(( "IBM-1149",
+              "IBM1149",
+              "IBM01149",               /* IANA */
+              "CCSID01149",             /* IANA */
+              "CP01149",                /* IANA */
+              "EBCDIC-IS-871+EURO",     /* IANA */
+              "csIBM01149",             /* IANA */
+            ),
+            ebcdic1149,
+            { ebcdic1149_mbtowc, NULL },  { ebcdic1149_wctomb, NULL })
+
+DEFENCODING(( "IBM-1153",
+              "IBM1153",                /* glibc */
+              "CP1153",                 /* glibc */
+            ),
+            ebcdic1153,
+            { ebcdic1153_mbtowc, NULL },  { ebcdic1153_wctomb, NULL })
+
+DEFENCODING(( "IBM-1154",
+              "IBM1154",                /* glibc */
+              "CP1154",                 /* glibc */
+            ),
+            ebcdic1154,
+            { ebcdic1154_mbtowc, NULL },  { ebcdic1154_wctomb, NULL })
+
+DEFENCODING(( "IBM-1155",
+              "IBM1155",                /* glibc */
+              "CP1155",                 /* glibc */
+            ),
+            ebcdic1155,
+            { ebcdic1155_mbtowc, NULL },  { ebcdic1155_wctomb, NULL })
+
+DEFENCODING(( "IBM-1156",
+              "IBM1156",                /* glibc */
+              "CP1156",                 /* glibc */
+            ),
+            ebcdic1156,
+            { ebcdic1156_mbtowc, NULL },  { ebcdic1156_wctomb, NULL })
+
+DEFENCODING(( "IBM-1157",
+              "IBM1157",                /* glibc */
+              "CP1157",                 /* glibc */
+            ),
+            ebcdic1157,
+            { ebcdic1157_mbtowc, NULL },  { ebcdic1157_wctomb, NULL })
+
+DEFENCODING(( "IBM-1158",
+              "IBM1158",                /* glibc */
+              "CP1158",                 /* glibc */
+            ),
+            ebcdic1158,
+            { ebcdic1158_mbtowc, NULL },  { ebcdic1158_wctomb, NULL })
+
+DEFENCODING(( "IBM-1160",
+              "IBM1160",                /* glibc */
+              "CP1160",                 /* glibc */
+            ),
+            ebcdic1160,
+            { ebcdic1160_mbtowc, NULL },  { ebcdic1160_wctomb, NULL })
+
+DEFENCODING(( "IBM-1164",
+              "IBM1164",                /* glibc */
+              "CP1164",                 /* glibc */
+            ),
+            ebcdic1164,
+            { ebcdic1164_mbtowc, NULL },  { ebcdic1164_wctomb, NULL })
+
+DEFENCODING(( "IBM-1165",
+              "IBM1165",
+            ),
+            ebcdic1165,
+            { ebcdic1165_mbtowc, NULL },  { ebcdic1165_wctomb, NULL })
+
+DEFENCODING(( "IBM-1166",
+              "IBM1166",                /* glibc */
+              "CP1166",                 /* glibc */
+            ),
+            ebcdic1166,
+            { ebcdic1166_mbtowc, NULL },  { ebcdic1166_wctomb, NULL })
+
+DEFENCODING(( "IBM-4971",
+              "IBM4971",                /* glibc */
+              "CP4971",                 /* glibc */
+            ),
+            ebcdic4971,
+            { ebcdic4971_mbtowc, NULL },  { ebcdic4971_wctomb, NULL })
+
+DEFENCODING(( "IBM-12712",
+              "IBM12712",               /* glibc */
+              "CP12712",                /* glibc */
+            ),
+            ebcdic12712,
+            { ebcdic12712_mbtowc, NULL }, { ebcdic12712_wctomb, NULL })
+
+DEFENCODING(( "IBM-16804",
+              "IBM16804",               /* glibc */
+              "CP16804",                /* glibc */
+            ),
+            ebcdic16804,
+            { ebcdic16804_mbtowc, NULL }, { ebcdic16804_wctomb, NULL })
diff --git a/lib/genaliases2.c b/lib/genaliases2.c
index 8eb97df..51a951c 100644
--- a/lib/genaliases2.c
+++ b/lib/genaliases2.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999-2003, 2005, 2008, 2012 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2003, 2005, 2008, 2012, 2022 Free Software Foundation, Inc.
    This file is part of the GNU LIBICONV Library.
 
    The GNU LIBICONV Library is free software; you can redistribute it
@@ -93,6 +93,9 @@
 #ifdef USE_DOS
 #include "encodings_dos.def"
 #endif
+#ifdef USE_ZOS
+#include "encodings_zos.def"
+#endif
 #ifdef USE_EXTRA
 #include "encodings_extra.def"
 #endif
diff --git a/lib/genflags.c b/lib/genflags.c
index 7444eea..66732be 100644
--- a/lib/genflags.c
+++ b/lib/genflags.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000-2002, 2005-2006, 2008-2009, 2016 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2002, 2005-2006, 2008-2009, 2016, 2022 Free Software Foundation, Inc.
    This file is part of the GNU LIBICONV Library.
 
    The GNU LIBICONV Library is free software; you can redistribute it
@@ -31,6 +31,7 @@
 #define USE_AIX
 #define USE_OSF1
 #define USE_DOS
+#define USE_ZOS
 #define USE_EXTRA
 
 struct loop_funcs {};
@@ -109,6 +110,7 @@
 #include "encodings_aix.def"
 #include "encodings_osf1.def"
 #include "encodings_dos.def"
+#include "encodings_zos.def"
 #include "encodings_extra.def"
 #undef DEFALIAS
 #undef DEFENCODING
diff --git a/lib/iconv.c b/lib/iconv.c
index ae4e8ce..673457e 100644
--- a/lib/iconv.c
+++ b/lib/iconv.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 1999-2008, 2011, 2016, 2018, 2020 Free Software Foundation, Inc.
+ * Copyright (C) 1999-2008, 2011, 2016, 2018, 2020, 2022 Free Software Foundation, Inc.
  * This file is part of the GNU LIBICONV Library.
  *
  * The GNU LIBICONV Library is free software; you can redistribute it
@@ -37,6 +37,7 @@
 #define USE_AIX
 #define USE_OSF1
 #define USE_DOS
+#define USE_ZOS
 #define USE_EXTRA
 #else
 /*
@@ -52,6 +53,11 @@
 #if defined(__DJGPP__) || (defined(_WIN32) && (defined(_MSC_VER) || defined(__MINGW32__)))
 #define USE_DOS
 #endif
+/* Enable the EBCDIC encodings not only on z/OS but also on Linux/s390, for
+   easier interoperability between z/OS and Linux/s390.  */
+#if defined(__MVS__) || (defined(__linux__) && (defined(__s390__) || defined(__s390x__)))
+#define USE_ZOS
+#endif
 #endif
 
 /*
@@ -98,6 +104,9 @@
 #ifdef USE_DOS
 # include "encodings_dos.def"
 #endif
+#ifdef USE_ZOS
+# include "encodings_zos.def"
+#endif
 #ifdef USE_EXTRA
 # include "encodings_extra.def"
 #endif
@@ -119,6 +128,9 @@
 #ifdef USE_DOS
 # include "encodings_dos.def"
 #endif
+#ifdef USE_ZOS
+# include "encodings_zos.def"
+#endif
 #ifdef USE_EXTRA
 # include "encodings_extra.def"
 #endif
@@ -159,7 +171,7 @@
  * Defines
  *   const struct alias * aliases2_lookup (const char *str);
  */
-#if defined(USE_AIX) || defined(USE_OSF1) || defined(USE_DOS) || defined(USE_EXTRA) /* || ... */
+#if defined(USE_AIX) || defined(USE_OSF1) || defined(USE_DOS) || defined(USE_ZOS) || defined(USE_EXTRA) /* || ... */
 struct stringpool2_t {
 #define S(tag,name,encoding_index) char stringpool_##tag[sizeof(name)];
 #include "aliases2.h"
@@ -472,6 +484,9 @@
 #ifdef USE_DOS
 # include "canonical_dos.h"
 #endif
+#ifdef USE_ZOS
+# include "canonical_zos.h"
+#endif
 #ifdef USE_EXTRA
 # include "canonical_extra.h"
 #endif
diff --git a/man/iconv_open.3 b/man/iconv_open.3
index b458c50..fb6316d 100644
--- a/man/iconv_open.3
+++ b/man/iconv_open.3
@@ -9,7 +9,7 @@
 .\"   GNU glibc-2 source code and manual
 .\"   OpenGroup's Single Unix specification http://www.UNIX-systems.org/online.html
 .\"
-.TH ICONV_OPEN 3  "October 23, 2011" "GNU" "Linux Programmer's Manual"
+.TH ICONV_OPEN 3  "January 23, 2022" "GNU" "Linux Programmer's Manual"
 .SH NAME
 iconv_open \- allocate descriptor for character set conversion
 .SH SYNOPSIS
@@ -169,6 +169,54 @@
 .fi
 ATARIST, RISCOS\-LATIN1
 .PP
+.TP
+EBCDIC compatible (not ASCII compatible, very rarely used)
+.nf
+.fi
+European languages:
+.nf
+.fi
+    IBM-{037,273,277,278,280,282,284,285,297,423,500,870,871,875,880},
+    IBM-{905,924,1025,1026,1047,1112,1122,1123,1140,1141,1142,1143},
+    IBM-{1144,1145,1146,1147,1148,1149,1153,1154,1155,1156,1157,1158},
+    IBM-{1165,1166,4971}
+.nf
+.fi
+Semitic languages:
+.nf
+.fi
+    IBM-{424,425,12712,16804}
+.nf
+.fi
+Persian:
+.nf
+.fi
+    IBM-1097
+.nf
+.fi
+Thai:
+.nf
+.fi
+    IBM-{838,1160}
+.nf
+.fi
+Laotian:
+.nf
+.fi
+    IBM-1132
+.nf
+.fi
+Vietnamese:
+.nf
+.fi
+    IBM-{1130,1164}
+.nf
+.fi
+Indic languages:
+.nf
+.fi
+    IBM-1137
+.PP
 The empty encoding name "" is equivalent to "char": it denotes the
 locale dependent character encoding.
 .PP
diff --git a/tests/IBM-037.TXT b/tests/IBM-037.TXT
new file mode 100644
index 0000000..bf34f2a
--- /dev/null
+++ b/tests/IBM-037.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x00E2
+0x43	0x00E4
+0x44	0x00E0
+0x45	0x00E1
+0x46	0x00E3
+0x47	0x00E5
+0x48	0x00E7
+0x49	0x00F1
+0x4A	0x00A2
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x007C
+0x50	0x0026
+0x51	0x00E9
+0x52	0x00EA
+0x53	0x00EB
+0x54	0x00E8
+0x55	0x00ED
+0x56	0x00EE
+0x57	0x00EF
+0x58	0x00EC
+0x59	0x00DF
+0x5A	0x0021
+0x5B	0x0024
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x00AC
+0x60	0x002D
+0x61	0x002F
+0x62	0x00C2
+0x63	0x00C4
+0x64	0x00C0
+0x65	0x00C1
+0x66	0x00C3
+0x67	0x00C5
+0x68	0x00C7
+0x69	0x00D1
+0x6A	0x00A6
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x00F8
+0x71	0x00C9
+0x72	0x00CA
+0x73	0x00CB
+0x74	0x00C8
+0x75	0x00CD
+0x76	0x00CE
+0x77	0x00CF
+0x78	0x00CC
+0x79	0x0060
+0x7A	0x003A
+0x7B	0x0023
+0x7C	0x0040
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0x00D8
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x00AB
+0x8B	0x00BB
+0x8C	0x00F0
+0x8D	0x00FD
+0x8E	0x00FE
+0x8F	0x00B1
+0x90	0x00B0
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x00AA
+0x9B	0x00BA
+0x9C	0x00E6
+0x9D	0x00B8
+0x9E	0x00C6
+0x9F	0x00A4
+0xA0	0x00B5
+0xA1	0x007E
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x00A1
+0xAB	0x00BF
+0xAC	0x00D0
+0xAD	0x00DD
+0xAE	0x00DE
+0xAF	0x00AE
+0xB0	0x005E
+0xB1	0x00A3
+0xB2	0x00A5
+0xB3	0x00B7
+0xB4	0x00A9
+0xB5	0x00A7
+0xB6	0x00B6
+0xB7	0x00BC
+0xB8	0x00BD
+0xB9	0x00BE
+0xBA	0x005B
+0xBB	0x005D
+0xBC	0x00AF
+0xBD	0x00A8
+0xBE	0x00B4
+0xBF	0x00D7
+0xC0	0x007B
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x00AD
+0xCB	0x00F4
+0xCC	0x00F6
+0xCD	0x00F2
+0xCE	0x00F3
+0xCF	0x00F5
+0xD0	0x007D
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x00B9
+0xDB	0x00FB
+0xDC	0x00FC
+0xDD	0x00F9
+0xDE	0x00FA
+0xDF	0x00FF
+0xE0	0x005C
+0xE1	0x00F7
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x00B2
+0xEB	0x00D4
+0xEC	0x00D6
+0xED	0x00D2
+0xEE	0x00D3
+0xEF	0x00D5
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x00B3
+0xFB	0x00DB
+0xFC	0x00DC
+0xFD	0x00D9
+0xFE	0x00DA
+0xFF	0x009F
diff --git a/tests/IBM-1025.TXT b/tests/IBM-1025.TXT
new file mode 100644
index 0000000..be2a7e6
--- /dev/null
+++ b/tests/IBM-1025.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x0452
+0x43	0x0453
+0x44	0x0451
+0x45	0x0454
+0x46	0x0455
+0x47	0x0456
+0x48	0x0457
+0x49	0x0458
+0x4A	0x005B
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x0021
+0x50	0x0026
+0x51	0x0459
+0x52	0x045A
+0x53	0x045B
+0x54	0x045C
+0x55	0x045E
+0x56	0x045F
+0x57	0x042A
+0x58	0x2116
+0x59	0x0402
+0x5A	0x005D
+0x5B	0x0024
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x005E
+0x60	0x002D
+0x61	0x002F
+0x62	0x0403
+0x63	0x0401
+0x64	0x0404
+0x65	0x0405
+0x66	0x0406
+0x67	0x0407
+0x68	0x0408
+0x69	0x0409
+0x6A	0x007C
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x040A
+0x71	0x040B
+0x72	0x040C
+0x73	0x00AD
+0x74	0x040E
+0x75	0x040F
+0x76	0x044E
+0x77	0x0430
+0x78	0x0431
+0x79	0x0060
+0x7A	0x003A
+0x7B	0x0023
+0x7C	0x0040
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0x0446
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x0434
+0x8B	0x0435
+0x8C	0x0444
+0x8D	0x0433
+0x8E	0x0445
+0x8F	0x0438
+0x90	0x0439
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x043A
+0x9B	0x043B
+0x9C	0x043C
+0x9D	0x043D
+0x9E	0x043E
+0x9F	0x043F
+0xA0	0x044F
+0xA1	0x007E
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x0440
+0xAB	0x0441
+0xAC	0x0442
+0xAD	0x0443
+0xAE	0x0436
+0xAF	0x0432
+0xB0	0x044C
+0xB1	0x044B
+0xB2	0x0437
+0xB3	0x0448
+0xB4	0x044D
+0xB5	0x0449
+0xB6	0x0447
+0xB7	0x044A
+0xB8	0x042E
+0xB9	0x0410
+0xBA	0x0411
+0xBB	0x0426
+0xBC	0x0414
+0xBD	0x0415
+0xBE	0x0424
+0xBF	0x0413
+0xC0	0x007B
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x0425
+0xCB	0x0418
+0xCC	0x0419
+0xCD	0x041A
+0xCE	0x041B
+0xCF	0x041C
+0xD0	0x007D
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x041D
+0xDB	0x041E
+0xDC	0x041F
+0xDD	0x042F
+0xDE	0x0420
+0xDF	0x0421
+0xE0	0x005C
+0xE1	0x00A7
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x0422
+0xEB	0x0423
+0xEC	0x0416
+0xED	0x0412
+0xEE	0x042C
+0xEF	0x042B
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x0417
+0xFB	0x0428
+0xFC	0x042D
+0xFD	0x0429
+0xFE	0x0427
+0xFF	0x009F
diff --git a/tests/IBM-1026.TXT b/tests/IBM-1026.TXT
new file mode 100644
index 0000000..9f48604
--- /dev/null
+++ b/tests/IBM-1026.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x00E2
+0x43	0x00E4
+0x44	0x00E0
+0x45	0x00E1
+0x46	0x00E3
+0x47	0x00E5
+0x48	0x007B
+0x49	0x00F1
+0x4A	0x00C7
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x0021
+0x50	0x0026
+0x51	0x00E9
+0x52	0x00EA
+0x53	0x00EB
+0x54	0x00E8
+0x55	0x00ED
+0x56	0x00EE
+0x57	0x00EF
+0x58	0x00EC
+0x59	0x00DF
+0x5A	0x011E
+0x5B	0x0130
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x005E
+0x60	0x002D
+0x61	0x002F
+0x62	0x00C2
+0x63	0x00C4
+0x64	0x00C0
+0x65	0x00C1
+0x66	0x00C3
+0x67	0x00C5
+0x68	0x005B
+0x69	0x00D1
+0x6A	0x015F
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x00F8
+0x71	0x00C9
+0x72	0x00CA
+0x73	0x00CB
+0x74	0x00C8
+0x75	0x00CD
+0x76	0x00CE
+0x77	0x00CF
+0x78	0x00CC
+0x79	0x0131
+0x7A	0x003A
+0x7B	0x00D6
+0x7C	0x015E
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x00DC
+0x80	0x00D8
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x00AB
+0x8B	0x00BB
+0x8C	0x007D
+0x8D	0x0060
+0x8E	0x00A6
+0x8F	0x00B1
+0x90	0x00B0
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x00AA
+0x9B	0x00BA
+0x9C	0x00E6
+0x9D	0x00B8
+0x9E	0x00C6
+0x9F	0x00A4
+0xA0	0x00B5
+0xA1	0x00F6
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x00A1
+0xAB	0x00BF
+0xAC	0x005D
+0xAD	0x0024
+0xAE	0x0040
+0xAF	0x00AE
+0xB0	0x00A2
+0xB1	0x00A3
+0xB2	0x00A5
+0xB3	0x00B7
+0xB4	0x00A9
+0xB5	0x00A7
+0xB6	0x00B6
+0xB7	0x00BC
+0xB8	0x00BD
+0xB9	0x00BE
+0xBA	0x00AC
+0xBB	0x007C
+0xBC	0x00AF
+0xBD	0x00A8
+0xBE	0x00B4
+0xBF	0x00D7
+0xC0	0x00E7
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x00AD
+0xCB	0x00F4
+0xCC	0x007E
+0xCD	0x00F2
+0xCE	0x00F3
+0xCF	0x00F5
+0xD0	0x011F
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x00B9
+0xDB	0x00FB
+0xDC	0x005C
+0xDD	0x00F9
+0xDE	0x00FA
+0xDF	0x00FF
+0xE0	0x00FC
+0xE1	0x00F7
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x00B2
+0xEB	0x00D4
+0xEC	0x0023
+0xED	0x00D2
+0xEE	0x00D3
+0xEF	0x00D5
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x00B3
+0xFB	0x00DB
+0xFC	0x0022
+0xFD	0x00D9
+0xFE	0x00DA
+0xFF	0x009F
diff --git a/tests/IBM-1047.TXT b/tests/IBM-1047.TXT
new file mode 100644
index 0000000..d6818cf
--- /dev/null
+++ b/tests/IBM-1047.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x00E2
+0x43	0x00E4
+0x44	0x00E0
+0x45	0x00E1
+0x46	0x00E3
+0x47	0x00E5
+0x48	0x00E7
+0x49	0x00F1
+0x4A	0x00A2
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x007C
+0x50	0x0026
+0x51	0x00E9
+0x52	0x00EA
+0x53	0x00EB
+0x54	0x00E8
+0x55	0x00ED
+0x56	0x00EE
+0x57	0x00EF
+0x58	0x00EC
+0x59	0x00DF
+0x5A	0x0021
+0x5B	0x0024
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x005E
+0x60	0x002D
+0x61	0x002F
+0x62	0x00C2
+0x63	0x00C4
+0x64	0x00C0
+0x65	0x00C1
+0x66	0x00C3
+0x67	0x00C5
+0x68	0x00C7
+0x69	0x00D1
+0x6A	0x00A6
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x00F8
+0x71	0x00C9
+0x72	0x00CA
+0x73	0x00CB
+0x74	0x00C8
+0x75	0x00CD
+0x76	0x00CE
+0x77	0x00CF
+0x78	0x00CC
+0x79	0x0060
+0x7A	0x003A
+0x7B	0x0023
+0x7C	0x0040
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0x00D8
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x00AB
+0x8B	0x00BB
+0x8C	0x00F0
+0x8D	0x00FD
+0x8E	0x00FE
+0x8F	0x00B1
+0x90	0x00B0
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x00AA
+0x9B	0x00BA
+0x9C	0x00E6
+0x9D	0x00B8
+0x9E	0x00C6
+0x9F	0x00A4
+0xA0	0x00B5
+0xA1	0x007E
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x00A1
+0xAB	0x00BF
+0xAC	0x00D0
+0xAD	0x005B
+0xAE	0x00DE
+0xAF	0x00AE
+0xB0	0x00AC
+0xB1	0x00A3
+0xB2	0x00A5
+0xB3	0x00B7
+0xB4	0x00A9
+0xB5	0x00A7
+0xB6	0x00B6
+0xB7	0x00BC
+0xB8	0x00BD
+0xB9	0x00BE
+0xBA	0x00DD
+0xBB	0x00A8
+0xBC	0x00AF
+0xBD	0x005D
+0xBE	0x00B4
+0xBF	0x00D7
+0xC0	0x007B
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x00AD
+0xCB	0x00F4
+0xCC	0x00F6
+0xCD	0x00F2
+0xCE	0x00F3
+0xCF	0x00F5
+0xD0	0x007D
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x00B9
+0xDB	0x00FB
+0xDC	0x00FC
+0xDD	0x00F9
+0xDE	0x00FA
+0xDF	0x00FF
+0xE0	0x005C
+0xE1	0x00F7
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x00B2
+0xEB	0x00D4
+0xEC	0x00D6
+0xED	0x00D2
+0xEE	0x00D3
+0xEF	0x00D5
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x00B3
+0xFB	0x00DB
+0xFC	0x00DC
+0xFD	0x00D9
+0xFE	0x00DA
+0xFF	0x009F
diff --git a/tests/IBM-1097.TXT b/tests/IBM-1097.TXT
new file mode 100644
index 0000000..b67a074
--- /dev/null
+++ b/tests/IBM-1097.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x060C
+0x43	0x064B
+0x44	0xFE81
+0x45	0xFE82
+0x46	0xF8FA
+0x47	0xFE8D
+0x48	0xFE8E
+0x49	0xF8FB
+0x4A	0x00A4
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x007C
+0x50	0x0026
+0x51	0xFE80
+0x52	0xFE83
+0x53	0xFE84
+0x54	0xF8F9
+0x55	0xFE85
+0x56	0xFE8B
+0x57	0xFE8F
+0x58	0xFE91
+0x59	0xFB56
+0x5A	0x0021
+0x5B	0x0024
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x00AC
+0x60	0x002D
+0x61	0x002F
+0x62	0xFB58
+0x63	0xFE95
+0x64	0xFE97
+0x65	0xFE99
+0x66	0xFE9B
+0x67	0xFE9D
+0x68	0xFE9F
+0x69	0xFB7A
+0x6A	0x061B
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0xFB7C
+0x71	0xFEA1
+0x72	0xFEA3
+0x73	0xFEA5
+0x74	0xFEA7
+0x75	0xFEA9
+0x76	0xFEAB
+0x77	0xFEAD
+0x78	0xFEAF
+0x79	0x0060
+0x7A	0x003A
+0x7B	0x0023
+0x7C	0x0040
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0xFB8A
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x00AB
+0x8B	0x00BB
+0x8C	0xFEB1
+0x8D	0xFEB3
+0x8E	0xFEB5
+0x8F	0xFEB7
+0x90	0xFEB9
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0xFEBB
+0x9B	0xFEBD
+0x9C	0xFEBF
+0x9D	0xFEC1
+0x9E	0xFEC3
+0x9F	0xFEC5
+0xA0	0xFEC7
+0xA1	0x007E
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0xFEC9
+0xAB	0xFECA
+0xAC	0xFECB
+0xAD	0xFECC
+0xAE	0xFECD
+0xAF	0xFECE
+0xB0	0xFECF
+0xB1	0xFED0
+0xB2	0xFED1
+0xB3	0xFED3
+0xB4	0xFED5
+0xB5	0xFED7
+0xB6	0xFB8E
+0xB7	0xFEDB
+0xB8	0xFB92
+0xB9	0xFB94
+0xBA	0x005B
+0xBB	0x005D
+0xBC	0xFEDD
+0xBD	0xFEDF
+0xBE	0xFEE1
+0xBF	0x00D7
+0xC0	0x007B
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x00AD
+0xCB	0xFEE3
+0xCC	0xFEE5
+0xCD	0xFEE7
+0xCE	0xFEED
+0xCF	0xFEE9
+0xD0	0x007D
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0xFEEB
+0xDB	0xFEEC
+0xDC	0xFBA4
+0xDD	0xFBFC
+0xDE	0xFBFD
+0xDF	0xFBFE
+0xE0	0x005C
+0xE1	0x061F
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x0640
+0xEB	0x06F0
+0xEC	0x06F1
+0xED	0x06F2
+0xEE	0x06F3
+0xEF	0x06F4
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x06F5
+0xFB	0x06F6
+0xFC	0x06F7
+0xFD	0x06F8
+0xFE	0x06F9
+0xFF	0x009F
diff --git a/tests/IBM-1112.TXT b/tests/IBM-1112.TXT
new file mode 100644
index 0000000..e66d0be
--- /dev/null
+++ b/tests/IBM-1112.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x0161
+0x43	0x00E4
+0x44	0x0105
+0x45	0x012F
+0x46	0x016B
+0x47	0x00E5
+0x48	0x0113
+0x49	0x017E
+0x4A	0x00A2
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x007C
+0x50	0x0026
+0x51	0x00E9
+0x52	0x0119
+0x53	0x0117
+0x54	0x010D
+0x55	0x0173
+0x56	0x201E
+0x57	0x201C
+0x58	0x0123
+0x59	0x00DF
+0x5A	0x0021
+0x5B	0x0024
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x00AC
+0x60	0x002D
+0x61	0x002F
+0x62	0x0160
+0x63	0x00C4
+0x64	0x0104
+0x65	0x012E
+0x66	0x016A
+0x67	0x00C5
+0x68	0x0112
+0x69	0x017D
+0x6A	0x00A6
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x00F8
+0x71	0x00C9
+0x72	0x0118
+0x73	0x0116
+0x74	0x010C
+0x75	0x0172
+0x76	0x012A
+0x77	0x013B
+0x78	0x0122
+0x79	0x0060
+0x7A	0x003A
+0x7B	0x0023
+0x7C	0x0040
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0x00D8
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x00AB
+0x8B	0x00BB
+0x8C	0x0101
+0x8D	0x017C
+0x8E	0x0144
+0x8F	0x00B1
+0x90	0x00B0
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x0156
+0x9B	0x0157
+0x9C	0x00E6
+0x9D	0x0137
+0x9E	0x00C6
+0x9F	0x00A4
+0xA0	0x00B5
+0xA1	0x007E
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x201D
+0xAB	0x017A
+0xAC	0x0100
+0xAD	0x017B
+0xAE	0x0143
+0xAF	0x00AE
+0xB0	0x005E
+0xB1	0x00A3
+0xB2	0x012B
+0xB3	0x00B7
+0xB4	0x00A9
+0xB5	0x00A7
+0xB6	0x00B6
+0xB7	0x00BC
+0xB8	0x00BD
+0xB9	0x00BE
+0xBA	0x005B
+0xBB	0x005D
+0xBC	0x0179
+0xBD	0x0136
+0xBE	0x013C
+0xBF	0x00D7
+0xC0	0x007B
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x00AD
+0xCB	0x014D
+0xCC	0x00F6
+0xCD	0x0146
+0xCE	0x00F3
+0xCF	0x00F5
+0xD0	0x007D
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x00B9
+0xDB	0x0107
+0xDC	0x00FC
+0xDD	0x0142
+0xDE	0x015B
+0xDF	0x2019
+0xE0	0x005C
+0xE1	0x00F7
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x00B2
+0xEB	0x014C
+0xEC	0x00D6
+0xED	0x0145
+0xEE	0x00D3
+0xEF	0x00D5
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x00B3
+0xFB	0x0106
+0xFC	0x00DC
+0xFD	0x0141
+0xFE	0x015A
+0xFF	0x009F
diff --git a/tests/IBM-1122.TXT b/tests/IBM-1122.TXT
new file mode 100644
index 0000000..7386558
--- /dev/null
+++ b/tests/IBM-1122.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x00E2
+0x43	0x007B
+0x44	0x00E0
+0x45	0x00E1
+0x46	0x00E3
+0x47	0x007D
+0x48	0x00E7
+0x49	0x00F1
+0x4A	0x00A7
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x0021
+0x50	0x0026
+0x51	0x0060
+0x52	0x00EA
+0x53	0x00EB
+0x54	0x00E8
+0x55	0x00ED
+0x56	0x00EE
+0x57	0x00EF
+0x58	0x00EC
+0x59	0x00DF
+0x5A	0x00A4
+0x5B	0x00C5
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x005E
+0x60	0x002D
+0x61	0x002F
+0x62	0x00C2
+0x63	0x0023
+0x64	0x00C0
+0x65	0x00C1
+0x66	0x00C3
+0x67	0x0024
+0x68	0x00C7
+0x69	0x00D1
+0x6A	0x00F6
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x00F8
+0x71	0x005C
+0x72	0x00CA
+0x73	0x00CB
+0x74	0x00C8
+0x75	0x00CD
+0x76	0x00CE
+0x77	0x00CF
+0x78	0x00CC
+0x79	0x00E9
+0x7A	0x003A
+0x7B	0x00C4
+0x7C	0x00D6
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0x00D8
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x00AB
+0x8B	0x00BB
+0x8C	0x0161
+0x8D	0x00FD
+0x8E	0x017E
+0x8F	0x00B1
+0x90	0x00B0
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x00AA
+0x9B	0x00BA
+0x9C	0x00E6
+0x9D	0x00B8
+0x9E	0x00C6
+0x9F	0x005D
+0xA0	0x00B5
+0xA1	0x00FC
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x00A1
+0xAB	0x00BF
+0xAC	0x0160
+0xAD	0x00DD
+0xAE	0x017D
+0xAF	0x00AE
+0xB0	0x00A2
+0xB1	0x00A3
+0xB2	0x00A5
+0xB3	0x00B7
+0xB4	0x00A9
+0xB5	0x005B
+0xB6	0x00B6
+0xB7	0x00BC
+0xB8	0x00BD
+0xB9	0x00BE
+0xBA	0x00AC
+0xBB	0x007C
+0xBC	0x00AF
+0xBD	0x00A8
+0xBE	0x00B4
+0xBF	0x00D7
+0xC0	0x00E4
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x00AD
+0xCB	0x00F4
+0xCC	0x00A6
+0xCD	0x00F2
+0xCE	0x00F3
+0xCF	0x00F5
+0xD0	0x00E5
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x00B9
+0xDB	0x00FB
+0xDC	0x007E
+0xDD	0x00F9
+0xDE	0x00FA
+0xDF	0x00FF
+0xE0	0x00C9
+0xE1	0x00F7
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x00B2
+0xEB	0x00D4
+0xEC	0x0040
+0xED	0x00D2
+0xEE	0x00D3
+0xEF	0x00D5
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x00B3
+0xFB	0x00DB
+0xFC	0x00DC
+0xFD	0x00D9
+0xFE	0x00DA
+0xFF	0x009F
diff --git a/tests/IBM-1123.TXT b/tests/IBM-1123.TXT
new file mode 100644
index 0000000..3cad5e4
--- /dev/null
+++ b/tests/IBM-1123.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x0452
+0x43	0x0491
+0x44	0x0451
+0x45	0x0454
+0x46	0x0455
+0x47	0x0456
+0x48	0x0457
+0x49	0x0458
+0x4A	0x005B
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x0021
+0x50	0x0026
+0x51	0x0459
+0x52	0x045A
+0x53	0x045B
+0x54	0x045C
+0x55	0x045E
+0x56	0x045F
+0x57	0x042A
+0x58	0x2116
+0x59	0x0402
+0x5A	0x005D
+0x5B	0x0024
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x005E
+0x60	0x002D
+0x61	0x002F
+0x62	0x0490
+0x63	0x0401
+0x64	0x0404
+0x65	0x0405
+0x66	0x0406
+0x67	0x0407
+0x68	0x0408
+0x69	0x0409
+0x6A	0x007C
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x040A
+0x71	0x040B
+0x72	0x040C
+0x73	0x00AD
+0x74	0x040E
+0x75	0x040F
+0x76	0x044E
+0x77	0x0430
+0x78	0x0431
+0x79	0x0060
+0x7A	0x003A
+0x7B	0x0023
+0x7C	0x0040
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0x0446
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x0434
+0x8B	0x0435
+0x8C	0x0444
+0x8D	0x0433
+0x8E	0x0445
+0x8F	0x0438
+0x90	0x0439
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x043A
+0x9B	0x043B
+0x9C	0x043C
+0x9D	0x043D
+0x9E	0x043E
+0x9F	0x043F
+0xA0	0x044F
+0xA1	0x007E
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x0440
+0xAB	0x0441
+0xAC	0x0442
+0xAD	0x0443
+0xAE	0x0436
+0xAF	0x0432
+0xB0	0x044C
+0xB1	0x044B
+0xB2	0x0437
+0xB3	0x0448
+0xB4	0x044D
+0xB5	0x0449
+0xB6	0x0447
+0xB7	0x044A
+0xB8	0x042E
+0xB9	0x0410
+0xBA	0x0411
+0xBB	0x0426
+0xBC	0x0414
+0xBD	0x0415
+0xBE	0x0424
+0xBF	0x0413
+0xC0	0x007B
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x0425
+0xCB	0x0418
+0xCC	0x0419
+0xCD	0x041A
+0xCE	0x041B
+0xCF	0x041C
+0xD0	0x007D
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x041D
+0xDB	0x041E
+0xDC	0x041F
+0xDD	0x042F
+0xDE	0x0420
+0xDF	0x0421
+0xE0	0x005C
+0xE1	0x00A7
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x0422
+0xEB	0x0423
+0xEC	0x0416
+0xED	0x0412
+0xEE	0x042C
+0xEF	0x042B
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x0417
+0xFB	0x0428
+0xFC	0x042D
+0xFD	0x0429
+0xFE	0x0427
+0xFF	0x009F
diff --git a/tests/IBM-1130.TXT b/tests/IBM-1130.TXT
new file mode 100644
index 0000000..104d5c9
--- /dev/null
+++ b/tests/IBM-1130.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x00E2
+0x43	0x00E4
+0x44	0x00E0
+0x45	0x00E1
+0x46	0x0103
+0x47	0x00E5
+0x48	0x00E7
+0x49	0x00F1
+0x4A	0x005B
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x0021
+0x50	0x0026
+0x51	0x00E9
+0x52	0x00EA
+0x53	0x00EB
+0x54	0x00E8
+0x55	0x00ED
+0x56	0x00EE
+0x57	0x00EF
+0x58	0x0303
+0x59	0x00DF
+0x5A	0x005D
+0x5B	0x0024
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x005E
+0x60	0x002D
+0x61	0x002F
+0x62	0x00C2
+0x63	0x00C4
+0x64	0x00C0
+0x65	0x00C1
+0x66	0x0102
+0x67	0x00C5
+0x68	0x00C7
+0x69	0x00D1
+0x6A	0x00A6
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x00F8
+0x71	0x00C9
+0x72	0x00CA
+0x73	0x00CB
+0x74	0x00C8
+0x75	0x00CD
+0x76	0x00CE
+0x77	0x00CF
+0x78	0x20AB
+0x79	0x0060
+0x7A	0x003A
+0x7B	0x0023
+0x7C	0x0040
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0x00D8
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x00AB
+0x8B	0x00BB
+0x8C	0x0111
+0x8D	0x0309
+0x8E	0x0300
+0x8F	0x00B1
+0x90	0x00B0
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x00AA
+0x9B	0x00BA
+0x9C	0x00E6
+0x9D	0x0152
+0x9E	0x00C6
+0x9F	0x00A4
+0xA0	0x00B5
+0xA1	0x007E
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x00A1
+0xAB	0x00BF
+0xAC	0x0110
+0xAD	0x0323
+0xAE	0x0301
+0xAF	0x00AE
+0xB0	0x00A2
+0xB1	0x00A3
+0xB2	0x00A5
+0xB3	0x00B7
+0xB4	0x00A9
+0xB5	0x00A7
+0xB6	0x00B6
+0xB7	0x00BC
+0xB8	0x00BD
+0xB9	0x00BE
+0xBA	0x00AC
+0xBB	0x007C
+0xBC	0x00AF
+0xBD	0x0153
+0xBE	0x0178
+0xBF	0x00D7
+0xC0	0x007B
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x00AD
+0xCB	0x00F4
+0xCC	0x00F6
+0xCD	0x01B0
+0xCE	0x00F3
+0xCF	0x01A1
+0xD0	0x007D
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x00B9
+0xDB	0x00FB
+0xDC	0x00FC
+0xDD	0x00F9
+0xDE	0x00FA
+0xDF	0x00FF
+0xE0	0x005C
+0xE1	0x00F7
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x00B2
+0xEB	0x00D4
+0xEC	0x00D6
+0xED	0x01AF
+0xEE	0x00D3
+0xEF	0x01A0
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x00B3
+0xFB	0x00DB
+0xFC	0x00DC
+0xFD	0x00D9
+0xFE	0x00DA
+0xFF	0x009F
diff --git a/tests/IBM-1132.TXT b/tests/IBM-1132.TXT
new file mode 100644
index 0000000..425fcd4
--- /dev/null
+++ b/tests/IBM-1132.TXT
@@ -0,0 +1,230 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x0E81
+0x43	0x0E82
+0x44	0x0E84
+0x45	0x0E87
+0x46	0x0E88
+0x47	0x0EAA
+0x48	0x0E8A
+0x49	0x005B
+0x4A	0x00A2
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x007C
+0x50	0x0026
+0x52	0x0E8D
+0x53	0x0E94
+0x54	0x0E95
+0x55	0x0E96
+0x56	0x0E97
+0x57	0x0E99
+0x58	0x0E9A
+0x59	0x005D
+0x5A	0x0021
+0x5B	0x0024
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x00AC
+0x60	0x002D
+0x61	0x002F
+0x62	0x0E9B
+0x63	0x0E9C
+0x64	0x0E9D
+0x65	0x0E9E
+0x66	0x0E9F
+0x67	0x0EA1
+0x68	0x0EA2
+0x69	0x005E
+0x6A	0x00A6
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x20AD
+0x72	0x0EA3
+0x73	0x0EA5
+0x74	0x0EA7
+0x75	0x0EAB
+0x76	0x0EAD
+0x77	0x0EAE
+0x79	0x0060
+0x7A	0x003A
+0x7B	0x0023
+0x7C	0x0040
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8C	0x0EAF
+0x8D	0x0EB0
+0x8E	0x0EB2
+0x8F	0x0EB3
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x0EB4
+0x9B	0x0EB5
+0x9C	0x0EB6
+0x9D	0x0EB7
+0x9E	0x0EB8
+0x9F	0x0EB9
+0xA1	0x007E
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x0EBC
+0xAB	0x0EB1
+0xAC	0x0EBB
+0xAD	0x0EBD
+0xB0	0x0ED0
+0xB1	0x0ED1
+0xB2	0x0ED2
+0xB3	0x0ED3
+0xB4	0x0ED4
+0xB5	0x0ED5
+0xB6	0x0ED6
+0xB7	0x0ED7
+0xB8	0x0ED8
+0xB9	0x0ED9
+0xBB	0x0EC0
+0xBC	0x0EC1
+0xBD	0x0EC2
+0xBE	0x0EC3
+0xBF	0x0EC4
+0xC0	0x007B
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCB	0x0EC8
+0xCC	0x0EC9
+0xCD	0x0ECA
+0xCE	0x0ECB
+0xCF	0x0ECC
+0xD0	0x007D
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x0ECD
+0xDB	0x0EC6
+0xDD	0x0EDC
+0xDE	0x0EDD
+0xE0	0x005C
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFF	0x009F
diff --git a/tests/IBM-1137.TXT b/tests/IBM-1137.TXT
new file mode 100644
index 0000000..99126cd
--- /dev/null
+++ b/tests/IBM-1137.TXT
@@ -0,0 +1,254 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x0901
+0x43	0x0902
+0x44	0x0903
+0x45	0x0905
+0x46	0x0906
+0x47	0x0907
+0x48	0x0908
+0x49	0x0909
+0x4A	0x090A
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x007C
+0x50	0x0026
+0x51	0x090B
+0x52	0x090C
+0x53	0x090D
+0x54	0x090E
+0x55	0x090F
+0x56	0x0910
+0x57	0x0911
+0x58	0x0912
+0x59	0x0913
+0x5A	0x0021
+0x5B	0x0024
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x005E
+0x60	0x002D
+0x61	0x002F
+0x62	0x0914
+0x63	0x0915
+0x64	0x0916
+0x65	0x0917
+0x66	0x0918
+0x67	0x0919
+0x68	0x091A
+0x69	0x091B
+0x6A	0x091C
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x091D
+0x71	0x091E
+0x72	0x091F
+0x73	0x0920
+0x74	0x0921
+0x75	0x0922
+0x76	0x0923
+0x77	0x0924
+0x78	0x0925
+0x79	0x0060
+0x7A	0x003A
+0x7B	0x0023
+0x7C	0x0040
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0x0926
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x0927
+0x8B	0x0928
+0x8C	0x092A
+0x8D	0x092B
+0x8E	0x092C
+0x8F	0x092D
+0x90	0x092E
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x092F
+0x9B	0x0930
+0x9C	0x0932
+0x9D	0x0933
+0x9E	0x0935
+0x9F	0x0936
+0xA0	0x200C
+0xA1	0x007E
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x0937
+0xAB	0x0938
+0xAC	0x0939
+0xAD	0x005B
+0xAE	0x093C
+0xAF	0x093D
+0xB0	0x093E
+0xB1	0x093F
+0xB2	0x0940
+0xB3	0x0941
+0xB4	0x0942
+0xB5	0x0943
+0xB6	0x0944
+0xB7	0x0945
+0xB8	0x0946
+0xB9	0x0947
+0xBA	0x0948
+0xBB	0x0949
+0xBC	0x094A
+0xBD	0x005D
+0xBE	0x094B
+0xBF	0x094C
+0xC0	0x007B
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x094D
+0xCB	0x0950
+0xCC	0x0951
+0xCD	0x0952
+0xD0	0x007D
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x0960
+0xDB	0x0961
+0xDC	0x0962
+0xDD	0x0963
+0xDE	0x0964
+0xDF	0x0965
+0xE0	0x005C
+0xE1	0x200D
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x0966
+0xEB	0x0967
+0xEC	0x0968
+0xED	0x0969
+0xEE	0x096A
+0xEF	0x096B
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x096C
+0xFB	0x096D
+0xFC	0x096E
+0xFD	0x096F
+0xFE	0x0970
+0xFF	0x009F
diff --git a/tests/IBM-1140.TXT b/tests/IBM-1140.TXT
new file mode 100644
index 0000000..d38cbe4
--- /dev/null
+++ b/tests/IBM-1140.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x00E2
+0x43	0x00E4
+0x44	0x00E0
+0x45	0x00E1
+0x46	0x00E3
+0x47	0x00E5
+0x48	0x00E7
+0x49	0x00F1
+0x4A	0x00A2
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x007C
+0x50	0x0026
+0x51	0x00E9
+0x52	0x00EA
+0x53	0x00EB
+0x54	0x00E8
+0x55	0x00ED
+0x56	0x00EE
+0x57	0x00EF
+0x58	0x00EC
+0x59	0x00DF
+0x5A	0x0021
+0x5B	0x0024
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x00AC
+0x60	0x002D
+0x61	0x002F
+0x62	0x00C2
+0x63	0x00C4
+0x64	0x00C0
+0x65	0x00C1
+0x66	0x00C3
+0x67	0x00C5
+0x68	0x00C7
+0x69	0x00D1
+0x6A	0x00A6
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x00F8
+0x71	0x00C9
+0x72	0x00CA
+0x73	0x00CB
+0x74	0x00C8
+0x75	0x00CD
+0x76	0x00CE
+0x77	0x00CF
+0x78	0x00CC
+0x79	0x0060
+0x7A	0x003A
+0x7B	0x0023
+0x7C	0x0040
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0x00D8
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x00AB
+0x8B	0x00BB
+0x8C	0x00F0
+0x8D	0x00FD
+0x8E	0x00FE
+0x8F	0x00B1
+0x90	0x00B0
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x00AA
+0x9B	0x00BA
+0x9C	0x00E6
+0x9D	0x00B8
+0x9E	0x00C6
+0x9F	0x20AC
+0xA0	0x00B5
+0xA1	0x007E
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x00A1
+0xAB	0x00BF
+0xAC	0x00D0
+0xAD	0x00DD
+0xAE	0x00DE
+0xAF	0x00AE
+0xB0	0x005E
+0xB1	0x00A3
+0xB2	0x00A5
+0xB3	0x00B7
+0xB4	0x00A9
+0xB5	0x00A7
+0xB6	0x00B6
+0xB7	0x00BC
+0xB8	0x00BD
+0xB9	0x00BE
+0xBA	0x005B
+0xBB	0x005D
+0xBC	0x00AF
+0xBD	0x00A8
+0xBE	0x00B4
+0xBF	0x00D7
+0xC0	0x007B
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x00AD
+0xCB	0x00F4
+0xCC	0x00F6
+0xCD	0x00F2
+0xCE	0x00F3
+0xCF	0x00F5
+0xD0	0x007D
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x00B9
+0xDB	0x00FB
+0xDC	0x00FC
+0xDD	0x00F9
+0xDE	0x00FA
+0xDF	0x00FF
+0xE0	0x005C
+0xE1	0x00F7
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x00B2
+0xEB	0x00D4
+0xEC	0x00D6
+0xED	0x00D2
+0xEE	0x00D3
+0xEF	0x00D5
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x00B3
+0xFB	0x00DB
+0xFC	0x00DC
+0xFD	0x00D9
+0xFE	0x00DA
+0xFF	0x009F
diff --git a/tests/IBM-1141.TXT b/tests/IBM-1141.TXT
new file mode 100644
index 0000000..ed22b57
--- /dev/null
+++ b/tests/IBM-1141.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x00E2
+0x43	0x007B
+0x44	0x00E0
+0x45	0x00E1
+0x46	0x00E3
+0x47	0x00E5
+0x48	0x00E7
+0x49	0x00F1
+0x4A	0x00C4
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x0021
+0x50	0x0026
+0x51	0x00E9
+0x52	0x00EA
+0x53	0x00EB
+0x54	0x00E8
+0x55	0x00ED
+0x56	0x00EE
+0x57	0x00EF
+0x58	0x00EC
+0x59	0x007E
+0x5A	0x00DC
+0x5B	0x0024
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x005E
+0x60	0x002D
+0x61	0x002F
+0x62	0x00C2
+0x63	0x005B
+0x64	0x00C0
+0x65	0x00C1
+0x66	0x00C3
+0x67	0x00C5
+0x68	0x00C7
+0x69	0x00D1
+0x6A	0x00F6
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x00F8
+0x71	0x00C9
+0x72	0x00CA
+0x73	0x00CB
+0x74	0x00C8
+0x75	0x00CD
+0x76	0x00CE
+0x77	0x00CF
+0x78	0x00CC
+0x79	0x0060
+0x7A	0x003A
+0x7B	0x0023
+0x7C	0x00A7
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0x00D8
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x00AB
+0x8B	0x00BB
+0x8C	0x00F0
+0x8D	0x00FD
+0x8E	0x00FE
+0x8F	0x00B1
+0x90	0x00B0
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x00AA
+0x9B	0x00BA
+0x9C	0x00E6
+0x9D	0x00B8
+0x9E	0x00C6
+0x9F	0x20AC
+0xA0	0x00B5
+0xA1	0x00DF
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x00A1
+0xAB	0x00BF
+0xAC	0x00D0
+0xAD	0x00DD
+0xAE	0x00DE
+0xAF	0x00AE
+0xB0	0x00A2
+0xB1	0x00A3
+0xB2	0x00A5
+0xB3	0x00B7
+0xB4	0x00A9
+0xB5	0x0040
+0xB6	0x00B6
+0xB7	0x00BC
+0xB8	0x00BD
+0xB9	0x00BE
+0xBA	0x00AC
+0xBB	0x007C
+0xBC	0x00AF
+0xBD	0x00A8
+0xBE	0x00B4
+0xBF	0x00D7
+0xC0	0x00E4
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x00AD
+0xCB	0x00F4
+0xCC	0x00A6
+0xCD	0x00F2
+0xCE	0x00F3
+0xCF	0x00F5
+0xD0	0x00FC
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x00B9
+0xDB	0x00FB
+0xDC	0x007D
+0xDD	0x00F9
+0xDE	0x00FA
+0xDF	0x00FF
+0xE0	0x00D6
+0xE1	0x00F7
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x00B2
+0xEB	0x00D4
+0xEC	0x005C
+0xED	0x00D2
+0xEE	0x00D3
+0xEF	0x00D5
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x00B3
+0xFB	0x00DB
+0xFC	0x005D
+0xFD	0x00D9
+0xFE	0x00DA
+0xFF	0x009F
diff --git a/tests/IBM-1142.TXT b/tests/IBM-1142.TXT
new file mode 100644
index 0000000..15de29c
--- /dev/null
+++ b/tests/IBM-1142.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x00E2
+0x43	0x00E4
+0x44	0x00E0
+0x45	0x00E1
+0x46	0x00E3
+0x47	0x007D
+0x48	0x00E7
+0x49	0x00F1
+0x4A	0x0023
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x0021
+0x50	0x0026
+0x51	0x00E9
+0x52	0x00EA
+0x53	0x00EB
+0x54	0x00E8
+0x55	0x00ED
+0x56	0x00EE
+0x57	0x00EF
+0x58	0x00EC
+0x59	0x00DF
+0x5A	0x20AC
+0x5B	0x00C5
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x005E
+0x60	0x002D
+0x61	0x002F
+0x62	0x00C2
+0x63	0x00C4
+0x64	0x00C0
+0x65	0x00C1
+0x66	0x00C3
+0x67	0x0024
+0x68	0x00C7
+0x69	0x00D1
+0x6A	0x00F8
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x00A6
+0x71	0x00C9
+0x72	0x00CA
+0x73	0x00CB
+0x74	0x00C8
+0x75	0x00CD
+0x76	0x00CE
+0x77	0x00CF
+0x78	0x00CC
+0x79	0x0060
+0x7A	0x003A
+0x7B	0x00C6
+0x7C	0x00D8
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0x0040
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x00AB
+0x8B	0x00BB
+0x8C	0x00F0
+0x8D	0x00FD
+0x8E	0x00FE
+0x8F	0x00B1
+0x90	0x00B0
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x00AA
+0x9B	0x00BA
+0x9C	0x007B
+0x9D	0x00B8
+0x9E	0x005B
+0x9F	0x005D
+0xA0	0x00B5
+0xA1	0x00FC
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x00A1
+0xAB	0x00BF
+0xAC	0x00D0
+0xAD	0x00DD
+0xAE	0x00DE
+0xAF	0x00AE
+0xB0	0x00A2
+0xB1	0x00A3
+0xB2	0x00A5
+0xB3	0x00B7
+0xB4	0x00A9
+0xB5	0x00A7
+0xB6	0x00B6
+0xB7	0x00BC
+0xB8	0x00BD
+0xB9	0x00BE
+0xBA	0x00AC
+0xBB	0x007C
+0xBC	0x00AF
+0xBD	0x00A8
+0xBE	0x00B4
+0xBF	0x00D7
+0xC0	0x00E6
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x00AD
+0xCB	0x00F4
+0xCC	0x00F6
+0xCD	0x00F2
+0xCE	0x00F3
+0xCF	0x00F5
+0xD0	0x00E5
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x00B9
+0xDB	0x00FB
+0xDC	0x007E
+0xDD	0x00F9
+0xDE	0x00FA
+0xDF	0x00FF
+0xE0	0x005C
+0xE1	0x00F7
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x00B2
+0xEB	0x00D4
+0xEC	0x00D6
+0xED	0x00D2
+0xEE	0x00D3
+0xEF	0x00D5
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x00B3
+0xFB	0x00DB
+0xFC	0x00DC
+0xFD	0x00D9
+0xFE	0x00DA
+0xFF	0x009F
diff --git a/tests/IBM-1143.TXT b/tests/IBM-1143.TXT
new file mode 100644
index 0000000..db52662
--- /dev/null
+++ b/tests/IBM-1143.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x00E2
+0x43	0x007B
+0x44	0x00E0
+0x45	0x00E1
+0x46	0x00E3
+0x47	0x007D
+0x48	0x00E7
+0x49	0x00F1
+0x4A	0x00A7
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x0021
+0x50	0x0026
+0x51	0x0060
+0x52	0x00EA
+0x53	0x00EB
+0x54	0x00E8
+0x55	0x00ED
+0x56	0x00EE
+0x57	0x00EF
+0x58	0x00EC
+0x59	0x00DF
+0x5A	0x20AC
+0x5B	0x00C5
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x005E
+0x60	0x002D
+0x61	0x002F
+0x62	0x00C2
+0x63	0x0023
+0x64	0x00C0
+0x65	0x00C1
+0x66	0x00C3
+0x67	0x0024
+0x68	0x00C7
+0x69	0x00D1
+0x6A	0x00F6
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x00F8
+0x71	0x005C
+0x72	0x00CA
+0x73	0x00CB
+0x74	0x00C8
+0x75	0x00CD
+0x76	0x00CE
+0x77	0x00CF
+0x78	0x00CC
+0x79	0x00E9
+0x7A	0x003A
+0x7B	0x00C4
+0x7C	0x00D6
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0x00D8
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x00AB
+0x8B	0x00BB
+0x8C	0x00F0
+0x8D	0x00FD
+0x8E	0x00FE
+0x8F	0x00B1
+0x90	0x00B0
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x00AA
+0x9B	0x00BA
+0x9C	0x00E6
+0x9D	0x00B8
+0x9E	0x00C6
+0x9F	0x005D
+0xA0	0x00B5
+0xA1	0x00FC
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x00A1
+0xAB	0x00BF
+0xAC	0x00D0
+0xAD	0x00DD
+0xAE	0x00DE
+0xAF	0x00AE
+0xB0	0x00A2
+0xB1	0x00A3
+0xB2	0x00A5
+0xB3	0x00B7
+0xB4	0x00A9
+0xB5	0x005B
+0xB6	0x00B6
+0xB7	0x00BC
+0xB8	0x00BD
+0xB9	0x00BE
+0xBA	0x00AC
+0xBB	0x007C
+0xBC	0x00AF
+0xBD	0x00A8
+0xBE	0x00B4
+0xBF	0x00D7
+0xC0	0x00E4
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x00AD
+0xCB	0x00F4
+0xCC	0x00A6
+0xCD	0x00F2
+0xCE	0x00F3
+0xCF	0x00F5
+0xD0	0x00E5
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x00B9
+0xDB	0x00FB
+0xDC	0x007E
+0xDD	0x00F9
+0xDE	0x00FA
+0xDF	0x00FF
+0xE0	0x00C9
+0xE1	0x00F7
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x00B2
+0xEB	0x00D4
+0xEC	0x0040
+0xED	0x00D2
+0xEE	0x00D3
+0xEF	0x00D5
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x00B3
+0xFB	0x00DB
+0xFC	0x00DC
+0xFD	0x00D9
+0xFE	0x00DA
+0xFF	0x009F
diff --git a/tests/IBM-1144.TXT b/tests/IBM-1144.TXT
new file mode 100644
index 0000000..f199b92
--- /dev/null
+++ b/tests/IBM-1144.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x00E2
+0x43	0x00E4
+0x44	0x007B
+0x45	0x00E1
+0x46	0x00E3
+0x47	0x00E5
+0x48	0x005C
+0x49	0x00F1
+0x4A	0x00B0
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x0021
+0x50	0x0026
+0x51	0x005D
+0x52	0x00EA
+0x53	0x00EB
+0x54	0x007D
+0x55	0x00ED
+0x56	0x00EE
+0x57	0x00EF
+0x58	0x007E
+0x59	0x00DF
+0x5A	0x00E9
+0x5B	0x0024
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x005E
+0x60	0x002D
+0x61	0x002F
+0x62	0x00C2
+0x63	0x00C4
+0x64	0x00C0
+0x65	0x00C1
+0x66	0x00C3
+0x67	0x00C5
+0x68	0x00C7
+0x69	0x00D1
+0x6A	0x00F2
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x00F8
+0x71	0x00C9
+0x72	0x00CA
+0x73	0x00CB
+0x74	0x00C8
+0x75	0x00CD
+0x76	0x00CE
+0x77	0x00CF
+0x78	0x00CC
+0x79	0x00F9
+0x7A	0x003A
+0x7B	0x00A3
+0x7C	0x00A7
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0x00D8
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x00AB
+0x8B	0x00BB
+0x8C	0x00F0
+0x8D	0x00FD
+0x8E	0x00FE
+0x8F	0x00B1
+0x90	0x005B
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x00AA
+0x9B	0x00BA
+0x9C	0x00E6
+0x9D	0x00B8
+0x9E	0x00C6
+0x9F	0x20AC
+0xA0	0x00B5
+0xA1	0x00EC
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x00A1
+0xAB	0x00BF
+0xAC	0x00D0
+0xAD	0x00DD
+0xAE	0x00DE
+0xAF	0x00AE
+0xB0	0x00A2
+0xB1	0x0023
+0xB2	0x00A5
+0xB3	0x00B7
+0xB4	0x00A9
+0xB5	0x0040
+0xB6	0x00B6
+0xB7	0x00BC
+0xB8	0x00BD
+0xB9	0x00BE
+0xBA	0x00AC
+0xBB	0x007C
+0xBC	0x00AF
+0xBD	0x00A8
+0xBE	0x00B4
+0xBF	0x00D7
+0xC0	0x00E0
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x00AD
+0xCB	0x00F4
+0xCC	0x00F6
+0xCD	0x00A6
+0xCE	0x00F3
+0xCF	0x00F5
+0xD0	0x00E8
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x00B9
+0xDB	0x00FB
+0xDC	0x00FC
+0xDD	0x0060
+0xDE	0x00FA
+0xDF	0x00FF
+0xE0	0x00E7
+0xE1	0x00F7
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x00B2
+0xEB	0x00D4
+0xEC	0x00D6
+0xED	0x00D2
+0xEE	0x00D3
+0xEF	0x00D5
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x00B3
+0xFB	0x00DB
+0xFC	0x00DC
+0xFD	0x00D9
+0xFE	0x00DA
+0xFF	0x009F
diff --git a/tests/IBM-1145.TXT b/tests/IBM-1145.TXT
new file mode 100644
index 0000000..0ea8e87
--- /dev/null
+++ b/tests/IBM-1145.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x00E2
+0x43	0x00E4
+0x44	0x00E0
+0x45	0x00E1
+0x46	0x00E3
+0x47	0x00E5
+0x48	0x00E7
+0x49	0x00A6
+0x4A	0x005B
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x007C
+0x50	0x0026
+0x51	0x00E9
+0x52	0x00EA
+0x53	0x00EB
+0x54	0x00E8
+0x55	0x00ED
+0x56	0x00EE
+0x57	0x00EF
+0x58	0x00EC
+0x59	0x00DF
+0x5A	0x005D
+0x5B	0x0024
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x00AC
+0x60	0x002D
+0x61	0x002F
+0x62	0x00C2
+0x63	0x00C4
+0x64	0x00C0
+0x65	0x00C1
+0x66	0x00C3
+0x67	0x00C5
+0x68	0x00C7
+0x69	0x0023
+0x6A	0x00F1
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x00F8
+0x71	0x00C9
+0x72	0x00CA
+0x73	0x00CB
+0x74	0x00C8
+0x75	0x00CD
+0x76	0x00CE
+0x77	0x00CF
+0x78	0x00CC
+0x79	0x0060
+0x7A	0x003A
+0x7B	0x00D1
+0x7C	0x0040
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0x00D8
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x00AB
+0x8B	0x00BB
+0x8C	0x00F0
+0x8D	0x00FD
+0x8E	0x00FE
+0x8F	0x00B1
+0x90	0x00B0
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x00AA
+0x9B	0x00BA
+0x9C	0x00E6
+0x9D	0x00B8
+0x9E	0x00C6
+0x9F	0x20AC
+0xA0	0x00B5
+0xA1	0x00A8
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x00A1
+0xAB	0x00BF
+0xAC	0x00D0
+0xAD	0x00DD
+0xAE	0x00DE
+0xAF	0x00AE
+0xB0	0x00A2
+0xB1	0x00A3
+0xB2	0x00A5
+0xB3	0x00B7
+0xB4	0x00A9
+0xB5	0x00A7
+0xB6	0x00B6
+0xB7	0x00BC
+0xB8	0x00BD
+0xB9	0x00BE
+0xBA	0x005E
+0xBB	0x0021
+0xBC	0x00AF
+0xBD	0x007E
+0xBE	0x00B4
+0xBF	0x00D7
+0xC0	0x007B
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x00AD
+0xCB	0x00F4
+0xCC	0x00F6
+0xCD	0x00F2
+0xCE	0x00F3
+0xCF	0x00F5
+0xD0	0x007D
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x00B9
+0xDB	0x00FB
+0xDC	0x00FC
+0xDD	0x00F9
+0xDE	0x00FA
+0xDF	0x00FF
+0xE0	0x005C
+0xE1	0x00F7
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x00B2
+0xEB	0x00D4
+0xEC	0x00D6
+0xED	0x00D2
+0xEE	0x00D3
+0xEF	0x00D5
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x00B3
+0xFB	0x00DB
+0xFC	0x00DC
+0xFD	0x00D9
+0xFE	0x00DA
+0xFF	0x009F
diff --git a/tests/IBM-1146.TXT b/tests/IBM-1146.TXT
new file mode 100644
index 0000000..242b53a
--- /dev/null
+++ b/tests/IBM-1146.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x00E2
+0x43	0x00E4
+0x44	0x00E0
+0x45	0x00E1
+0x46	0x00E3
+0x47	0x00E5
+0x48	0x00E7
+0x49	0x00F1
+0x4A	0x0024
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x007C
+0x50	0x0026
+0x51	0x00E9
+0x52	0x00EA
+0x53	0x00EB
+0x54	0x00E8
+0x55	0x00ED
+0x56	0x00EE
+0x57	0x00EF
+0x58	0x00EC
+0x59	0x00DF
+0x5A	0x0021
+0x5B	0x00A3
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x00AC
+0x60	0x002D
+0x61	0x002F
+0x62	0x00C2
+0x63	0x00C4
+0x64	0x00C0
+0x65	0x00C1
+0x66	0x00C3
+0x67	0x00C5
+0x68	0x00C7
+0x69	0x00D1
+0x6A	0x00A6
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x00F8
+0x71	0x00C9
+0x72	0x00CA
+0x73	0x00CB
+0x74	0x00C8
+0x75	0x00CD
+0x76	0x00CE
+0x77	0x00CF
+0x78	0x00CC
+0x79	0x0060
+0x7A	0x003A
+0x7B	0x0023
+0x7C	0x0040
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0x00D8
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x00AB
+0x8B	0x00BB
+0x8C	0x00F0
+0x8D	0x00FD
+0x8E	0x00FE
+0x8F	0x00B1
+0x90	0x00B0
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x00AA
+0x9B	0x00BA
+0x9C	0x00E6
+0x9D	0x00B8
+0x9E	0x00C6
+0x9F	0x20AC
+0xA0	0x00B5
+0xA1	0x00AF
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x00A1
+0xAB	0x00BF
+0xAC	0x00D0
+0xAD	0x00DD
+0xAE	0x00DE
+0xAF	0x00AE
+0xB0	0x00A2
+0xB1	0x005B
+0xB2	0x00A5
+0xB3	0x00B7
+0xB4	0x00A9
+0xB5	0x00A7
+0xB6	0x00B6
+0xB7	0x00BC
+0xB8	0x00BD
+0xB9	0x00BE
+0xBA	0x005E
+0xBB	0x005D
+0xBC	0x007E
+0xBD	0x00A8
+0xBE	0x00B4
+0xBF	0x00D7
+0xC0	0x007B
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x00AD
+0xCB	0x00F4
+0xCC	0x00F6
+0xCD	0x00F2
+0xCE	0x00F3
+0xCF	0x00F5
+0xD0	0x007D
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x00B9
+0xDB	0x00FB
+0xDC	0x00FC
+0xDD	0x00F9
+0xDE	0x00FA
+0xDF	0x00FF
+0xE0	0x005C
+0xE1	0x00F7
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x00B2
+0xEB	0x00D4
+0xEC	0x00D6
+0xED	0x00D2
+0xEE	0x00D3
+0xEF	0x00D5
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x00B3
+0xFB	0x00DB
+0xFC	0x00DC
+0xFD	0x00D9
+0xFE	0x00DA
+0xFF	0x009F
diff --git a/tests/IBM-1147.TXT b/tests/IBM-1147.TXT
new file mode 100644
index 0000000..6669c03
--- /dev/null
+++ b/tests/IBM-1147.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x00E2
+0x43	0x00E4
+0x44	0x0040
+0x45	0x00E1
+0x46	0x00E3
+0x47	0x00E5
+0x48	0x005C
+0x49	0x00F1
+0x4A	0x00B0
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x0021
+0x50	0x0026
+0x51	0x007B
+0x52	0x00EA
+0x53	0x00EB
+0x54	0x007D
+0x55	0x00ED
+0x56	0x00EE
+0x57	0x00EF
+0x58	0x00EC
+0x59	0x00DF
+0x5A	0x00A7
+0x5B	0x0024
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x005E
+0x60	0x002D
+0x61	0x002F
+0x62	0x00C2
+0x63	0x00C4
+0x64	0x00C0
+0x65	0x00C1
+0x66	0x00C3
+0x67	0x00C5
+0x68	0x00C7
+0x69	0x00D1
+0x6A	0x00F9
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x00F8
+0x71	0x00C9
+0x72	0x00CA
+0x73	0x00CB
+0x74	0x00C8
+0x75	0x00CD
+0x76	0x00CE
+0x77	0x00CF
+0x78	0x00CC
+0x79	0x00B5
+0x7A	0x003A
+0x7B	0x00A3
+0x7C	0x00E0
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0x00D8
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x00AB
+0x8B	0x00BB
+0x8C	0x00F0
+0x8D	0x00FD
+0x8E	0x00FE
+0x8F	0x00B1
+0x90	0x005B
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x00AA
+0x9B	0x00BA
+0x9C	0x00E6
+0x9D	0x00B8
+0x9E	0x00C6
+0x9F	0x20AC
+0xA0	0x0060
+0xA1	0x00A8
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x00A1
+0xAB	0x00BF
+0xAC	0x00D0
+0xAD	0x00DD
+0xAE	0x00DE
+0xAF	0x00AE
+0xB0	0x00A2
+0xB1	0x0023
+0xB2	0x00A5
+0xB3	0x00B7
+0xB4	0x00A9
+0xB5	0x005D
+0xB6	0x00B6
+0xB7	0x00BC
+0xB8	0x00BD
+0xB9	0x00BE
+0xBA	0x00AC
+0xBB	0x007C
+0xBC	0x00AF
+0xBD	0x007E
+0xBE	0x00B4
+0xBF	0x00D7
+0xC0	0x00E9
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x00AD
+0xCB	0x00F4
+0xCC	0x00F6
+0xCD	0x00F2
+0xCE	0x00F3
+0xCF	0x00F5
+0xD0	0x00E8
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x00B9
+0xDB	0x00FB
+0xDC	0x00FC
+0xDD	0x00A6
+0xDE	0x00FA
+0xDF	0x00FF
+0xE0	0x00E7
+0xE1	0x00F7
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x00B2
+0xEB	0x00D4
+0xEC	0x00D6
+0xED	0x00D2
+0xEE	0x00D3
+0xEF	0x00D5
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x00B3
+0xFB	0x00DB
+0xFC	0x00DC
+0xFD	0x00D9
+0xFE	0x00DA
+0xFF	0x009F
diff --git a/tests/IBM-1148.TXT b/tests/IBM-1148.TXT
new file mode 100644
index 0000000..c25322a
--- /dev/null
+++ b/tests/IBM-1148.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x00E2
+0x43	0x00E4
+0x44	0x00E0
+0x45	0x00E1
+0x46	0x00E3
+0x47	0x00E5
+0x48	0x00E7
+0x49	0x00F1
+0x4A	0x005B
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x0021
+0x50	0x0026
+0x51	0x00E9
+0x52	0x00EA
+0x53	0x00EB
+0x54	0x00E8
+0x55	0x00ED
+0x56	0x00EE
+0x57	0x00EF
+0x58	0x00EC
+0x59	0x00DF
+0x5A	0x005D
+0x5B	0x0024
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x005E
+0x60	0x002D
+0x61	0x002F
+0x62	0x00C2
+0x63	0x00C4
+0x64	0x00C0
+0x65	0x00C1
+0x66	0x00C3
+0x67	0x00C5
+0x68	0x00C7
+0x69	0x00D1
+0x6A	0x00A6
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x00F8
+0x71	0x00C9
+0x72	0x00CA
+0x73	0x00CB
+0x74	0x00C8
+0x75	0x00CD
+0x76	0x00CE
+0x77	0x00CF
+0x78	0x00CC
+0x79	0x0060
+0x7A	0x003A
+0x7B	0x0023
+0x7C	0x0040
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0x00D8
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x00AB
+0x8B	0x00BB
+0x8C	0x00F0
+0x8D	0x00FD
+0x8E	0x00FE
+0x8F	0x00B1
+0x90	0x00B0
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x00AA
+0x9B	0x00BA
+0x9C	0x00E6
+0x9D	0x00B8
+0x9E	0x00C6
+0x9F	0x20AC
+0xA0	0x00B5
+0xA1	0x007E
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x00A1
+0xAB	0x00BF
+0xAC	0x00D0
+0xAD	0x00DD
+0xAE	0x00DE
+0xAF	0x00AE
+0xB0	0x00A2
+0xB1	0x00A3
+0xB2	0x00A5
+0xB3	0x00B7
+0xB4	0x00A9
+0xB5	0x00A7
+0xB6	0x00B6
+0xB7	0x00BC
+0xB8	0x00BD
+0xB9	0x00BE
+0xBA	0x00AC
+0xBB	0x007C
+0xBC	0x00AF
+0xBD	0x00A8
+0xBE	0x00B4
+0xBF	0x00D7
+0xC0	0x007B
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x00AD
+0xCB	0x00F4
+0xCC	0x00F6
+0xCD	0x00F2
+0xCE	0x00F3
+0xCF	0x00F5
+0xD0	0x007D
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x00B9
+0xDB	0x00FB
+0xDC	0x00FC
+0xDD	0x00F9
+0xDE	0x00FA
+0xDF	0x00FF
+0xE0	0x005C
+0xE1	0x00F7
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x00B2
+0xEB	0x00D4
+0xEC	0x00D6
+0xED	0x00D2
+0xEE	0x00D3
+0xEF	0x00D5
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x00B3
+0xFB	0x00DB
+0xFC	0x00DC
+0xFD	0x00D9
+0xFE	0x00DA
+0xFF	0x009F
diff --git a/tests/IBM-1149.TXT b/tests/IBM-1149.TXT
new file mode 100644
index 0000000..ccaad96
--- /dev/null
+++ b/tests/IBM-1149.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x00E2
+0x43	0x00E4
+0x44	0x00E0
+0x45	0x00E1
+0x46	0x00E3
+0x47	0x00E5
+0x48	0x00E7
+0x49	0x00F1
+0x4A	0x00DE
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x0021
+0x50	0x0026
+0x51	0x00E9
+0x52	0x00EA
+0x53	0x00EB
+0x54	0x00E8
+0x55	0x00ED
+0x56	0x00EE
+0x57	0x00EF
+0x58	0x00EC
+0x59	0x00DF
+0x5A	0x00C6
+0x5B	0x0024
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x00D6
+0x60	0x002D
+0x61	0x002F
+0x62	0x00C2
+0x63	0x00C4
+0x64	0x00C0
+0x65	0x00C1
+0x66	0x00C3
+0x67	0x00C5
+0x68	0x00C7
+0x69	0x00D1
+0x6A	0x00A6
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x00F8
+0x71	0x00C9
+0x72	0x00CA
+0x73	0x00CB
+0x74	0x00C8
+0x75	0x00CD
+0x76	0x00CE
+0x77	0x00CF
+0x78	0x00CC
+0x79	0x00F0
+0x7A	0x003A
+0x7B	0x0023
+0x7C	0x00D0
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0x00D8
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x00AB
+0x8B	0x00BB
+0x8C	0x0060
+0x8D	0x00FD
+0x8E	0x007B
+0x8F	0x00B1
+0x90	0x00B0
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x00AA
+0x9B	0x00BA
+0x9C	0x007D
+0x9D	0x00B8
+0x9E	0x005D
+0x9F	0x20AC
+0xA0	0x00B5
+0xA1	0x00F6
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x00A1
+0xAB	0x00BF
+0xAC	0x0040
+0xAD	0x00DD
+0xAE	0x005B
+0xAF	0x00AE
+0xB0	0x00A2
+0xB1	0x00A3
+0xB2	0x00A5
+0xB3	0x00B7
+0xB4	0x00A9
+0xB5	0x00A7
+0xB6	0x00B6
+0xB7	0x00BC
+0xB8	0x00BD
+0xB9	0x00BE
+0xBA	0x00AC
+0xBB	0x007C
+0xBC	0x00AF
+0xBD	0x00A8
+0xBE	0x005C
+0xBF	0x00D7
+0xC0	0x00FE
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x00AD
+0xCB	0x00F4
+0xCC	0x007E
+0xCD	0x00F2
+0xCE	0x00F3
+0xCF	0x00F5
+0xD0	0x00E6
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x00B9
+0xDB	0x00FB
+0xDC	0x00FC
+0xDD	0x00F9
+0xDE	0x00FA
+0xDF	0x00FF
+0xE0	0x00B4
+0xE1	0x00F7
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x00B2
+0xEB	0x00D4
+0xEC	0x005E
+0xED	0x00D2
+0xEE	0x00D3
+0xEF	0x00D5
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x00B3
+0xFB	0x00DB
+0xFC	0x00DC
+0xFD	0x00D9
+0xFE	0x00DA
+0xFF	0x009F
diff --git a/tests/IBM-1153.TXT b/tests/IBM-1153.TXT
new file mode 100644
index 0000000..cab4652
--- /dev/null
+++ b/tests/IBM-1153.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x00E2
+0x43	0x00E4
+0x44	0x0163
+0x45	0x00E1
+0x46	0x0103
+0x47	0x010D
+0x48	0x00E7
+0x49	0x0107
+0x4A	0x005B
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x0021
+0x50	0x0026
+0x51	0x00E9
+0x52	0x0119
+0x53	0x00EB
+0x54	0x016F
+0x55	0x00ED
+0x56	0x00EE
+0x57	0x013E
+0x58	0x013A
+0x59	0x00DF
+0x5A	0x005D
+0x5B	0x0024
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x005E
+0x60	0x002D
+0x61	0x002F
+0x62	0x00C2
+0x63	0x00C4
+0x64	0x02DD
+0x65	0x00C1
+0x66	0x0102
+0x67	0x010C
+0x68	0x00C7
+0x69	0x0106
+0x6A	0x007C
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x02C7
+0x71	0x00C9
+0x72	0x0118
+0x73	0x00CB
+0x74	0x016E
+0x75	0x00CD
+0x76	0x00CE
+0x77	0x013D
+0x78	0x0139
+0x79	0x0060
+0x7A	0x003A
+0x7B	0x0023
+0x7C	0x0040
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0x02D8
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x015B
+0x8B	0x0148
+0x8C	0x0111
+0x8D	0x00FD
+0x8E	0x0159
+0x8F	0x015F
+0x90	0x00B0
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x0142
+0x9B	0x0144
+0x9C	0x0161
+0x9D	0x00B8
+0x9E	0x02DB
+0x9F	0x20AC
+0xA0	0x0105
+0xA1	0x007E
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x015A
+0xAB	0x0147
+0xAC	0x0110
+0xAD	0x00DD
+0xAE	0x0158
+0xAF	0x015E
+0xB0	0x02D9
+0xB1	0x0104
+0xB2	0x017C
+0xB3	0x0162
+0xB4	0x017B
+0xB5	0x00A7
+0xB6	0x017E
+0xB7	0x017A
+0xB8	0x017D
+0xB9	0x0179
+0xBA	0x0141
+0xBB	0x0143
+0xBC	0x0160
+0xBD	0x00A8
+0xBE	0x00B4
+0xBF	0x00D7
+0xC0	0x007B
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x00AD
+0xCB	0x00F4
+0xCC	0x00F6
+0xCD	0x0155
+0xCE	0x00F3
+0xCF	0x0151
+0xD0	0x007D
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x011A
+0xDB	0x0171
+0xDC	0x00FC
+0xDD	0x0165
+0xDE	0x00FA
+0xDF	0x011B
+0xE0	0x005C
+0xE1	0x00F7
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x010F
+0xEB	0x00D4
+0xEC	0x00D6
+0xED	0x0154
+0xEE	0x00D3
+0xEF	0x0150
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x010E
+0xFB	0x0170
+0xFC	0x00DC
+0xFD	0x0164
+0xFE	0x00DA
+0xFF	0x009F
diff --git a/tests/IBM-1154.TXT b/tests/IBM-1154.TXT
new file mode 100644
index 0000000..ec1f6a1
--- /dev/null
+++ b/tests/IBM-1154.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x0452
+0x43	0x0453
+0x44	0x0451
+0x45	0x0454
+0x46	0x0455
+0x47	0x0456
+0x48	0x0457
+0x49	0x0458
+0x4A	0x005B
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x0021
+0x50	0x0026
+0x51	0x0459
+0x52	0x045A
+0x53	0x045B
+0x54	0x045C
+0x55	0x045E
+0x56	0x045F
+0x57	0x042A
+0x58	0x2116
+0x59	0x0402
+0x5A	0x005D
+0x5B	0x0024
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x005E
+0x60	0x002D
+0x61	0x002F
+0x62	0x0403
+0x63	0x0401
+0x64	0x0404
+0x65	0x0405
+0x66	0x0406
+0x67	0x0407
+0x68	0x0408
+0x69	0x0409
+0x6A	0x007C
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x040A
+0x71	0x040B
+0x72	0x040C
+0x73	0x00AD
+0x74	0x040E
+0x75	0x040F
+0x76	0x044E
+0x77	0x0430
+0x78	0x0431
+0x79	0x0060
+0x7A	0x003A
+0x7B	0x0023
+0x7C	0x0040
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0x0446
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x0434
+0x8B	0x0435
+0x8C	0x0444
+0x8D	0x0433
+0x8E	0x0445
+0x8F	0x0438
+0x90	0x0439
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x043A
+0x9B	0x043B
+0x9C	0x043C
+0x9D	0x043D
+0x9E	0x043E
+0x9F	0x043F
+0xA0	0x044F
+0xA1	0x007E
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x0440
+0xAB	0x0441
+0xAC	0x0442
+0xAD	0x0443
+0xAE	0x0436
+0xAF	0x0432
+0xB0	0x044C
+0xB1	0x044B
+0xB2	0x0437
+0xB3	0x0448
+0xB4	0x044D
+0xB5	0x0449
+0xB6	0x0447
+0xB7	0x044A
+0xB8	0x042E
+0xB9	0x0410
+0xBA	0x0411
+0xBB	0x0426
+0xBC	0x0414
+0xBD	0x0415
+0xBE	0x0424
+0xBF	0x0413
+0xC0	0x007B
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x0425
+0xCB	0x0418
+0xCC	0x0419
+0xCD	0x041A
+0xCE	0x041B
+0xCF	0x041C
+0xD0	0x007D
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x041D
+0xDB	0x041E
+0xDC	0x041F
+0xDD	0x042F
+0xDE	0x0420
+0xDF	0x0421
+0xE0	0x005C
+0xE1	0x20AC
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x0422
+0xEB	0x0423
+0xEC	0x0416
+0xED	0x0412
+0xEE	0x042C
+0xEF	0x042B
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x0417
+0xFB	0x0428
+0xFC	0x042D
+0xFD	0x0429
+0xFE	0x0427
+0xFF	0x009F
diff --git a/tests/IBM-1155.TXT b/tests/IBM-1155.TXT
new file mode 100644
index 0000000..e1046e6
--- /dev/null
+++ b/tests/IBM-1155.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x00E2
+0x43	0x00E4
+0x44	0x00E0
+0x45	0x00E1
+0x46	0x00E3
+0x47	0x00E5
+0x48	0x007B
+0x49	0x00F1
+0x4A	0x00C7
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x0021
+0x50	0x0026
+0x51	0x00E9
+0x52	0x00EA
+0x53	0x00EB
+0x54	0x00E8
+0x55	0x00ED
+0x56	0x00EE
+0x57	0x00EF
+0x58	0x00EC
+0x59	0x00DF
+0x5A	0x011E
+0x5B	0x0130
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x005E
+0x60	0x002D
+0x61	0x002F
+0x62	0x00C2
+0x63	0x00C4
+0x64	0x00C0
+0x65	0x00C1
+0x66	0x00C3
+0x67	0x00C5
+0x68	0x005B
+0x69	0x00D1
+0x6A	0x015F
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x00F8
+0x71	0x00C9
+0x72	0x00CA
+0x73	0x00CB
+0x74	0x00C8
+0x75	0x00CD
+0x76	0x00CE
+0x77	0x00CF
+0x78	0x00CC
+0x79	0x0131
+0x7A	0x003A
+0x7B	0x00D6
+0x7C	0x015E
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x00DC
+0x80	0x00D8
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x00AB
+0x8B	0x00BB
+0x8C	0x007D
+0x8D	0x0060
+0x8E	0x00A6
+0x8F	0x00B1
+0x90	0x00B0
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x00AA
+0x9B	0x00BA
+0x9C	0x00E6
+0x9D	0x00B8
+0x9E	0x00C6
+0x9F	0x20AC
+0xA0	0x00B5
+0xA1	0x00F6
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x00A1
+0xAB	0x00BF
+0xAC	0x005D
+0xAD	0x0024
+0xAE	0x0040
+0xAF	0x00AE
+0xB0	0x00A2
+0xB1	0x00A3
+0xB2	0x00A5
+0xB3	0x00B7
+0xB4	0x00A9
+0xB5	0x00A7
+0xB6	0x00B6
+0xB7	0x00BC
+0xB8	0x00BD
+0xB9	0x00BE
+0xBA	0x00AC
+0xBB	0x007C
+0xBC	0x00AF
+0xBD	0x00A8
+0xBE	0x00B4
+0xBF	0x00D7
+0xC0	0x00E7
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x00AD
+0xCB	0x00F4
+0xCC	0x007E
+0xCD	0x00F2
+0xCE	0x00F3
+0xCF	0x00F5
+0xD0	0x011F
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x00B9
+0xDB	0x00FB
+0xDC	0x005C
+0xDD	0x00F9
+0xDE	0x00FA
+0xDF	0x00FF
+0xE0	0x00FC
+0xE1	0x00F7
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x00B2
+0xEB	0x00D4
+0xEC	0x0023
+0xED	0x00D2
+0xEE	0x00D3
+0xEF	0x00D5
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x00B3
+0xFB	0x00DB
+0xFC	0x0022
+0xFD	0x00D9
+0xFE	0x00DA
+0xFF	0x009F
diff --git a/tests/IBM-1156.TXT b/tests/IBM-1156.TXT
new file mode 100644
index 0000000..2816dc1
--- /dev/null
+++ b/tests/IBM-1156.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x0161
+0x43	0x00E4
+0x44	0x0105
+0x45	0x012F
+0x46	0x016B
+0x47	0x00E5
+0x48	0x0113
+0x49	0x017E
+0x4A	0x00A2
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x007C
+0x50	0x0026
+0x51	0x00E9
+0x52	0x0119
+0x53	0x0117
+0x54	0x010D
+0x55	0x0173
+0x56	0x201E
+0x57	0x201C
+0x58	0x0123
+0x59	0x00DF
+0x5A	0x0021
+0x5B	0x0024
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x00AC
+0x60	0x002D
+0x61	0x002F
+0x62	0x0160
+0x63	0x00C4
+0x64	0x0104
+0x65	0x012E
+0x66	0x016A
+0x67	0x00C5
+0x68	0x0112
+0x69	0x017D
+0x6A	0x00A6
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x00F8
+0x71	0x00C9
+0x72	0x0118
+0x73	0x0116
+0x74	0x010C
+0x75	0x0172
+0x76	0x012A
+0x77	0x013B
+0x78	0x0122
+0x79	0x0060
+0x7A	0x003A
+0x7B	0x0023
+0x7C	0x0040
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0x00D8
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x00AB
+0x8B	0x00BB
+0x8C	0x0101
+0x8D	0x017C
+0x8E	0x0144
+0x8F	0x00B1
+0x90	0x00B0
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x0156
+0x9B	0x0157
+0x9C	0x00E6
+0x9D	0x0137
+0x9E	0x00C6
+0x9F	0x20AC
+0xA0	0x00B5
+0xA1	0x007E
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x201D
+0xAB	0x017A
+0xAC	0x0100
+0xAD	0x017B
+0xAE	0x0143
+0xAF	0x00AE
+0xB0	0x005E
+0xB1	0x00A3
+0xB2	0x012B
+0xB3	0x00B7
+0xB4	0x00A9
+0xB5	0x00A7
+0xB6	0x00B6
+0xB7	0x00BC
+0xB8	0x00BD
+0xB9	0x00BE
+0xBA	0x005B
+0xBB	0x005D
+0xBC	0x0179
+0xBD	0x0136
+0xBE	0x013C
+0xBF	0x00D7
+0xC0	0x007B
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x00AD
+0xCB	0x014D
+0xCC	0x00F6
+0xCD	0x0146
+0xCE	0x00F3
+0xCF	0x00F5
+0xD0	0x007D
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x00B9
+0xDB	0x0107
+0xDC	0x00FC
+0xDD	0x0142
+0xDE	0x015B
+0xDF	0x2019
+0xE0	0x005C
+0xE1	0x00F7
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x00B2
+0xEB	0x014C
+0xEC	0x00D6
+0xED	0x0145
+0xEE	0x00D3
+0xEF	0x00D5
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x00B3
+0xFB	0x0106
+0xFC	0x00DC
+0xFD	0x0141
+0xFE	0x015A
+0xFF	0x009F
diff --git a/tests/IBM-1157.TXT b/tests/IBM-1157.TXT
new file mode 100644
index 0000000..57801a5
--- /dev/null
+++ b/tests/IBM-1157.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x00E2
+0x43	0x007B
+0x44	0x00E0
+0x45	0x00E1
+0x46	0x00E3
+0x47	0x007D
+0x48	0x00E7
+0x49	0x00F1
+0x4A	0x00A7
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x0021
+0x50	0x0026
+0x51	0x0060
+0x52	0x00EA
+0x53	0x00EB
+0x54	0x00E8
+0x55	0x00ED
+0x56	0x00EE
+0x57	0x00EF
+0x58	0x00EC
+0x59	0x00DF
+0x5A	0x20AC
+0x5B	0x00C5
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x005E
+0x60	0x002D
+0x61	0x002F
+0x62	0x00C2
+0x63	0x0023
+0x64	0x00C0
+0x65	0x00C1
+0x66	0x00C3
+0x67	0x0024
+0x68	0x00C7
+0x69	0x00D1
+0x6A	0x00F6
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x00F8
+0x71	0x005C
+0x72	0x00CA
+0x73	0x00CB
+0x74	0x00C8
+0x75	0x00CD
+0x76	0x00CE
+0x77	0x00CF
+0x78	0x00CC
+0x79	0x00E9
+0x7A	0x003A
+0x7B	0x00C4
+0x7C	0x00D6
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0x00D8
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x00AB
+0x8B	0x00BB
+0x8C	0x0161
+0x8D	0x00FD
+0x8E	0x017E
+0x8F	0x00B1
+0x90	0x00B0
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x00AA
+0x9B	0x00BA
+0x9C	0x00E6
+0x9D	0x00B8
+0x9E	0x00C6
+0x9F	0x005D
+0xA0	0x00B5
+0xA1	0x00FC
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x00A1
+0xAB	0x00BF
+0xAC	0x0160
+0xAD	0x00DD
+0xAE	0x017D
+0xAF	0x00AE
+0xB0	0x00A2
+0xB1	0x00A3
+0xB2	0x00A5
+0xB3	0x00B7
+0xB4	0x00A9
+0xB5	0x005B
+0xB6	0x00B6
+0xB7	0x00BC
+0xB8	0x00BD
+0xB9	0x00BE
+0xBA	0x00AC
+0xBB	0x007C
+0xBC	0x00AF
+0xBD	0x00A8
+0xBE	0x00B4
+0xBF	0x00D7
+0xC0	0x00E4
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x00AD
+0xCB	0x00F4
+0xCC	0x00A6
+0xCD	0x00F2
+0xCE	0x00F3
+0xCF	0x00F5
+0xD0	0x00E5
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x00B9
+0xDB	0x00FB
+0xDC	0x007E
+0xDD	0x00F9
+0xDE	0x00FA
+0xDF	0x00FF
+0xE0	0x00C9
+0xE1	0x00F7
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x00B2
+0xEB	0x00D4
+0xEC	0x0040
+0xED	0x00D2
+0xEE	0x00D3
+0xEF	0x00D5
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x00B3
+0xFB	0x00DB
+0xFC	0x00DC
+0xFD	0x00D9
+0xFE	0x00DA
+0xFF	0x009F
diff --git a/tests/IBM-1158.TXT b/tests/IBM-1158.TXT
new file mode 100644
index 0000000..7ef39fb
--- /dev/null
+++ b/tests/IBM-1158.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x0452
+0x43	0x0491
+0x44	0x0451
+0x45	0x0454
+0x46	0x0455
+0x47	0x0456
+0x48	0x0457
+0x49	0x0458
+0x4A	0x005B
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x0021
+0x50	0x0026
+0x51	0x0459
+0x52	0x045A
+0x53	0x045B
+0x54	0x045C
+0x55	0x045E
+0x56	0x045F
+0x57	0x042A
+0x58	0x2116
+0x59	0x0402
+0x5A	0x005D
+0x5B	0x0024
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x005E
+0x60	0x002D
+0x61	0x002F
+0x62	0x0490
+0x63	0x0401
+0x64	0x0404
+0x65	0x0405
+0x66	0x0406
+0x67	0x0407
+0x68	0x0408
+0x69	0x0409
+0x6A	0x007C
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x040A
+0x71	0x040B
+0x72	0x040C
+0x73	0x00AD
+0x74	0x040E
+0x75	0x040F
+0x76	0x044E
+0x77	0x0430
+0x78	0x0431
+0x79	0x0060
+0x7A	0x003A
+0x7B	0x0023
+0x7C	0x0040
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0x0446
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x0434
+0x8B	0x0435
+0x8C	0x0444
+0x8D	0x0433
+0x8E	0x0445
+0x8F	0x0438
+0x90	0x0439
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x043A
+0x9B	0x043B
+0x9C	0x043C
+0x9D	0x043D
+0x9E	0x043E
+0x9F	0x043F
+0xA0	0x044F
+0xA1	0x007E
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x0440
+0xAB	0x0441
+0xAC	0x0442
+0xAD	0x0443
+0xAE	0x0436
+0xAF	0x0432
+0xB0	0x044C
+0xB1	0x044B
+0xB2	0x0437
+0xB3	0x0448
+0xB4	0x044D
+0xB5	0x0449
+0xB6	0x0447
+0xB7	0x044A
+0xB8	0x042E
+0xB9	0x0410
+0xBA	0x0411
+0xBB	0x0426
+0xBC	0x0414
+0xBD	0x0415
+0xBE	0x0424
+0xBF	0x0413
+0xC0	0x007B
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x0425
+0xCB	0x0418
+0xCC	0x0419
+0xCD	0x041A
+0xCE	0x041B
+0xCF	0x041C
+0xD0	0x007D
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x041D
+0xDB	0x041E
+0xDC	0x041F
+0xDD	0x042F
+0xDE	0x0420
+0xDF	0x0421
+0xE0	0x005C
+0xE1	0x20AC
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x0422
+0xEB	0x0423
+0xEC	0x0416
+0xED	0x0412
+0xEE	0x042C
+0xEF	0x042B
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x0417
+0xFB	0x0428
+0xFC	0x042D
+0xFD	0x0429
+0xFE	0x0427
+0xFF	0x009F
diff --git a/tests/IBM-1160.IRREVERSIBLE.TXT b/tests/IBM-1160.IRREVERSIBLE.TXT
new file mode 100644
index 0000000..494fef2
--- /dev/null
+++ b/tests/IBM-1160.IRREVERSIBLE.TXT
@@ -0,0 +1,4 @@
+0x51	0x0E48
+0xCA	0x0E49
+0xE1	0x0E4A
+0xFD	0x0E4B
diff --git a/tests/IBM-1160.TXT b/tests/IBM-1160.TXT
new file mode 100644
index 0000000..fe902e5
--- /dev/null
+++ b/tests/IBM-1160.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x0E01
+0x43	0x0E02
+0x44	0x0E03
+0x45	0x0E04
+0x46	0x0E05
+0x47	0x0E06
+0x48	0x0E07
+0x49	0x005B
+0x4A	0x00A2
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x007C
+0x50	0x0026
+0x51	0x0E48
+0x52	0x0E08
+0x53	0x0E09
+0x54	0x0E0A
+0x55	0x0E0B
+0x56	0x0E0C
+0x57	0x0E0D
+0x58	0x0E0E
+0x59	0x005D
+0x5A	0x0021
+0x5B	0x0024
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x00AC
+0x60	0x002D
+0x61	0x002F
+0x62	0x0E0F
+0x63	0x0E10
+0x64	0x0E11
+0x65	0x0E12
+0x66	0x0E13
+0x67	0x0E14
+0x68	0x0E15
+0x69	0x005E
+0x6A	0x00A6
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x0E3F
+0x71	0x0E4E
+0x72	0x0E16
+0x73	0x0E17
+0x74	0x0E18
+0x75	0x0E19
+0x76	0x0E1A
+0x77	0x0E1B
+0x78	0x0E1C
+0x79	0x0060
+0x7A	0x003A
+0x7B	0x0023
+0x7C	0x0040
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0x0E4F
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x0E1D
+0x8B	0x0E1E
+0x8C	0x0E1F
+0x8D	0x0E20
+0x8E	0x0E21
+0x8F	0x0E22
+0x90	0x0E5A
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x0E23
+0x9B	0x0E24
+0x9C	0x0E25
+0x9D	0x0E26
+0x9E	0x0E27
+0x9F	0x0E28
+0xA0	0x0E5B
+0xA1	0x007E
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x0E29
+0xAB	0x0E2A
+0xAC	0x0E2B
+0xAD	0x0E2C
+0xAE	0x0E2D
+0xAF	0x0E2E
+0xB0	0x0E50
+0xB1	0x0E51
+0xB2	0x0E52
+0xB3	0x0E53
+0xB4	0x0E54
+0xB5	0x0E55
+0xB6	0x0E56
+0xB7	0x0E57
+0xB8	0x0E58
+0xB9	0x0E59
+0xBA	0x0E2F
+0xBB	0x0E30
+0xBC	0x0E31
+0xBD	0x0E32
+0xBE	0x0E33
+0xBF	0x0E34
+0xC0	0x007B
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x0E49
+0xCB	0x0E35
+0xCC	0x0E36
+0xCD	0x0E37
+0xCE	0x0E38
+0xCF	0x0E39
+0xD0	0x007D
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x0E3A
+0xDB	0x0E40
+0xDC	0x0E41
+0xDD	0x0E42
+0xDE	0x0E43
+0xDF	0x0E44
+0xE0	0x005C
+0xE1	0x0E4A
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x0E45
+0xEB	0x0E46
+0xEC	0x0E47
+0xED	0x0E48
+0xEE	0x0E49
+0xEF	0x0E4A
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x0E4B
+0xFB	0x0E4C
+0xFC	0x0E4D
+0xFD	0x0E4B
+0xFE	0x20AC
+0xFF	0x009F
diff --git a/tests/IBM-1164.TXT b/tests/IBM-1164.TXT
new file mode 100644
index 0000000..7015807
--- /dev/null
+++ b/tests/IBM-1164.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x00E2
+0x43	0x00E4
+0x44	0x00E0
+0x45	0x00E1
+0x46	0x0103
+0x47	0x00E5
+0x48	0x00E7
+0x49	0x00F1
+0x4A	0x005B
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x0021
+0x50	0x0026
+0x51	0x00E9
+0x52	0x00EA
+0x53	0x00EB
+0x54	0x00E8
+0x55	0x00ED
+0x56	0x00EE
+0x57	0x00EF
+0x58	0x0303
+0x59	0x00DF
+0x5A	0x005D
+0x5B	0x0024
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x005E
+0x60	0x002D
+0x61	0x002F
+0x62	0x00C2
+0x63	0x00C4
+0x64	0x00C0
+0x65	0x00C1
+0x66	0x0102
+0x67	0x00C5
+0x68	0x00C7
+0x69	0x00D1
+0x6A	0x00A6
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x00F8
+0x71	0x00C9
+0x72	0x00CA
+0x73	0x00CB
+0x74	0x00C8
+0x75	0x00CD
+0x76	0x00CE
+0x77	0x00CF
+0x78	0x20AB
+0x79	0x0060
+0x7A	0x003A
+0x7B	0x0023
+0x7C	0x0040
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0x00D8
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x00AB
+0x8B	0x00BB
+0x8C	0x0111
+0x8D	0x0309
+0x8E	0x0300
+0x8F	0x00B1
+0x90	0x00B0
+0x91	0x006A
+0x92	0x006B
+0x93	0x006C
+0x94	0x006D
+0x95	0x006E
+0x96	0x006F
+0x97	0x0070
+0x98	0x0071
+0x99	0x0072
+0x9A	0x00AA
+0x9B	0x00BA
+0x9C	0x00E6
+0x9D	0x0152
+0x9E	0x00C6
+0x9F	0x20AC
+0xA0	0x00B5
+0xA1	0x007E
+0xA2	0x0073
+0xA3	0x0074
+0xA4	0x0075
+0xA5	0x0076
+0xA6	0x0077
+0xA7	0x0078
+0xA8	0x0079
+0xA9	0x007A
+0xAA	0x00A1
+0xAB	0x00BF
+0xAC	0x0110
+0xAD	0x0323
+0xAE	0x0301
+0xAF	0x00AE
+0xB0	0x00A2
+0xB1	0x00A3
+0xB2	0x00A5
+0xB3	0x00B7
+0xB4	0x00A9
+0xB5	0x00A7
+0xB6	0x00B6
+0xB7	0x00BC
+0xB8	0x00BD
+0xB9	0x00BE
+0xBA	0x00AC
+0xBB	0x007C
+0xBC	0x00AF
+0xBD	0x0153
+0xBE	0x0178
+0xBF	0x00D7
+0xC0	0x007B
+0xC1	0x0041
+0xC2	0x0042
+0xC3	0x0043
+0xC4	0x0044
+0xC5	0x0045
+0xC6	0x0046
+0xC7	0x0047
+0xC8	0x0048
+0xC9	0x0049
+0xCA	0x00AD
+0xCB	0x00F4
+0xCC	0x00F6
+0xCD	0x01B0
+0xCE	0x00F3
+0xCF	0x01A1
+0xD0	0x007D
+0xD1	0x004A
+0xD2	0x004B
+0xD3	0x004C
+0xD4	0x004D
+0xD5	0x004E
+0xD6	0x004F
+0xD7	0x0050
+0xD8	0x0051
+0xD9	0x0052
+0xDA	0x00B9
+0xDB	0x00FB
+0xDC	0x00FC
+0xDD	0x00F9
+0xDE	0x00FA
+0xDF	0x00FF
+0xE0	0x005C
+0xE1	0x00F7
+0xE2	0x0053
+0xE3	0x0054
+0xE4	0x0055
+0xE5	0x0056
+0xE6	0x0057
+0xE7	0x0058
+0xE8	0x0059
+0xE9	0x005A
+0xEA	0x00B2
+0xEB	0x00D4
+0xEC	0x00D6
+0xED	0x01AF
+0xEE	0x00D3
+0xEF	0x01A0
+0xF0	0x0030
+0xF1	0x0031
+0xF2	0x0032
+0xF3	0x0033
+0xF4	0x0034
+0xF5	0x0035
+0xF6	0x0036
+0xF7	0x0037
+0xF8	0x0038
+0xF9	0x0039
+0xFA	0x00B3
+0xFB	0x00DB
+0xFC	0x00DC
+0xFD	0x00D9
+0xFE	0x00DA
+0xFF	0x009F
diff --git a/tests/IBM-1165.TXT b/tests/IBM-1165.TXT
new file mode 100644
index 0000000..e26969a
--- /dev/null
+++ b/tests/IBM-1165.TXT
@@ -0,0 +1,256 @@
+0x00	0x0000
+0x01	0x0001
+0x02	0x0002
+0x03	0x0003
+0x04	0x009C
+0x05	0x0009
+0x06	0x0086
+0x07	0x007F
+0x08	0x0097
+0x09	0x008D
+0x0A	0x008E
+0x0B	0x000B
+0x0C	0x000C
+0x0D	0x000D
+0x0E	0x000E
+0x0F	0x000F
+0x10	0x0010
+0x11	0x0011
+0x12	0x0012
+0x13	0x0013
+0x14	0x009D
+0x15	0x0085
+0x16	0x0008
+0x17	0x0087
+0x18	0x0018
+0x19	0x0019
+0x1A	0x0092
+0x1B	0x008F
+0x1C	0x001C
+0x1D	0x001D
+0x1E	0x001E
+0x1F	0x001F
+0x20	0x0080
+0x21	0x0081
+0x22	0x0082
+0x23	0x0083
+0x24	0x0084
+0x25	0x000A
+0x26	0x0017
+0x27	0x001B
+0x28	0x0088
+0x29	0x0089
+0x2A	0x008A
+0x2B	0x008B
+0x2C	0x008C
+0x2D	0x0005
+0x2E	0x0006
+0x2F	0x0007
+0x30	0x0090
+0x31	0x0091
+0x32	0x0016
+0x33	0x0093
+0x34	0x0094
+0x35	0x0095
+0x36	0x0096
+0x37	0x0004
+0x38	0x0098
+0x39	0x0099
+0x3A	0x009A
+0x3B	0x009B
+0x3C	0x0014
+0x3D	0x0015
+0x3E	0x009E
+0x3F	0x001A
+0x40	0x0020
+0x41	0x00A0
+0x42	0x00E2
+0x43	0x00E4
+0x44	0x0163
+0x45	0x00E1
+0x46	0x0103
+0x47	0x010D
+0x48	0x00E7
+0x49	0x0107
+0x4A	0x00DD
+0x4B	0x002E
+0x4C	0x003C
+0x4D	0x0028
+0x4E	0x002B
+0x4F	0x007C
+0x50	0x0026
+0x51	0x00E9
+0x52	0x0119
+0x53	0x00EB
+0x54	0x016F
+0x55	0x00ED
+0x56	0x00EE
+0x57	0x013E
+0x58	0x013A
+0x59	0x00DF
+0x5A	0x0021
+0x5B	0x0024
+0x5C	0x002A
+0x5D	0x0029
+0x5E	0x003B
+0x5F	0x005E
+0x60	0x002D
+0x61	0x002F
+0x62	0x00C2
+0x63	0x00C4
+0x64	0x02DD
+0x65	0x00C1
+0x66	0x0102
+0x67	0x010C
+0x68	0x00C7
+0x69	0x0106
+0x6A	0x00A8
+0x6B	0x002C
+0x6C	0x0025
+0x6D	0x005F
+0x6E	0x003E
+0x6F	0x003F
+0x70	0x02C7
+0x71	0x00C9
+0x72	0x0118
+0x73	0x00CB
+0x74	0x016E
+0x75	0x00CD
+0x76	0x00CE
+0x77	0x013D
+0x78	0x0139
+0x79	0x0060
+0x7A	0x003A
+0x7B	0x0023
+0x7C	0x0040
+0x7D	0x0027
+0x7E	0x003D
+0x7F	0x0022
+0x80	0x02D8
+0x81	0x0061
+0x82	0x0062
+0x83	0x0063
+0x84	0x0064
+0x85	0x0065
+0x86	0x0066
+0x87	0x0067
+0x88	0x0068
+0x89	0x0069
+0x8A	0x015B
+0x8B	0x0148
+0x8C	0x0111
+0x8D	0x00FD
+0x8E	0x0159
+0x8F	0x015F
+0x90	0x00B0
+0x91	0x006A
+0x92	0x006B