Visual Basic - Problemas al leer fichero txt procedente de cobol

Life is soft - evento anual de software empresarial
   
Vista:

Problemas al leer fichero txt procedente de cobol

Publicado por Tomás (1 intervención) el 27/02/2013 10:59:19
Buenos días.

Mi problema es el siguiente:

Tengo que leer un fichero de texto (ASCII) que se ha creado con un programa cobol. Uno de los datos que tengo que leer es el importe, que viene con signo. El problema es que cobol mete el signo en un solo byte junto con el último dígito de la derecha del importe, con lo cual en el fichero de texto aparece un signo alfabético [E,D,F,{,},etc] y soy incapaz de leerlo correctamente para que me separe el dígito y el signo y poderlo almacenar en una variable de tipo DOUBLE.

¿Cómo puedo hacerlo para conseguir lo que quiero?

Gracias y un saludo.
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

Problemas al leer fichero txt procedente de cobol

Publicado por apacheco (63 intervenciones) el 11/03/2013 13:18:52
Lo mas comodo, seria modificar el programa cobol para que te del signo antes o despues de campo, puede hacerse ya que he trabajado en cobol muchos años, con que tu problema seria menor tirando a nulo.

En case de no poderse hacer haz o siguiente.

Averigua los valores ASCII de los numeros negativos incluyendo el -0, que en algunas versiones podia aparecer

dim factor as long
dim importe as string

Supongamos que importe leido es = "1123456D" y que D=-0, E =-1 ...... M=-9

SELECT CASE RIGHT(importe, 1)
Case "D"
Importe = left(importe,len(importe)-1) & "0" ' El menos cero lo dejo como cero
Case "E"
factor=-1
Importe = left(importe,len(importe)-1) & "1"
Case "F"
factor=-1
Importe = left(importe,len(importe)-1) & "2"
Case "G"
factor=-1
Importe = left(importe,len(importe)-1) & "3"
Case "H"
factor= -1
Importe = "-" & left(importe,len(importe)-1) & "4"
Case "I"
factor= -1
Import = "-" & left(importe,len(importe)-1) & "5"
Case "J"
factor= -1
Import = "-" & left(importe,len(importe)-1) & "6"
Case "K"
factor= -1
Import = "-" & left(importe,len(importe)-1) & "7"
Case "L"
factor= -1
Import= "-" & left(importe,len(importe)-1) & "8"
Case "M"
factor= -1
Import = "-" & left(importe,len(importe)-1) & "9"
Case Else
factor = 1
end select

Valor = cdbl(importe) * factor
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