EBCDIC to ASCII & ASCII to EBCDIC

[Autolink] Menu

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))


[Back: Unpack packed data]
[Next: Uppercase & Lowercase including German "Umlaute"]