Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
EBCDIC Conversion
Message
 
 
To
26/10/2000 20:57:57
General information
Forum:
Visual FoxPro
Category:
Other
Miscellaneous
Thread ID:
00434973
Message ID:
00435048
Views:
28
>Does anyone have an EBCDIC -> ASCII string conversion function?,
Hi John, here is some code that can convert in both directions (note that there is more than one set of EBCDIC codes that can be used). Just copy and paste into a prg file and the tabs should look ok.
*- 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 ).
censored.
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform