FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Campos empaquetados en archivo de texto
Posts: 328
Joined: Fri May 19, 2006 04:08 PM
Campos empaquetados en archivo de texto
Posted: Sun Oct 10, 2021 10:01 PM

Hola a todos... tanto tiempo...tratando de volver al ruedo.
Espero que estén muy bien.
Necesito ayuda para leer campos empaquetados (Comp-3 (Packed Decimals)) en un archivo de texto proveniente de un mainframe.
He probado con todas las funciones en Harbour y FiveWin y sin ningún resultado.
Alguien podría orientarme como lograrlo o si alguien tiene alguna función facilitármela o vendérmela ?
Desde ya muchísimas gracias.
Abrazo
Miguel

FWH 32/64 14.04

Harbour 3.2.0 (r1306211258)

PellesC
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Campos empaquetados en archivo de texto
Posted: Mon Oct 11, 2021 01:37 AM

Ni con el cobol rebuild.exe que converte para txt?

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 328
Joined: Fri May 19, 2006 04:08 PM
Re: Campos empaquetados en archivo de texto
Posted: Mon Oct 11, 2021 01:59 AM

Gracias Karina por responder. Pero estoy medio en las nubes .... "cobol rebuild.exe" perdón pero que es eso?

FWH 32/64 14.04

Harbour 3.2.0 (r1306211258)

PellesC
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Campos empaquetados en archivo de texto
Posted: Mon Oct 11, 2021 05:02 AM

Puedes proporcionar un fichero de ejemplo empaquetado con Comp-3 (Packed Decimals) ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 328
Joined: Fri May 19, 2006 04:08 PM
Re: Campos empaquetados en archivo de texto
Posted: Mon Oct 11, 2021 03:35 PM

Antonio maestro querido tanto tiempo.... te lo preparo. Debo hacer una extracción porque el archivo pesa más de 10Gb
Gracias
Abrazo

FWH 32/64 14.04

Harbour 3.2.0 (r1306211258)

PellesC
Posts: 328
Joined: Fri May 19, 2006 04:08 PM
Re: Campos empaquetados en archivo de texto
Posted: Mon Oct 11, 2021 04:44 PM

Antonio te envié por privado la muestra ya que no encontré la forma de enviarlo por este medio.
Gracias. Abrazo
Miguel

FWH 32/64 14.04

Harbour 3.2.0 (r1306211258)

PellesC
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Campos empaquetados en archivo de texto
Posted: Tue Oct 12, 2021 08:01 AM

Miguel,

gracias por avisarme, ya lo encontré, fué a la carpeta de spam :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Campos empaquetados en archivo de texto
Posted: Tue Oct 12, 2021 08:19 AM
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 328
Joined: Fri May 19, 2006 04:08 PM
Re: Campos empaquetados en archivo de texto
Posted: Tue Oct 12, 2021 11:24 AM

Gracias maestro. Ahora me fijo
Gracias Gracias.
Abrazo enorme

FWH 32/64 14.04

Harbour 3.2.0 (r1306211258)

PellesC
Posts: 328
Joined: Fri May 19, 2006 04:08 PM
Re: Campos empaquetados en archivo de texto
Posted: Tue Oct 12, 2021 11:54 AM

Voy a tratar pasar la función de C# a Harbour aunque mis conocimientos en C son muy escasos. De VB ni idea.
Pero de alguna manera tengo que lograrlo ya que dependo de esta bendita función para lograr insertarme laboralmente.
Gracias a todos
Abrazo
Miguel

FWH 32/64 14.04

Harbour 3.2.0 (r1306211258)

PellesC
Posts: 328
Joined: Fri May 19, 2006 04:08 PM
Re: Campos empaquetados en archivo de texto
Posted: Wed Oct 13, 2021 12:54 AM

Bueno estuve intentándolo todo el día y no hay caso...mis conocimientos en C son mucho más escasos de lo que suponía y no pude pasar la función para probarla.
Igualmente gracias por todo a todos.
Abrazo
Miguel

FWH 32/64 14.04

Harbour 3.2.0 (r1306211258)

