Usa tu propia rutina de conversion ...
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
'''''''''''''''''''''