Campos empaquetados en archivo de texto
- carlos vargas
- Posts: 1723
- Joined: Tue Oct 11, 2005 5:01 pm
- Location: Nicaragua
Re: Campos empaquetados en archivo de texto
Enlaces de interes
https://groups.google.com/g/publicesvfoxpro/c/vS2QPPyWeys/m/AX3P9tYmCgAJ
https://sourceforge.net/projects/cobol2j/
https://groups.google.com/g/publicesvfoxpro/c/vS2QPPyWeys/m/AX3P9tYmCgAJ
https://sourceforge.net/projects/cobol2j/
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
Carlos Vargas
Desde Managua, Nicaragua (CA)
Re: Campos empaquetados en archivo de texto
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
Mil gracias amigo
Abrazo
Miguel
FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
Harbour 3.2.0 (r1306211258)
PellesC
Re: Campos empaquetados en archivo de texto
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
Desde ya muchísimas muchísimas gracias
Abrazo enorme
Miguel
FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
Harbour 3.2.0 (r1306211258)
PellesC
Re: Campos empaquetados en archivo de texto
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
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
Harbour 3.2.0 (r1306211258)
PellesC
- carlos vargas
- Posts: 1723
- Joined: Tue Oct 11, 2005 5:01 pm
- Location: Nicaragua
Re: Campos empaquetados en archivo de texto
Prueba con las herramientas del.segundo link.
A ver si funciona.
A ver si funciona.
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
Carlos Vargas
Desde Managua, Nicaragua (CA)
Re: Campos empaquetados en archivo de texto
carlos vargas wrote:Prueba con las herramientas del.segundo link.
A ver si funciona.
Buenos días....tampoco

FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
Harbour 3.2.0 (r1306211258)
PellesC
Re: Campos empaquetados en archivo de texto
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
Harbour 3.2.0 (r1306211258)
PellesC
- Antonio Linares
- Site Admin
- Posts: 42594
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 38 times
- Been thanked: 86 times
- Contact:
Re: Campos empaquetados en archivo de texto
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
comp3.prg
Resultado
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
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
set path=c:\bcc7\bin
c:\harbour\bin\hbmk2 comp3 -comp=bcc
comp3.prg
Code: Select all | Expand
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

Re: Campos empaquetados en archivo de texto
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
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
Harbour 3.2.0 (r1306211258)
PellesC
- Antonio Linares
- Site Admin
- Posts: 42594
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 38 times
- Been thanked: 86 times
- Contact:
Re: Campos empaquetados en archivo de texto
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:
Aparece:
Sabes que valor es el que está guardado ahi ? Asi podemos averiguar el formato usado (comp3)
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
? "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)
- Antonio Linares
- Site Admin
- Posts: 42594
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 38 times
- Been thanked: 86 times
- Contact:
Re: Campos empaquetados en archivo de texto
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
estamos cerca

https://stackoverflow.com/questions/795523/interpreting-comp-3-packed-decimal-fields-into-numeric-values
- Antonio Linares
- Site Admin
- Posts: 42594
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 38 times
- Been thanked: 86 times
- Contact:
Re: Campos empaquetados en archivo de texto
Es posible que el valor guardado en el importe sea: 35.053,27 ?
Puedes comprobarlo ?
Puedes comprobarlo ?
- Antonio Linares
- Site Admin
- Posts: 42594
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 38 times
- Been thanked: 86 times
- Contact:
- Antonio Linares
- Site Admin
- Posts: 42594
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 38 times
- Been thanked: 86 times
- Contact:
Re: Campos empaquetados en archivo de texto
Si 12.345 se convierte en 12 34 5C, veamos como generar eso nosotros:
Resultado:
Si el formato es asi, ya sabemos como generarlo, ahora falta hacerlo en el sentido contrario
Code: Select all | Expand
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

Re: Campos empaquetados en archivo de texto
.
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
Harbour 3.2.0 (r1306211258)
PellesC