PellesC
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Campos empaquetados en archivo de texto
Posted: Wed Oct 13, 2021 06:01 AM

Miguel,

Copia aqui lo que hayas hecho y lo revisamos :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 328
Joined: Fri May 19, 2006 04:08 PM
Re: Campos empaquetados en archivo de texto
Posted: Wed Oct 13, 2021 03:43 PM
Antonio acá te lo dejo... es muy poco lo que hice .... mis conocimientos en C son totalmente nulos
De hecho no sé por donde empezar.

#include <Windows.h>
#include <hbapi.h>

HB_FUNC( Pack2Text )
{

private Decimal Unpack(byte[] inp, int scale)
{
long lo = 0;
long mid = 0;
long hi = 0;
bool isNegative;

// this nybble stores only the sign, not a digit.
// "C" hex is positive, "D" hex is negative, and "F" hex is unsigned.
switch (nibble(inp, 0))
{
case 0x0D:
isNegative = true;
break;
case 0x0F:
case 0x0C:
isNegative = false;
break;
default:
throw new Exception("Bad sign nibble");
}
long intermediate;
long carry;
long digit;
for (int j = inp.Length * 2 - 1; j > 0; j--)
{
// multiply by 10
intermediate = lo * 10;
lo = intermediate & 0xffffffff;
carry = intermediate >> 32;
intermediate = mid * 10 + carry;
mid = intermediate & 0xffffffff;
carry = intermediate >> 32;
intermediate = hi * 10 + carry;
hi = intermediate & 0xffffffff;
carry = intermediate >> 32;
// By limiting input length to 14, we ensure overflow will never occur

digit = nibble(inp, j);
if (digit > 9)
{
throw new Exception("Bad digit");
}
intermediate = lo + digit;
lo = intermediate & 0xffffffff;
carry = intermediate >> 32;
if (carry > 0)
{
intermediate = mid + carry;
mid = intermediate & 0xffffffff;
carry = intermediate >> 32;
if (carry > 0)
{
intermediate = hi + carry;
hi = intermediate & 0xffffffff;
carry = intermediate >> 32;
// carry should never be non-zero. Back up with validation
}
}
}
return new Decimal((int)lo, (int)mid, (int)hi, isNegative, (byte)scale);
}

private int nibble(byte[] inp, int nibbleNo)
{
int b = inp[inp.Length - 1 - nibbleNo / 2];
return (nibbleNo % 2 == 0) ? (b & 0x0000000F) : (b >> 4);
}
}
FWH 32/64 14.04

Harbour 3.2.0 (r1306211258)

PellesC
Posts: 328
Joined: Fri May 19, 2006 04:08 PM
Re: Campos empaquetados en archivo de texto
Posted: Thu Oct 14, 2021 12:46 PM

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

FWH 32/64 14.04

Harbour 3.2.0 (r1306211258)

PellesC
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: Campos empaquetados en archivo de texto
Posted: Thu Oct 14, 2021 03:48 PM
encontre, esto, no tengo muy claro la parte de la lectura del archivo...
m_str = fread( ifp, m_cnt )

http://www.verycomputer.com/165_a88f85a8a4ea61b7_1.htm
Code (fw): Select all Collapse
FUNCTION comp_3( m_cnt )
PRIVATE m_str, m_data, m_cnt, m_luku, m_ub, m_lb, m_uc, m_lc
m_ub := 0
m_lb := 0
m_uc := ""
m_lc := ""

m_str = fread( ifp, m_cnt )
m_data = ""

FOR i = 1 TO m_cnt
    m_ub := int( asc( subs( m_str, i, 1 ) ) / 16 )
    m_lb := asc( subs( m_str, i, 1 ) ) - ( m_ub * 16 )
    m_uc := chr( 48 + m_ub )
    m_lc := chr( 48 + m_lb )
    if i < m_cnt
        m_data := m_data + m_uc + m_lc
    else
        m_data := iif( m_lc = "=", "-" + m_data + m_uc,"+" + m_data + m_uc )
    endif
NEXT
      
RETURN m_data
Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)