El 22/09/2010 03:19 p.m., kike jordi escribió:
El 22 de septiembre de 2010 15:17, Eduardo Moreno<[email protected]>
escribió:

         El 22/09/10 08:39, kikejordi escribió:



                 Hola, tengo una vieja base de datos hecha con qbasic,
                 las tablas son de longitud fija, abriendo el archivo con
                 writer se ve una sola fila (no tiene separador de
                 registros), hay alguna forma de importarlo con calc
                 pasandole
                 como parametros la longitud del registro, y la de los
                 campos? una vez separados los registros no es dificil
                 separar los campos de longitud fija, mi problema es con
                 los separadores de registro, no encuentro nada que me
                 los separe.

                 gracias



         La pregunta es, ¿Tu programa  como termina las filas?

         Si abres el archivo que generó tu programa con otra aplicación
         (gedit o WordPad) ¿También ves una sola fila?

         En caso de que si, si sabes que el largo de cada registro es
         constante, pues creo que tu solución primera es hacer un
         pequeños programa que te vaya segmentando tu texto.

         Si tienes el código de tu programa de Qbasic, checa si lo puedes
         transformar en un macro o compilalo con RealBasic para que lo
         tengas listo para Windows, Linux y MAC.

         -




         -
         Mi Office genera: Seguridad, Confianza y Ahorro


         J. Eduardo Moreno
         TOKONHU de México
         044 55 2748 4840




         Ante todo gracias por tu respuesta. Abriendo el archivo con
         gedit se ve una sola fila, y si, separando esa fila de acuerdo a
         la longitud del registro, que es constante, tengo gran parte de
         mi problema solucionado. pero esto es lo que no logro hacer.
         intente insertar un caracter especial con el awk con el
         siguiente script:

          awk 'BEGIN {RS=""} {for(i=1;i<1268;i++) {for(j=1;j<23;j++)
         print $(i*j)} print "/n"}' CONCEPTO.PRO>  convert.txt

con RS="", hago que lea de a un caracter por vez, el archivo a dividir
tiene 27896 caracteres, la longitud de registro= 22, (1268 ciclos de 22
da 27986), entonces en el ciclo mas chico imprimia $i*j , el caracter
tal como esta en el archivo original, y a la salida del ciclo chico
imprime un /n newline, que usaria como separador de registro, pues
bueno, si bien no da error, no funciona.

transcribo parte del archivo CONCEPTO.PRO (uno de los que tengo que
migrar, el mas simple):

82 l99010 DIEZ        82 199110 DIEZ        82 199210 DIEZ
1001990LICENCIA.      1001991LICENCIA.      1001992LICENCIA       80
199010 (Diez)      80 199110 (Diez)      80 199210 (Diez)      81 199010
DIEZ        81 199110 DIEZ        81 19929.66 (Nueve.66)40 19909.33
(Nueve.33)40 199110 (Diez)      40 199210 (Diez)      48 19908 (Ocho)
48 19918.33 (Ocho.33) 48 19927.66 (Siete.66)1  19908 (ocho)       1
19918.33 (ocho/33) 1  19929.33 (nueve/33)2  19909.66 (Nueve.66)2
19919.66 (Nueve.66)2  199210 (Diez)      3  19909 (Nueve)      3  199110
(Diez)      3  199210 (Diez)      4  1990               4  19919.33
(nueve.33)4  19929.33 (nueve.33)5  19908.66 (Ocho.66) 5  19919 (Nueve)
5  19929.33 (Nueve.33)6  19919.33 (Nueve.33)6  19929 (Nueve)      7
19908.66 (Ocho.66) 7  19918.66 (Ocho.66) 7  19929 (nueve)      12
19909.33 (Nueve.33)13 19909 (Nueve)      13 1991               13 19929
(Nueve)

y parte del archivo convert.txt resultante

82

l99010
DIEZ
82
199110
DIEZ
82
199210
DIEZ
1001990LICENCIA.
1001991LICENCIA.
1001992LICENCIA
80
199010
(Diez)
80
199110
(Diez)
80
199210
(Diez)
81
l99010
82
DIEZ
199210
1001990LICENCIA.
1001992LICENCIA
199010
80
(Diez)
199210
81
DIEZ
199110
81
(Nueve.66)40
(Nueve.33)40
(Diez)
199210
48
(Ocho)
19918.33
48
DIEZ
DIEZ
DIEZ
1001992LICENCIA
(Diez)
(Diez)
(Diez)
DIEZ
DIEZ


de nuevo,gracias por tu atencion

kike

Kike y amigos de la lista.

Prueba estos comandos del shell que te puede ayudar:

$ i=1;f=22; for ((reg=1;reg<11;reg++)); do cut -c$i-$f CONCEPTO.PRO ; i=$(($f+1));f=$(($f+22)); done > convert.txt

Funciona para los 10 registros que enviaste a la lista.

Cordial Saludo.

--

Manuel Andrés Ramírez P.
Administrador Informático
GNU/Linux Registered User:412887
www.obtengalinux.org

<<Yo Tengo mi Office Legal y no pagué por su licencia>>

"El placer más noble es el júbilo de comprender"
(Leonardo Da Vinci)


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Responder a