captured from a message in a public CompuServe Forum
Author: Dick Goran, (see EMail
Addresses)
(see also RXGWA1 - ASCII <-> EBCDIC)
The tables below can be used with the REXX TRANSLATE() instruction:
/**********************************************************************/
/* EBCDIC To ASCII & ASCII To EBCDIC Translate Tables */
/**********************************************************************/
EBCDIC_OUT = XRANGE(000, 003) ||, /* NUL SOH STX ETX */
XRANGE(055, 055) ||, /* EOT */
XRANGE(045, 047) ||, /* ENQ ACK BEL */
XRANGE(022, 022) ||, /* BS */
XRANGE(005, 005) ||, /* HT */
XRANGE(037, 037) ||, /* LF */
XRANGE(011, 018) ||, /* VT FF CR SO SI DLE DC1 DC2 */
XRANGE(000, 000) ||, /* DC3 */
XRANGE(060, 061) ||, /* DC4 NAK */
XRANGE(050, 050) ||, /* SYN */
XRANGE(038, 038) ||, /* ETB */
XRANGE(024, 025) ||, /* CAN EM */
XRANGE(063, 063) ||, /* SUB */
XRANGE(039, 039) ||, /* ESC */
XRANGE(028, 031) ||, /* FS GS RS US */
XRANGE(090, 090) ||, /* ! */
XRANGE(127, 127) ||, /* " */
XRANGE(123, 123) ||, /* # */
XRANGE(091, 091) ||, /* $ */
XRANGE(108, 108) ||, /* % */
XRANGE(080, 080) ||, /* & */
XRANGE(125, 125) ||, /* ' */
XRANGE(077, 077) ||, /* ( */
XRANGE(093, 093) ||, /* ) */
XRANGE(092, 092) ||, /* * */
XRANGE(078, 078) ||, /* + */
XRANGE(107, 107) ||, /* , */
XRANGE(096, 096) ||, /* - */
XRANGE(075, 075) ||, /* . */
XRANGE(097, 097) ||, /* / */
XRANGE(240, 249) ||, /* 0 - 9 */
XRANGE(122, 122) ||, /* : */
XRANGE(094, 094) ||, /* ; */
XRANGE(076, 076) ||, /* < */
XRANGE(126, 126) ||, /* = */
XRANGE(110, 110) ||, /* > */
XRANGE(111, 111) ||, /* ? */
XRANGE(124, 124) ||, /* @ */
XRANGE(193, 201) ||, /* A - I */
XRANGE(209, 217) ||, /* J - R */
XRANGE(226, 233) ||, /* S - Z */
XRANGE(173, 173) ||, /* [ */
XRANGE(224, 224) ||, /* \ */
XRANGE(189, 189) ||, /* ] */
XRANGE(095, 095) ||, /* ^ */
XRANGE(109, 109) ||, /* _ */
XRANGE(121, 121) ||, /* ` */
XRANGE(129, 137) ||, /* a - i */
XRANGE(145, 153) ||, /* j - r */
XRANGE(162, 169) ||, /* s - z */
XRANGE(139, 139) ||, /* { */
XRANGE(106, 106) ||, /* | */
XRANGE(155, 155) ||, /* } */
XRANGE(161, 161) ||, /* ~ */
XRANGE(007, 007) /* DEL */
ASCII_OUT = XRANGE(000, 003) ||, /* NUL SOH STX ETX */
XRANGE(000, 000) ||, /* PF */
XRANGE(009, 009) ||, /* HT */
XRANGE(000, 000) ||, /* LC */
XRANGE(127, 127) ||, /* DEL */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* SMM */
XRANGE(011, 018) ||, /* VT CR SO SI DLE DC1 DC2 */
XRANGE(000, 000) ||, /* TM */
XRANGE(000, 000) ||, /* RES */
XRANGE(000, 000) ||, /* NL */
XRANGE(008, 008) ||, /* BS */
XRANGE(000, 000) ||, /* IL */
XRANGE(024, 025) ||, /* CAN EM */
XRANGE(000, 000) ||, /* CC */
XRANGE(000, 000) ||, /* CU1 */
XRANGE(028, 031) ||, /* FS GS RS US */
XRANGE(000, 000) ||, /* DS */
XRANGE(000, 000) ||, /* SOS */
XRANGE(028, 028) ||, /* FS */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* BYP */
XRANGE(010, 010) ||, /* LF */
XRANGE(023, 023) ||, /* ETB */
XRANGE(027, 027) ||, /* ESC */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* SM */
XRANGE(000, 000) ||, /* CU2 */
XRANGE(000, 000) ||, /* */
XRANGE(005, 007) ||, /* ENQ ACK BEL */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(022, 022) ||, /* SYN */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* PN */
XRANGE(000, 000) ||, /* RS */
XRANGE(000, 000) ||, /* UC */
XRANGE(004, 004) ||, /* EOT */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* CU3 */
XRANGE(020, 020) ||, /* DC4 */
XRANGE(021, 021) ||, /* NAK */
XRANGE(000, 000) ||, /* */
XRANGE(026, 026) ||, /* SUB */
XRANGE(032, 032) ||, /* space */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* cent sign */
XRANGE(046, 046) ||, /* . */
XRANGE(060, 060) ||, /* < */
XRANGE(040, 040) ||, /* ( */
XRANGE(043, 043) ||, /* + */
XRANGE(033, 033) ||, /* | */
XRANGE(038, 038) ||, /* & */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(033, 033) ||, /* ! */
XRANGE(036, 036) ||, /* $ */
XRANGE(042, 042) ||, /* * */
XRANGE(041, 041) ||, /* ) */
XRANGE(059, 059) ||, /* ; */
XRANGE(000, 000) ||, /* not symbol */
XRANGE(045, 045) ||, /* - */
XRANGE(047, 047) ||, /* / */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(124, 124) ||, /* | */
XRANGE(044, 044) ||, /* , */
XRANGE(037, 037) ||, /* % */
XRANGE(095, 095) ||, /* _ */
XRANGE(062, 062) ||, /* > */
XRANGE(063, 063) ||, /* ? */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(096, 096) ||, /* ` */
XRANGE(058, 058) ||, /* : */
XRANGE(035, 035) ||, /* # */
XRANGE(064, 064) ||, /* @ */
XRANGE(039, 039) ||, /* ' */
XRANGE(061, 061) ||, /* = */
XRANGE(034, 034) ||, /* " */
XRANGE(097, 105) ||, /* a - i */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(106, 114) ||, /* j - r */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(000, 000) ||, /* */
XRANGE(126, 126) ||, /* ~ */
XRANGE(115, 122) ||, /* s - z */
COPIES(192 - 170, D2C(0)) ||,
XRANGE(123, 123) ||, /* { */
XRANGE(065, 073) ||, /* A - I */
COPIES(209 - 202, D2C(0)) ||,
XRANGE(074, 082) ||, /* J - R */
COPIES(224 - 218, D2C(0)) ||,
XRANGE(092, 092) ||, /* \ */
XRANGE(000, 000) ||, /* */
XRANGE(083, 090) ||, /* S - Z */
COPIES(240 - 234, D2C(0)) ||,
XRANGE(048, 057) ||, /* J - R */
COPIES(256 - 250, D2C(0))