home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / beav1402.zip / ebcdic.c < prev    next >
Text File  |  1993-04-16  |  3KB  |  65 lines

  1.  
  2. #include    "def.h"
  3.  
  4. extern char ERR_ebcdic[];
  5.  
  6. /* Function definitions */
  7.  
  8. /* This table defines the translation from EBCDIC code to ASCII. */
  9.  
  10. char ebcdic_table[] =
  11. {
  12.     0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,    /* 00-07 */
  13.     0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,    /* 08-0F */
  14.     0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,    /* 10-17 */
  15.     0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,    /* 18-1F */
  16.     0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,    /* 20-27 */
  17.     0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,    /* 28-2F */
  18.     0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,    /* 30-37 */
  19.     0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,    /* 38-3F */
  20.     0x20, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,    /* 40-47 */
  21.     0x2E, 0x2E, 0x2E, 0x2E, 0x3C, 0x28, 0x2B, 0x2E,    /* 48-4F */
  22.     0x26, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,    /* 50-57 */
  23.     0x2E, 0x2E, 0x21, 0x24, 0x2A, 0x29, 0x3B, 0x5E,    /* 58-5F */
  24.     0x2D, 0x2F, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,    /* 60-67 */
  25.     0x2E, 0x2E, 0x7C, 0x2E, 0x25, 0x5F, 0x3E, 0x3F,    /* 68-6F */
  26.     0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x27, 0x2E, 0x2E,    /* 70-77 */
  27.     0x2E, 0x60, 0x3A, 0x23, 0x40, 0x2C, 0x3D, 0x22,    /* 78-7F */
  28.     0x2E, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,    /* 80-87 */
  29.     0x68, 0x69, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,    /* 88-8F */
  30.     0x2E, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70,    /* 90-97 */
  31.     0x71, 0x72, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,    /* 98-9F */
  32.     0x2E, 0x7E, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,    /* A0-A7 */
  33.     0x79, 0x7A, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,    /* A8-AF */
  34.     0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,    /* B0-B7 */
  35.     0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,    /* B8-BF */
  36.     0x7B, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,    /* C0-C7 */
  37.     0x48, 0x49, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,    /* C8-CF */
  38.     0x7D, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50,    /* D0-D7 */
  39.     0x51, 0x52, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,    /* D8-DF */
  40.     0x5C, 0x2E, 0X53, 0x54, 0x55, 0x56, 0x57, 0x58,    /* E0-E7 */
  41.     0x59, 0x5A, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,    /* E8-EF */
  42.     0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,    /* F0-F7 */
  43.     0x38, 0x39, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E    /* F8-FF */
  44. };
  45.  
  46. /* convert a ASCII character to an EBCDIC character */
  47. char
  48. to_ebcdic (ch)
  49.  
  50.     char ch;
  51. {
  52.     int cnt;
  53.     char buf[NCOL], buf1[NCOL];
  54.  
  55.     for (cnt = 0; cnt < sizeof (ebcdic_table); cnt++)
  56.     {
  57.     if (ch == ebcdic_table[cnt])
  58.         return (cnt);
  59.     }
  60.     sprintf (buf1, ERR_ebcdic, R_BYTE_FMT (curwp));
  61.     sprintf (buf, buf1, ch);
  62.     writ_echo (buf);
  63.     return (0);
  64. }
  65.