Visual Basic - Convertir Ascii a Ebcdic

Life is soft - evento anual de software empresarial
 
Vista:

Convertir Ascii a Ebcdic

Publicado por Blanca (4 intervenciones) el 26/04/2006 23:10:52
Porfavor si alguien sabe como hacer para convertir una cadena que este en Ascii a Ebcdic en Visual Basic 6.0
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Usa tu propia rutina de conversion ...

Publicado por SemperFIMXL (74 intervenciones) el 27/04/2006 03:46:27
Hasta donde yo se, no hay una funcion especifica en VB que te realize la conversion de ASCII a EBCDIC o viceversa, por lo que tienes que crear tu propia rutina ...

El codigo que te pongo funciona bien, pero ya te tocaria a ti verificar si los valores de la tabla EBCDIC que requieres son los mismos que los que estoy usando en mi ejemplo... Segun se, hay algunas tablas EBCDIC diferentes entre si, de acuerdo con el tipo de equipo o plataforma en que se utilizan...

El codigo que te pongo tiene dos funciones: convertir de ASCII a EBCDIC, y convertir de EBCDIC a ASCII

Para probarlo, la sintaxis seria algo asi... Claro, lo mejor seria probar con TextBoxes ...

Dim miCadena As String
Dim cadEBCDIC As String
DIM cadASCII_Rec As String

miCadena = "Esta es una cadena de prueba; convertirla a EBCDIC !"
cadEBCDIC = To_Ebcdic( miCadena )
cadASCII_Rec = To_Ascii( cadEBCDIC )

Debug.Print "Cad ASCII: " & miCadena
Debug.Print "Cad EBCDIC: " & cadEBCDIC
Debug.Print "Cad ASCII Reconvertida: " & cadASCII_Rec

El resultado lo verias en la Immediate Window de VB ..

Bueno, aqui esta el codigo ...
Espero te sirva ...

'''''''''''''''''''''''''
Dim ASC_TO_EBC(256) As Integer

Private Sub Form_Load()
Dim str256 As String
Dim nElemento As Integer

' Cargo la matriz ASC_TO_EBC con los correspondientes 256 valores
' de la tabla EBCDIC ocupando las posiciones equivalentes
' de la tabla ASCII

str256 = ""
str256 = str256 + " 0, 1, 2, 3, 55, 45, 46, 47, 22, 5, 37, 11, 12, 13, 14, 15,"
str256 = str256 + " 16, 17, 18, 19, 60, 61, 50, 38, 24, 25, 63, 39, 28, 29, 30, 31,"
str256 = str256 + " 64, 79,127,123, 91,108, 80,125, 77, 93, 92, 78,107, 96, 75, 97,"
str256 = str256 + "240,241,242,243,244,245,246,247,248,249,122, 94, 76,126,110,111,"
str256 = str256 + "124,193,194,195,196,197,198,199,200,201,209,210,211,212,213,214,"
str256 = str256 + "215,216,217,226,227,228,229,230,231,232,233, 74,224, 90, 95,109,"
str256 = str256 + "121,129,130,131,132,133,134,135,136,137,145,146,147,148,149,150,"
str256 = str256 + "151,152,153,162,163,164,165,166,167,168,169,192,106,208,161, 7,"
str256 = str256 + " 32, 33, 34, 35, 36, 21, 6, 23, 40, 41, 42, 43, 44, 9, 10, 27,"
str256 = str256 + " 48, 49, 26, 51, 52, 53, 54, 8, 56, 57, 58, 59, 4, 20, 62,225,"
str256 = str256 + " 65, 66, 67, 68, 69, 70, 71, 72, 73, 81, 82, 83, 84, 85, 86, 87,"
str256 = str256 + " 88, 89, 98, 99,100,101,102,103,104,105,112,113,114,115,116,117,"
str256 = str256 + "118,119,120,128,138,139,140,141,142,143,144,154,155,156,157,158,"
str256 = str256 + "159,160,170,171,172,173,174,175,176,177,178,179,180,181,182,183,"
str256 = str256 + "184,185,186,187,188,189,190,191,202,203,204,205,206,207,218,219,"
str256 = str256 + "220,221,222,223,234,235,236,237,238,239,250,251,252,253,254,255"

For nElemento = 0 To 255
ASC_TO_EBC(nElemento) = Val(LTrim(Mid(str256, ((nElemento + 1) * 4) - 3, 3)))
Next

End Sub

'''' Convertir una cadena ASCII a su equivalente en EBCDIC

Public Function To_Ebcdic(cadASCII As String) As String
Dim nPos As Integer
Dim strEBC As String

On Error GoTo Error_ToEBC

If Len(cadASCII) <= 0 Then
To_Ebcdic = ""
Exit Function
End If

strEBC = ""
For nPos = 1 To Len(cadASCII)
strEBC = strEBC + Chr(ASC_TO_EBC(Asc(Mid(cadASCII, nPos, 1))))
Next

To_Ebcdic = strEBC
Exit Function

Error_ToEBC:
MsgBox "Error (" & Err.Number & vbCrLf & _
Err.Description & vbCrLf & _
"Al intentar conversion de ASCII a EBCDIC", vbCritical + vbOKOnly, "VB_EBCDIC.To_Ebcdic"
To_Ebcdic = ""

End Function

'''' Convertir una cadena EBCDIC a su equivalente en ASCII

Public Function To_Ascii(cadEBCDIC As String) As String
Dim nPos As Integer
Dim nElemento As Integer
Dim strASC As String

On Error GoTo Error_ToASC

If Len(cadEBCDIC) <= 0 Then
To_Ascii = ""
Exit Function
End If

strASC = ""
For nPos = 1 To Len(cadEBCDIC)
For nElemento = 0 To 255
If ASC_TO_EBC(nElemento) = Asc(Mid(cadEBCDIC, nPos, 1)) Then
strASC = strASC + Chr(nElemento)
Exit For
End If
Next
Next

To_Ascii = strASC
Exit Function

Error_ToASC:
MsgBox "Error (" & Err.Number & vbCrLf & _
Err.Description & vbCrLf & _
"Al intentar conversion de EBCDIC a ASCII", vbCritical + vbOKOnly, "VB_EBCDIC.To_Ascii"

To_Ascii = ""

End Function

'''''''''''''''''''''
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Usa tu propia rutina de conversion ...

Publicado por Blanca (4 intervenciones) el 27/04/2006 16:15:34
Muchas gracias por el codigo pero no puedo ver el resultado de la cadena transformada.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Usa tu propia rutina de conversion ...

Publicado por Blanca (4 intervenciones) el 27/04/2006 16:54:27
Lo que necesito es leer la cadena transformarla a EBCDIC e imprimir el resultado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Te envie ejemplo a tu correo ...

Publicado por SemperFiMXL (74 intervenciones) el 27/04/2006 22:40:50
Te envio ejemplo de uso del codigo a tu correo...
Espero sea mas entendible viendo el codigo puesto en un proyecto ...
Si necesitas cualquier cosa, solo dinos ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar