home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0210 - 0219 / ibm0210-0219 / ibm0213.tar / ibm0213 / 7025PWA1.ZIP / SAMPLES.ZIP / SQLLIB / SAMPLES / WIN / CPCONV.C next >
Encoding:
C/C++ Source or Header  |  1994-02-28  |  4.2 KB  |  83 lines

  1. #include "cpconv.h"
  2.  
  3. static unsigned char cp850to1004[] = {
  4. /*0*/ 0x00,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,
  5. /*1*/ CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,
  6. /*2*/ 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,
  7. /*3*/ 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,
  8. /*4*/ 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,
  9. /*5*/ 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f,
  10. /*6*/ 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,
  11. /*7*/ 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,CNUL,
  12.  
  13. /*     0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F */
  14.  
  15. /*8*/ 0xc7,0xfc,0xe9,0xe2,0xe4,0xe0,0xe5,0xe7,0xea,0xeb,0xe8,0xef,0xee,0xec,0xc4,0xc5,
  16. /*9*/ 0xc9,0xe6,0xc6,0xf4,0xf6,0xf2,0xfb,0xf9,CNUL,0xd6,0xdc,0xf8,0xa3,0xd8,0xd7,CNUL,
  17. /*A*/ 0xe1,0xed,0xf3,0xfa,0xf1,0xd1,0xaa,0xba,0xbf,0xae,0xac,0xbd,0xbc,0xa1,0xab,0xbb,
  18. /*B*/ CNUL,CNUL,CNUL,CNUL,CNUL,0xc1,0xc2,0xc0,0xa9,CNUL,CNUL,CNUL,CNUL,0xa2,0xa5,CNUL,
  19. /*C*/ CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,0xe3,0xc3,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,0xa4,
  20. /*D*/ 0xf0,0xd0,0xca,0xcb,0xc8,CNUL,0xcd,0xce,0xcf,CNUL,CNUL,CNUL,CNUL,0xa6,0xcc,CNUL,
  21. /*E*/ 0xd3,0xdf,0xd4,0xd2,0xf5,0xd5,0xb5,0xfe,0xde,0xda,0xdb,0xd9,0xfd,0xdd,0xaf,0xb4,
  22. /*F*/ 0xad,0xb1,CNUL,0xbe,0xb6,0xa7,0xf7,0xb8,0xb0,0xa8,0xb7,0xb9,0xb3,0xb2,CNUL,0xa0
  23. };
  24.  
  25.  
  26. static unsigned char cp1004to850[] = {
  27. /*0*/ 0x00,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,
  28. /*1*/ CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,
  29. /*2*/ 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,
  30. /*3*/ 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,
  31. /*4*/ 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,
  32. /*5*/ 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f,
  33. /*6*/ 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,
  34. /*7*/ 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,CNUL,
  35.  
  36. /*     0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F */
  37.  
  38. /*8*/ CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,
  39. /*9*/ CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,CNUL,
  40. /*A*/ 0xff,0xad,0xbd,0x9c,0xcf,0xbe,0xdd,0xf5,0xf9,0xb8,0xa6,0xae,0xaa,0xf0,0xa9,0xee,
  41. /*B*/ 0xf8,0xf1,0xfd,0xfc,0xef,0xe6,0xf4,0xfa,0xf7,CNUL,CNUL,0xaf,0xac,0xab,0xf3,0xa8,
  42. /*C*/ 0xb7,0xb5,0xb6,0xc7,0x8e,0x8f,0x92,0x80,0xd4,0x90,0xd2,0xd3,0xde,0xd6,0xd7,0xd8,
  43. /*D*/ 0xd1,0xa5,0xe3,0xe0,0xe2,0xe5,0x99,0x9e,0x9d,0xeb,0xe9,0xea,0x9a,0xed,0xe8,0xe1,
  44. /*E*/ 0x85,0xa0,0x83,0xc6,0x84,0x86,0x91,0x87,0x8a,0x82,0x88,0x89,0x8d,0xa1,0x8c,0x8b,
  45. /*F*/ 0xd0,0xa4,0x95,0xa2,0x93,0xe4,0x94,0xf6,0x9b,0x97,0xa3,0x96,0x81,0xec,0xe7,0x98
  46. };
  47.  
  48.  
  49. /*******************************************************************************/
  50. /* Conversion routine accepting a pointer to a string.  The characters in the  */
  51. /* string will be converted to the code page of the database.                  */
  52. /*******************************************************************************/
  53.  
  54. short cp_appl_to_db( unsigned char far *str )
  55. {
  56.    while ( *str ) {
  57.       if ( *str != CNUL && cp1004to850[ *str ] != CNUL )
  58.          *str = cp1004to850[ *str ];
  59.       else
  60.          return( CONVERSION_ERROR );
  61.       ++str;
  62.    }
  63.    return( 0 );
  64. }
  65.  
  66. /*******************************************************************************/
  67. /* Conversion routine accepting a pointer to a string.  The characters in the  */
  68. /* string will be converted to the code page of the application.               */
  69. /*******************************************************************************/
  70.  
  71. short cp_db_to_appl( unsigned char far *str )
  72. {
  73.    while ( *str ) {
  74.       if ( *str != CNUL && cp850to1004[ *str ] != CNUL )
  75.          *str = cp850to1004[ *str ];
  76.       else
  77.          return( CONVERSION_ERROR );
  78.       ++str;
  79.    }
  80.    return( 0 );
  81. }
  82.  
  83.