*- Comment out the following line for production build. #DEFINE __DEBUG AnyValue CLEAR cAsciiCodes = fASCII() cEbcdicCodes = fEBCDIC() cTest = "" FOR iCode = 0 TO 20 cTest = cTest + chr(iCode) NEXT iCode #IFDEF __DEBUG fDisplay( cTest ) #ENDIF cEbcdic = fTranslate( cTest, "2EBCDIC" ) cAscii = fTranslate( cEbcdic, "2ASCII" ) RETURN .T. **************************** FUNCTION fDisplay( cString ) **************************** ?? "Original IN (pos) OUT IN (pos) OUT" ? "-------- ------------ ------------" FOR iByte = 1 TO LEN( cString ) @ iByte+1, 3 SAY RIGHT( TRANSFORM( ASC( SUBSTR( cString, iByte, 1 )), "@0" ), 2 ) NEXT iByte RETURN "" ENDFUNC && fDisplay( cString ). ********************************************** FUNCTION fTranslate( cStringToConvert, cMode ) ********************************************** *- cMode should be one of "2ASCII" or "2EBCDIC". LOCAL cResult, cTranslateSting IF PCOUNT() ? *- 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...... *- RETURN ; fHexToStr("000102039C09867F978D8E0B0C0D0E0F101112139D8508871819928F1C1D1E1F") + ; fHexToStr("80818283840A171B88898A8B8C050607909116939495960498999A9B14159E1A") + ; fHexToStr("20A0A1A2A3A4A5A6A7A8D52E3C282B7C26A9AAABACADAEAFB0B121242A293B5E") + ; fHexToStr("2D2FB2B3B4B5B6B7B8B9E52C255F3E3FBABBBCBDBEBFC0C1C2603A2340273D22") + ; fHexToStr("C3616263646566676869C4C5C6C7C8C9CA6A6B6C6D6E6F707172CBCCCDCECFD0") + ; fHexToStr("D17E737475767778797AD2D3D45BD6D7D8D9DADBDCDDDEDFE0E1E2E3E45DE6E7") + ; fHexToStr("7B414243444546474849E8E9EAEBECED7D4A4B4C4D4E4F505152EEEFF0F1F2F3") + ; fHexToStr("5C9F535455565758595AF4F5F6F7F8F930313233343536373839FAFBFCFDFEFF") ENDFUNC ***************************** FUNCTION fHexToStr( cHexStr ) ***************************** LOCAL cResult cResult = "" For iByte = 1 To LEN( cHexStr ) STEP 2 cResult = cResult ; + CHR( EVAL( "0x" + SUBSTR( cHexStr, iByte, 2 ))) Next iByte RETURN cResult ENDFUNC && fHexToStr( cHexStr ).