https://groups.google.com/g/publicesvfoxpro/c/vS2QPPyWeys/m/AX3P9tYmCgAJ
https://sourceforge.net/projects/cobol2j/
Carlos Vargas
Desde Managua, Nicaragua (CA)
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
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
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
Prueba con las herramientas del.segundo link.
A ver si funciona.
carlos vargas wrote:Prueba con las herramientas del.segundo link.
A ver si funciona.
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
set path=c:\bcc7\bin
c:\harbour\bin\hbmk2 comp3 -comp=bccfunction 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 nilC:\soporte\MiguelAngel>comp3
ClaveBeneficio: 01000000190
ClaseDeBeneficio: 01
MarcaInvalidez:
ApellidoNombres: MELAMED LUIS
CajaOtorgante: 01
Marca: N
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
? "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 ) ) )Importe: 0 0 88 ED 1B C
Es posible que el valor guardado en el importe sea: 35.053,27 ?
Puedes comprobarlo ?
Puede ser 136.237,27 ?
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 nilC:\soporte\MiguelAngel>comp3
12345 12 34 5 C
.