Mensaje enviado por "Alberto Vernieri" <AVernieri@juncalnet.com.ar>
Hola!
Aqui te mando un parcito de funciones que te permiten acceder a campos COMP-3 (Packed decimal).
El campo en el archivo lo debes definir como String * (la mitad de los dígitos del campo + 1, redondeado hacia arriba) o sea, si tnés un pic 9(4) COMP-3 el campo debe ser String * 3.
Espero que te sirvan.
Saludos
Alberto
Function unpack(packnum As String) As String
Dim hexnum As String, unpacknum As String
Dim n As Integer, I As Integer
n = Len(packnum)
For I = 1 To n ' Set up n repetitions.
hexnum = Right$("00" & Hex$(Asc(Mid$(packnum, I, 1))), 2)
unpacknum = unpacknum & hexnum
Next I
unpacknum = Left$(unpacknum, Len(unpacknum) - 1)
unpack = unpacknum
End Function
Function pack(unpacknum As String) As String
Dim packnum As String, uaux As String
Dim c As Integer
Dim n As Integer, lu As Integer, I As Integer
lu = Len(unpacknum)
uaux = unpacknum
If (lu Mod 2) = 0 Then uaux = "0" & uaux 'si la entrada es par agrega un cero adelante
uaux = uaux & "F"
lu = Len(uaux)
packnum = ""
For I = 1 To lu Step 2 ' Set up lu/2 repetitions.
c = Asc(Mid$(uaux, I, 1)) - 48 ' offset de digitos decimales
n = 16 * c
c = Asc(Mid$(uaux, I + 1, 1)) - 48 ' offset de dígitos decimales
If c > 48 Then c = c - 32 ' minúsculas a mayúsculas
If c > 9 Then c = c - 7 ' letras a dígitos hexadecimales
n = n + c
packnum = packnum & Chr$(n)
Next I
pack = packnum
End Function
>>> "Sergio Martínez" <smartinez@pergamino.inta.gov.ar> 28/12/1999 14:56:53 >>>
Listeros.
Lo del asunto. ¿ Alguien conoce si existe algo al respecto ? Gracias.
Sergio Martínez.
Pergamino. Argentina.
smartinez@pergamino.inta.gov.ar