Campos empaquetados en archivo de texto

Re: Campos empaquetados en archivo de texto

Postby carlos vargas » Thu Oct 14, 2021 4:01 pm

Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1683
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Campos empaquetados en archivo de texto

Postby El Loco » Thu Oct 14, 2021 6:29 pm

Carlitos grande... me parece que esto puede funcionar...estoy viéndolo desde el celular...cuando llegue a casa lo pruebo...pero por lo que vi puede llegar a funcionar.
Mil gracias amigo
Abrazo
Miguel
FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
El Loco
 
Posts: 328
Joined: Fri May 19, 2006 4:08 pm
Location: Buenos Aires - Argentina

Re: Campos empaquetados en archivo de texto

Postby El Loco » Thu Oct 14, 2021 7:49 pm

Grande Carlos... lo estoy viendo desde el celular... pero por lo poco que vi me parece que va a funcionar ... cuando llegue a casa lo pruebo.
Desde ya muchísimas muchísimas gracias
Abrazo enorme
Miguel
FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
El Loco
 
Posts: 328
Joined: Fri May 19, 2006 4:08 pm
Location: Buenos Aires - Argentina

Re: Campos empaquetados en archivo de texto

Postby El Loco » Fri Oct 15, 2021 2:24 am

Carlos ...hace un rato llegué a casa (22.30hs) de trabajar. De forma inmediata me puse a trabajar en esta función.
Por ahora, si bien la hice funcionar, los valores que envía son todos erróneos (tengo un archivo con los valores reales para comprobación) :(
Igual voy a seguir probando ..."hasta que las velas no ardan" o caiga desmayado de sueño.
Gracias
Abrazo.
Miguel
FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
El Loco
 
Posts: 328
Joined: Fri May 19, 2006 4:08 pm
Location: Buenos Aires - Argentina

Re: Campos empaquetados en archivo de texto

Postby carlos vargas » Fri Oct 15, 2021 2:08 pm

Prueba con las herramientas del.segundo link.
A ver si funciona.
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1683
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Campos empaquetados en archivo de texto

Postby El Loco » Fri Oct 15, 2021 3:43 pm

carlos vargas wrote:Prueba con las herramientas del.segundo link.
A ver si funciona.


Buenos días....tampoco :cry:
FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
El Loco
 
Posts: 328
Joined: Fri May 19, 2006 4:08 pm
Location: Buenos Aires - Argentina

Re: Campos empaquetados en archivo de texto

Postby El Loco » Sat Oct 16, 2021 2:55 am

El Loco wrote:Buenos días a todos.
Alguien por favor podría pasar esta función en C para utilizarla en FiveWin/Harbour?
Gustoso le abonaría por el trabajo realizado.
En verdad necesito poder convertir estos benditos campos ....necesito desesperadamente poder tomar este trabajo, que me ayudaría a pasar esta situación que estamos viviendo en mi amado país.
Desde ya muchísimas gracias.
Abrazo enorme
Miguel


Hola a todos... no hay nadie que se a anime a pasar esta función para poder probarla en Fivewin/Harbour ?
En verdad pagaría por el trabajo realizado. Realmente necesito poder tomar este trabajo.
Desde ya muchísimas gracias.
Abrazo.
Miguel
FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
El Loco
 
Posts: 328
Joined: Fri May 19, 2006 4:08 pm
Location: Buenos Aires - Argentina

Re: Campos empaquetados en archivo de texto

Postby Antonio Linares » Sat Oct 16, 2021 4:42 am

Miguel,

estamos intentando matar moscas a cañonazos :-)

Revisando tu fichero Prueba.txt y las especificaciones que tienes en Diseño Registro 1250.xlsx es tan simple como hacer:

go.bat
Code: Select all  Expand view
set path=c:\bcc7\bin
c:\harbour\bin\hbmk2 comp3 -comp=bcc


comp3.prg
Code: Select all  Expand view
function Main()

   local cText := hb_MemoRead( "Prueba.txt" )

   Comp3( cText )

return nil

function Comp3( cText )

   local ClaveBeneficio   := SubStr( cText,  1, 11 )  // 01000000190
   local ClaseDeBeneficio := SubStr( cText, 12,  2 )  // 01
   local MarcaInvalidez   := SubStr( cText, 14,  1 )  // 'S' o ' '
   local ApellidoNombres  := SubStr( cText, 28, 27 )  // MELAMED LUIS
   local CajaOtorgante    := SubStr( cText, 55,  2 )  // 01
   local Marca            := SubStr( cText, 57,  1 )  // N

   ? "ClaveBeneficio:",   ClaveBeneficio
   ? "ClaseDeBeneficio:", ClaseDeBeneficio
   ? "MarcaInvalidez:",   MarcaInvalidez
   ? "ApellidoNombres:",  ApellidoNombres
   ? "CajaOtorgante:",    CajaOtorgante
   ? "Marca:",            Marca

return nil


Resultado
C:\soporte\MiguelAngel>comp3
ClaveBeneficio: 01000000190
ClaseDeBeneficio: 01
MarcaInvalidez:
ApellidoNombres: MELAMED LUIS
CajaOtorgante: 01
Marca: N


