EBCDIC-ASCII Conversion' ' Uses a translation table to map InText from one character set to another. ' Temp = "" For i = 1 To Len(InText) SetLocale(1055) Temp = Temp & Mid(xlatTable, Asc(Mid(InText, i, 1)) + 1, 1) Next Translate = Temp End Function Function ASCII_To_EBCDIC_Table() ' ' Returns the following table as a string for use by the Translate ' function to translate an EBCDIC string to an ASCII-ISO/ANSI string. ' ' 00 01 02 03 37 2D 2E 2F 16 05 25 0B 0C 0D 0E 0F ' 10 11 12 13 3C 3D 32 26 18 19 3F 27 1C 1D 1E 1F ' 40 5A 7F 7B 5B 6C 50 7D 4D 5D 5C 4E 6B 60 4B 61 ' F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 7A 5E 4C 7E 6E 6F ' 7C C1 C2 C3 C4 C5 C6 C7 C8 C9 D1 D2 D3 D4 D5 D6 ' D7 D8 D9 E2 E3 E4 E5 E6 E7 E8 E9 AD E0 BD 5F 6D ' 79 81 82 83 84 85 86 87 88 89 91 92 93 94 95 96 ' 97 98 99 A2 A3 A4 A5 A6 A7 A8 A9 C0 4F D0 A1 07 ' 20 21 22 23 24 15 06 17 28 29 2A 2B 2C 09 0A 1B ' 30 31 1A 33 34 35 36 08 38 39 3A 3B 04 14 3E E1 ' 41 42 43 44 45 46 47 48 49 51 52 53 54 55 56 57 ' 58 59 62 63 64 65 66 67 68 69 70 71 72 73 74 75 ' 76 77 78 80 8A 8B 8C 8D 8E 8F 90 9A 9B 9C 9D 9E ' 9F A0 AA AB AC 4A AE AF B0 B1 B2 B3 B4 B5 B6 B7 ' B8 B9 BA BB BC 6A BE BF CA CB CC CD CE CF DA dB ' DC DD DE DF EA EB EC ED EE EF FA FB FC FD FE FF ' ASCII_To_EBCDIC_Table = _ HexToStr("00010203372D2E2F1605250B0C0D0E0F101112133C3D322618193F271C1D1E1F") & _ HexToStr("405A7F7B5B6C507D4D5D5C4E6B604B61F0F1F2F3F4F5F6F7F8F97A5E4C7E6E6F") & _ HexToStr("7CC1C2C3C4C5C6C7C8C9D1D2D3D4D5D6D7D8D9E2E3E4E5E6E7E8E9ADE0BD5F6D") & _ HexToStr("79818283848586878889919293949596979899A2A3A4A5A6A7A8A9C04FD0A107") & _ HexToStr("202122232415061728292A2B2C090A1B30311A333435360838393A3B04143EE1") & _ HexToStr("4142434445464748495152535455565758596263646566676869707172737475") & _ HexToStr("767778808A8B8C8D8E8F909A9B9C9D9E9FA0AAABAC4AAEAFB0B1B2B3B4B5B6B7") & _ HexToStr("B8B9BABBBC6ABEBFCACBCCCDCECFDADBDCDDDEDFEAEBECEDEEEFFAFBFCFDFEFF") End Function Function EBCDIC_To_ASCII_Table() ' ' Returns the following table as a string for use by the Translate ' function to traslate an EBCDIC string to an ASCII-ISO/ANSI string. ' ' 00 01 02 03 9C 09 86 7F 97 8D 8E 0B 0C 0D 0E 0F ....o.?-Â�Z..... ' 10 11 12 13 9D 85 08 87 18 19 92 8F 1C 1D 1E 1F ....Â�..?..'Â�.... ' 80 81 82 83 84 0A 17 1B 88 89 8A 8B 8C 05 06 07 ?Â�,f"...^?S<O... ' 90 91 16 93 94 95 96 04 98 99 9A 9B 14 15 9E 1A Â�'."".-.~Ts>..z. ' 20 A0 A1 A2 A3 A4 A5 A6 A7 A8 D5 2E 3C 28 2B 7C . ¡¢£¤¥¦§...<(+| ' 26 A9 AA AB AC AD AE AF B0 B1 21 24 2A 29 3B 5E &©ª«¬Â®¯°±!$*);^ ' 2D 2F B2 B3 B4 B5 B6 B7 B8 B9 E5 2C 25 5F 3E 3F -/²³´µ¶·¸¹.,%_>? ' BA BB BC BD BE BF C0 C1 C2 60 3A 23 40 27 3D 22 º»¼½¾¿...`:#@'=" ' C3 61 62 63 64 65 66 67 68 69 C4 C5 C6 C7 C8 C9 .abcdefghi...... ' CA 6A 6B 6C 6D 6E 6F 70 71 72 CB CC CD CE CF D0 .jklmnopqr...... ' D1 7E 73 74 75 76 77 78 79 7A D2 D3 D4 5B D6 D7 .~stuvwxyz...[.. ' D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 5D E6 E7 .............].. ' 7B 41 42 43 44 45 46 47 48 49 E8 E9 EA EB EC ED {ABCDEFGHI...... ' 7D 4A 4B 4C 4D 4E 4F 50 51 52 EE EF F0 F1 F2 F3 }JKLMNOPQR...... ' 5C 9F 53 54 55 56 57 58 59 5A F4 F5 F6 F7 F8 F9 \.STUVWXYZ...... ' 30 31 32 33 34 35 36 37 38 39 FA FB FC FD FE FF 0123456789...... ' HexStr = "" HexStr = HexStr & "000102039C09867F978D8E0B0C0D0E0F101112139D8508871819928F1C1D1E1F" HexStr = HexStr & "80818283840A171B88898A8B8C050607909116939495960498999A9B14159E1A" HexStr = HexStr & "20A0A1A2A3A4A5A6A7A8D52E3C282B7C26A9AAABACADAEAFB0B121242A293B5E" HexStr = HexStr & "2D2FB2B3B4B5B6B7B8B9E52C255F3E3FBABBBCBDBEBFC0C1C2603A2340273D22" HexStr = HexStr & "C3616263646566676869C4C5C6C7C8C9CA6A6B6C6D6E6F707172CBCCCDCECFD0" HexStr = HexStr & "D17E737475767778797AD2D3D45BD6D7D8D9DADBDCDDDEDFE0E1E2E3E45DE6E7" HexStr = HexStr & "7B414243444546474849E8E9EAEBECED7D4A4B4C4D4E4F505152EEEFF0F1F2F3" HexStr = HexStr & "5C9F535455565758595AF4F5F6F7F8F930313233343536373839FAFBFCFDFEFF" EBCDIC_To_ASCII_Table = HexToStr(HexStr) End Function Function HexToStr(ByVal HexStr) Temp = "" For i = 1 To Len(HexStr) \ 2 Temp = Temp & Chr(HexToDec(Mid(HexStr, i * 2 - 1, 2))) Next HexToStr = Temp End Function Function HexToDec(strHex) Dim lngResult Dim intIndex Dim strDigit Dim intDigit Dim intValue lngResult = 0 For intIndex = Len(strHex) To 1 Step -1 strDigit = Mid(strHex, intIndex, 1) intDigit = InStr("0123456789ABCDEF", UCase(strDigit)) - 1 If intDigit >= 0 Then intValue = intDigit * (16 ^ (Len(strHex) - intIndex)) lngResult = lngResult + intValue Else lngResult = 0 intIndex = 0 ' stop the loop End If Next HexToDec = lngResult End Function |