Y esos valores son correctos. Continua con los demas valores (eso lo tienes hecho en un ratito) y luego hacemos que lea cualquier registro (dandole el número de registro). Las posiciones 1, 12, 14, 28, 55, 57, ... y las longitudes 11, 2, 1, 27, 2, 1... estan tambien especificadas en ese mismo documento.

Animo que ese trabajo es para ti ;-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Campos empaquetados en archivo de texto

Postby El Loco » Sat Oct 16, 2021 6:35 am

Hola Antonio...gracias por tomarte el tiempo para verlo...pero me parece que no me explique bien.
ya tengo hecho un programa con todos los campos ya los tengo definido y los genera perfectamente incluso los guardo en un dbf.
El tema está en los campos empaquetados que comienzan en la posición 400 (que son una serie de 30 movimientos) y otros pocos campos más empaquetados.
EJ.:
x 53 400 1149 750 AREA CONCEPTOS - 30 occurs
x 53.1 400 424 25 AREA DE 1 CONCEPTO Hasta 30 Occurs
x 53.1.1 400 402 3 N CODIGO DE CONCEPTO
x 53.1.2 403 405 3 N CODIGO DE EMPRESA
x 53.1.3 406 407 2 N TIPO DE CONCEPTO
x 53.1.4 408 413 6 PS IMPORTE 9(9)V9
53.1.5 414 419 6 PS IMPORTE DEUDA TOTAL 9(9)V9
x 53.1.6 420 421 2 PS CANTIDAD DE CUOTAS
x 53.1.7 422 424 3 PS PORCENTAJE 9(3)V9

Ahí está mi problema, en los campos tipo "PS".....antiguamente estos campos venían en EBCDIC pero ahora lo cambiaron.
Lo que necesito es alguna función que convierta los campos empaquetados (COMP-3) por los menos en texto, después yo me arreglo.
Gracias.
Abrazo
Miguel
FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
El Loco
 
Posts: 328
Joined: Fri May 19, 2006 4:08 pm
Location: Buenos Aires - Argentina

Re: Campos empaquetados en archivo de texto

Postby Antonio Linares » Sat Oct 16, 2021 7:08 am

Miguel,

En el documento el importe se describe como tipo "PS" y tiene una longitud de 6 bytes a partir de la posición 408:

local Importe := SubStr( cText, 408, 6 )

Sus valores en hexadecimal:
Code: Select all  Expand view
  ? "Importe:",          hb_NumToHex( Asc( SubStr( Importe, 1, 1 ) ) ),;
                          hb_NumToHex( Asc( SubStr( Importe, 2, 1 ) ) ),;
                          hb_NumToHex( Asc( SubStr( Importe, 3, 1 ) ) ),;
                          hb_NumToHex( Asc( SubStr( Importe, 4, 1 ) ) ),;
                          hb_NumToHex( Asc( SubStr( Importe, 5, 1 ) ) ),;
                          hb_NumToHex( Asc( SubStr( Importe, 6, 1 ) ) )


Aparece:
Importe: 0 0 88 ED 1B C


Sabes que valor es el que está guardado ahi ? Asi podemos averiguar el formato usado (comp3)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Campos empaquetados en archivo de texto

Postby Antonio Linares » Sat Oct 16, 2021 7:15 am

Usando comp-3 el valor 12.345 queda como 12 34 5C y el valor -1.2 queda como 01 2D (C es positivo y D negativo)

estamos cerca :-)
https://stackoverflow.com/questions/795523/interpreting-comp-3-packed-decimal-fields-into-numeric-values
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Campos empaquetados en archivo de texto

Postby Antonio Linares » Sat Oct 16, 2021 7:24 am

Es posible que el valor guardado en el importe sea: 35.053,27 ?

Puedes comprobarlo ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Campos empaquetados en archivo de texto

Postby Antonio Linares » Sat Oct 16, 2021 7:33 am

Puede ser 136.237,27 ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Campos empaquetados en archivo de texto

Postby Antonio Linares » Sat Oct 16, 2021 7:46 am

Si 12.345 se convierte en 12 34 5C, veamos como generar eso nosotros:

Code: Select all  Expand view
function Main()

   NumToComp3( 12345 )

return nil

function NumToComp3( nValue )

   local cValue := AllTrim( Str( nValue ) )
   local nByte1 := Val( SubStr( cValue, 1, 2 ) )
   local nByte2 := Val( SubStr( cValue, 3, 2 ) )
   local nByte3 := Val( SubStr( cValue, 5, 1 ) )

   ? cValue, nByte1, nByte2, nByte3, If( nValue > 0, "C", "D" )

return nil


Resultado:
C:\soporte\MiguelAngel>comp3
12345 12 34 5 C


Si el formato es asi, ya sabemos como generarlo, ahora falta hacerlo en el sentido contrario :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Campos empaquetados en archivo de texto

Postby El Loco » Sat Oct 16, 2021 1:02 pm

.
Last edited by El Loco on Sat Oct 16, 2021 1:12 pm, edited 1 time in total.
FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
El Loco
 
Posts: 328
Joined: Fri May 19, 2006 4:08 pm
Location: Buenos Aires - Argentina

PreviousNext

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 68 guests