Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   RM/COBOL (https://www.cobolforo.es/forumdisplay.php?f=16)
-   -   [Herramienta] Exportar datos de una app Cobol a un .txt o .csv (https://www.cobolforo.es/showthread.php?t=1467)

manu 15 de abril de 2022 21:57

Exportar datos de una app Cobol a un .txt o .csv
 
Buenas, estoy desarrollando un programa en Python para reemplazar uno de mas de 30 años hecho en Cobol, la cosa va muy bien encaminada pero necesito extraer los datos de cobol para no tener que cargar la base de datos a mano... Hace varios días ya que estoy intentando hacerlo y buscando información en múltiples sitios y no consigo dar en el clavo...

Antes que nada debo aclarar que no tengo ningún conocimiento de Cobol (más que lo que he podido aprender en estos días que llevo investigando)
Del programa Cobol tengo acceso absolutamente a todos los archivos, con extensiones .CBL, .COB, .INX, .SQZ, .OVL, e incluso unos que no tienen extensión donde se encuentra toda la información que necesito pero "desordenada", siguiendo un patrón que el sistema comprende (supongo que sabrán a que me refiero)

Analizando dichos archivos he podido entender el patrón que sigue (por ej.: los primeros 2 caracteres pertenecen a un dato, los siguientes 6 a otro, los siguientes 4 a otro, etc...) sin embargo tiene ciertas inconsistencias que no me permite hacer algo que los separe (algunos tienen 256 caracteres, otros 257; para un dato algunos usan un solo caracter y otros dos; hasta un punto cada renglón representa una "fila" y en cierto punto empieza a haber varias "filas" por renglón; etc...)

El programa esta hecho con RM/COBOL RUNTIME <Ver 2.1A >.

Intenté utilizar varias herramientas que vi en otras webs e incluso con tres que encontré en este foro (ReadCOBOLFile, mira, UTIL) pero ninguno me funcionó (o quizá no supe utilizarlos correctamente)

También comenzé a ver unos videotutoriales para comprender el funcionamiento de Cobol pero sinceramente no es muy viable que aprenda un lenguaje nuevo, completamente diferente a lo que ya conozco, para poder sacar los datos...

Si existe alguna herramienta que pueda extraer la base de datos y exportarla a un archivo que me permita migrarla, o si alguien puede extraerla o explicarme como hacerlo se lo agradecería muchísimo...

Desde ya muchas Gracias

JCantero 15 de abril de 2022 23:25

Esa versión 2.1 es muy antigua.

Por eso las utilidades que has encontrado no te funcionan.

Tienes tres opciones.

1) convertir los ficheros que tienes a una version mas reciente. Rmcobol lleva una utilidad para ello. Se llama rmifca.cob. Pero necesitaras una version de cobol mas reciente. Te pego aqui un link:

Convert RM/COBOL indexed file v2.1 (dual) into current version 12 - RM COBOL - Forum - RM/COBOL

2) Poner la impresora a un fichero. Imprimes la informacion deseada y vas importando la informacion de esos ficheros.

3) hacer un pequeno programa en cobol, con un bucle, que lea la informacion del fichero deseado y te lo deje en txt. Si deseas ayuda, envia la select y la fd de un fichero y te hacemos una rutina para exportar ese fichero. Con el resto ya lo harias tu siguiendo el esquema.

Decide la opcion deseada y ya nos dices como podemos ayudarte.

manu 17 de abril de 2022 01:41

Buenas, primero que nada muchas Gracias por la respuesta... Quiero molestar lo menos posible así que intenté realizar la primer opción, sin embargo el archivo no se encuentra disponible... Antes de ayer descargué la versión 5.36 de RMCobol y puedo ver que el archivo RMIFCA.COB se encuentra en la carpeta... Me podrías explicar cómo utilizarlo? Cómo ejecutarlo y qué archivos debería actualizar? Una vez actualizados ya podría utilizar, por ejemplo, la utilidad ReadCOBOLFile y generar a partir de éstos un .CSV?


Saludos!

manu 17 de abril de 2022 02:13

1 Archivos Adjunto(s)
Cita:

Citación del post de manu (Mensaje 7691)
Buenas, primero que nada muchas Gracias por la respuesta... Quiero molestar lo menos posible así que intenté realizar la primer opción, sin embargo el archivo no se encuentra disponible... Antes de ayer descargué la versión 5.36 de RMCobol y puedo ver que el archivo RMIFCA.COB se encuentra en la carpeta... Me podrías explicar cómo utilizarlo? Cómo ejecutarlo y qué archivos debería actualizar? Una vez actualizados ya podría utilizar, por ejemplo, la utilidad ReadCOBOLFile y generar a partir de éstos un .CSV?


Saludos!

ACTUALIZACIÓN:

Encontré información sobre como utilizarlo acá... Pero no pude lograrlo:

En primer lugar no sé que poner en BLOCK CONTAINS CLAUSE... De todas formas intenté dando a enter. Luego me da el siguiente error:

Archivo Adjunto 743

JCantero 17 de abril de 2022 17:18

La version 5.3 no admite nombres largos.

Repite el proceso, en vez de poner ZZZ_socios pon socios.txt

Y muestra que te dice......

---------- Post añadido el 17 de abril de 2022 a las 17:24 ----------

Seguramente la vez que lo ejecutaste te creó el fichero ZZZ_S~1

---------- Post añadido el 17 de abril de 2022 a las 17:33 ----------

asi con este

---------- Post añadido el 17 de abril de 2022 a las 17:34 ----------

perdon, se debe haber generado ZZZ_so~1

---------- Post añadido el 17 de abril de 2022 a las 17:40 ----------

otra cosa, le has dado como fichero de entrada socios.inx que debe de ser el fichero de indices.

Debes de darle el maestro, no se que extension tendra, .fic, .dat

---------- Post añadido el 17 de abril de 2022 a las 17:41 ----------

Desde la linea de comandos:

dir socios.*

manu 17 de abril de 2022 19:18

1 Archivos Adjunto(s)
Buenas, Gracias nuevamente por responder...

Cita:

Citación del post de JCantero (Mensaje 7693)
otra cosa, le has dado como fichero de entrada socios.inx que debe de ser el fichero de indices.

Puse .INX porque lo dice en la guía que leí (que pasé en mi respuesta anterior) :confused:

Archivo Adjunto 744

Cita:

Citación del post de JCantero (Mensaje 7693)
Debes de darle el maestro, no se que extension tendra, .fic, .dat

el maestro sería el ejecutable? o el archivo que tiene los datos?

Tengo archivos con extensiones .CBL, .COB, .INX, .SQZ, .OVL y los que no tienen ninguna extensión (que es donde estan los datos "desordenados")


Saludos

manu 17 de abril de 2022 20:07

Cita:

Citación del post de manu (Mensaje 7699)
Buenas, Gracias nuevamente por responder...



Puse .INX porque lo dice en la guía que leí (que pasé en mi respuesta anterior) :confused:

Archivo Adjunto 744



el maestro sería el ejecutable? o el archivo que tiene los datos?

Tengo archivos con extensiones .CBL, .COB, .INX, .SQZ, .OVL y los que no tienen ninguna extensión (que es donde estan los datos "desordenados")


Saludos

ACTUALIZACIÓN:

Bueno... Me di cuenta que al finalizar la ejecución de rmifca me decía que debía COMPILAR y EJECUTAR rmifcb... Así que busqué como se compilaba y encontré que es con rmcobol .....cbl...

Así que compilé y luego ejecuté y funcionó... Al archivo resultante le cambié la extensión a .FQ para poder leerlo con ReadCOBOLFile que me generó un archivo con extensión .FQ.OUT, lo renombre a .TXT y aparentemente me devolvió el resultado esperado... Voy a probar con el resto de los archivos y comento como me fué...

MILLONES DE GRACIAS JCANTERO!

JCantero 17 de abril de 2022 20:19

Por si tienes que ver mas cosas.

.CBL debe ser el fuente,
.COB el objeto que genera el rmcobol al compilar el fuente .CBL ( el .COB se ejecuta con el runtime)
.INX debe de ser el INDICE del fichero ( y el maestro como norma general tiene extension .DAT o .FIC aunque lo mismo lo tienes sin extension).

.OVL creo que son librerias del runtime.

manu 17 de abril de 2022 20:35

1 Archivos Adjunto(s)
Bueno estuve revisando el archivo generado y si bien mejoró, sigue teniendo ciertas inconsistencias...

Cómo se puede ver en el archivo -> Archivo Adjunto 745 (tuve q recortarlo porque excedía el tamaño permitido)

1) Se ordenaron los datos, colocando por cada renglón un solo socio..
2) Los distintos campos de cada socio no se encuentran separados por un caracter de manera general, ciertos campos estan separados por una cantidad X de espacios, otros simplemente estan pegados unos a otros... Lo que me complica mucho a la hora de exportarlo a un archivo .csv para poder subirlo a la base de datos nueva...
3) Sigue habiendo renglones de 257 caracteres y otros de menos... Otra complicación para generar el .csv
4) Relacionado a los dos puntos anteriores, en ciertos campos (como el piso por ejemplo) utiliza distinta cantidad de caracteres para representarlo (en # de socio algunos tienen un caracter mas, otros uno menos; en el piso los de Planta Baja tienen PB (dos caracteres) y los de Primer piso simplemente un 1 (un solo caracter)

Teniendo en cuenta esto me pregunto: ¿Cómo logra el programa separar los campos para mostrarmelos en su debido lugar cuando lo ejecuto si no tiene una estandarización entre cada renglón?

Si bien mejoró un poco, me sigue siendo imposible lograr generar un archivo .csv de manera automática...

manu 17 de abril de 2022 23:12

1 Archivos Adjunto(s)
Una consulta: El programa tiene una función de imprimir todos los datos que se encuentran en esos archivos y de forma ordenada... Hay alguna forma de modificar el código para que en vez de imprimirlos los guarde en un .csv/.txt/.xlsx ? Porque esa sería una forma de realizar lo que necesito...

Gracias..


Acá estan los archivos que entiendo son los encargados de realizar la impresión.... Archivo Adjunto 746

JCantero 17 de abril de 2022 23:13

Como que lo has recortado ?
Por que ?

No hay que recortarlo.
Pon extención .txt
Abrelo con el bloc de notas o con la excel

El registro de cada socio puede que tenga 256 caracteres o mas. Revisa el fuente o pon aqui la fd del fichero de socios para orientarte.

Lo que envias, aparentemente, como lo has cortado 2 tienes lineas por socio. Cuando es una linea por socio.

Los campos son de ancho fijo, la longitud de cada campo esta en la fd.

Si abres ese fichero, sin cortar, con la excel, lo abres delimitado por longitud variable, vas marcando cada campo, lo tendras en la excel y podras guardarlo en .csv delimitado como quieras, comas, punto y comas, tabuladores, etc..

---------- Post añadido el 17 de abril de 2022 a las 23:19 ----------

Cita:

Citación del post de manu (Mensaje 7703)
Una consulta: El programa tiene una función de imprimir todos los datos que se encuentran en esos archivos y de forma ordenada... Hay alguna forma de modificar el código para que en vez de imprimirlos los guarde en un .csv/.txt/.xlsx ? Porque esa sería una forma de realizar lo que necesito...

No

El TXT lo puedes coger con excel, marcar cada campo, ayudantote de la FD que estará en algun fuente.

Una vez lo tengas en la excel lo puedes guardar en .CSV

---------- Post añadido el 17 de abril de 2022 a las 23:20 ----------

Envia el txt sin cortar y un fuente que tenga la FD y te muestro como hacerlo

---------- Post añadido el 17 de abril de 2022 a las 23:21 ----------

Para generar un .csv directamente hay que hacer la opción 3 que te propuse al principio de este hilo.

---------- Post añadido el 17 de abril de 2022 a las 23:33 ----------

Cita:

Citación del post de manu (Mensaje 7703)


Acá estan los archivos que entiendo son los encargados de realizar la impresión..


Con la FD que has enviado

Código COBOL:
  1.        FD  SOCIOS             LABEL RECORD IS STANDARD
  2.                               RECORD  CONTAINS 256 CHARACTERS.
  3.        01  I-REG-SOCI.
  4.            03  I-CVE-SOCI.
  5.                05  I-SOCI               PIC 9(05).
  6.            03  I-APENOM-SOCI            PIC X(35).
  7.            03  I-CVE-DIR-SOCI.
  8.                05  I-DIR-SOCI           PIC X(35).
  9.            03  I-CODPOS-SOCI            PIC 9(04).
  10.            03  I-LOCAL-SOCI             PIC X(15).
  11.            03  I-TE-SOCI                PIC X(11).
  12.            03  I-CVE-PANTEON-SOCI.
  13.                05  I-N-PANTEON-SOCI     PIC 99.
  14.            03  I-CVE-ZONA.
  15.                05  I-ZONA-SOCI          PIC 99.
  16.                05  I-RUTA-SOCI          PIC 9(04).
  17.            03  I-CATEG-SOCI             PIC 99.
  18.            03  I-CVE-NICHO-SOCI.
  19.                05  I-N-NICHO-SOCI       PIC 9(06).
  20.                05  I-N-QUEK-NICH REDEFINES I-N-NICHO-SOCI.
  21.                    07  I-N-NICHO-3      PIC 9(03).
  22.                    07  FILLER           PIC XXX.
  23.            03  I-N-PISO-SOCI            PIC XX.
  24.            03  I-N-FILA-SOCI            PIC 99.
  25.            03  KK-CON-FILA REDEFINES I-N-FILA-SOCI.
  26.                05 I-1ER-BYTE PIC X.
  27.                05 I-2DO-BYTE PIC X.
  28.            03  I-CVE-ALTA-SOCI.
  29.                05  I-F-ALTA-SOCI            PIC 9(06).
  30.                05  I-F-ALTA-SOCIX           REDEFINES I-F-ALTA-SOCI.
  31.                    07  I-F-AA-ALTA-SOCI     PIC 99.
  32.                    07  I-F-MM-ALTA-SOCI     PIC 99.
  33.                    07  I-F-DD-ALTA-SOCI     PIC 99.
  34.                05  I-F-ALTA-SOCIXX          REDEFINES I-F-ALTA-SOCI.
  35.                    07  I-F-AAMM-ALTA-SOCI   PIC 9999.
  36.                    07  FILLER               PIC 99.
  37.            03  I-ACUM-SOCI              PIC S9(12)V99.
  38.            03  I-IMP-CTDO-SOCI          PIC S9(12)V99.
  39.            03  I-IMP-ANTI-SOCI          PIC S9(12)V99.
  40.            03  I-CAN-CUO-SOCI           PIC 99.
  41.            03  I-IMP-CUO-SOCI           PIC S9(12)V99.
  42.            03  I-C-MONEDA-SOCI          PIC X.
  43.            03  I-F-PRIMER-CUO-SOCI      PIC 9(06).
  44.            03  FILLER                   PIC X(46).
  45.            03  I-OPER-SOCI              PIC X(04).
  46.            03  I-F-MODI-SOCI            PIC 9(06).

1) Selecciona el TXT sin recortar con la excel,

2) Te pregunta la excel, delimitados o ancho ficho, le das ancho fijo,
3) Le das siguiente,
4) Vas marcando cada campo con su logitud determinada por la fd que te he puesto arriba.
5) Cuando termines, siguiente
6) y ya tienes en excel cada campo en una columna,
7) lo guardas en .csv con las caracteristicas deseadas

---------- Post añadido el 17 de abril de 2022 a las 23:35 ----------

Si hay algun campo de la FD que no entiendas, pregunta.

manu 18 de abril de 2022 00:20

1 Archivos Adjunto(s)
Cita:

Citación del post de JCantero (Mensaje 7704)
Como que lo has recortado ?
Por que ?

No hay que recortarlo.
Pon extención .txt
Abrelo con el bloc de notas o con la excel

El registro de cada socio puede que tenga 256 caracteres o mas. Revisa el fuente o pon aqui la fd del fichero de socios para orientarte.

Lo que envias, aparentemente, como lo has cortado 2 tienes lineas por socio. Cuando es una linea por socio.

Los campos son de ancho fijo, la longitud de cada campo esta en la fd.

Si abres ese fichero, sin cortar, con la excel, lo abres delimitado por longitud variable, vas marcando cada campo, lo tendras en la excel y podras guardarlo en .csv delimitado como quieras, comas, punto y comas, tabuladores, etc..

---------- Post añadido el 17 de abril de 2022 a las 23:19 ----------



No

El TXT lo puedes coger con excel, marcar cada campo, ayudantote de la FD que estará en algun fuente.

Una vez lo tengas en la excel lo puedes guardar en .CSV

---------- Post añadido el 17 de abril de 2022 a las 23:20 ----------

Envia el txt sin cortar y un fuente que tenga la FD y te muestro como hacerlo

---------- Post añadido el 17 de abril de 2022 a las 23:21 ----------

Para generar un .csv directamente hay que hacer la opción 3 que te propuse al principio de este hilo.

---------- Post añadido el 17 de abril de 2022 a las 23:33 ----------




Con la FD que has enviado

Código COBOL:
  1.        FD  SOCIOS             LABEL RECORD IS STANDARD
  2.                               RECORD  CONTAINS 256 CHARACTERS.
  3.        01  I-REG-SOCI.
  4.            03  I-CVE-SOCI.
  5.                05  I-SOCI               PIC 9(05).
  6.            03  I-APENOM-SOCI            PIC X(35).
  7.            03  I-CVE-DIR-SOCI.
  8.                05  I-DIR-SOCI           PIC X(35).
  9.            03  I-CODPOS-SOCI            PIC 9(04).
  10.            03  I-LOCAL-SOCI             PIC X(15).
  11.            03  I-TE-SOCI                PIC X(11).
  12.            03  I-CVE-PANTEON-SOCI.
  13.                05  I-N-PANTEON-SOCI     PIC 99.
  14.            03  I-CVE-ZONA.
  15.                05  I-ZONA-SOCI          PIC 99.
  16.                05  I-RUTA-SOCI          PIC 9(04).
  17.            03  I-CATEG-SOCI             PIC 99.
  18.            03  I-CVE-NICHO-SOCI.
  19.                05  I-N-NICHO-SOCI       PIC 9(06).
  20.                05  I-N-QUEK-NICH REDEFINES I-N-NICHO-SOCI.
  21.                    07  I-N-NICHO-3      PIC 9(03).
  22.                    07  FILLER           PIC XXX.
  23.            03  I-N-PISO-SOCI            PIC XX.
  24.            03  I-N-FILA-SOCI            PIC 99.
  25.            03  KK-CON-FILA REDEFINES I-N-FILA-SOCI.
  26.                05 I-1ER-BYTE PIC X.
  27.                05 I-2DO-BYTE PIC X.
  28.            03  I-CVE-ALTA-SOCI.
  29.                05  I-F-ALTA-SOCI            PIC 9(06).
  30.                05  I-F-ALTA-SOCIX           REDEFINES I-F-ALTA-SOCI.
  31.                    07  I-F-AA-ALTA-SOCI     PIC 99.
  32.                    07  I-F-MM-ALTA-SOCI     PIC 99.
  33.                    07  I-F-DD-ALTA-SOCI     PIC 99.
  34.                05  I-F-ALTA-SOCIXX          REDEFINES I-F-ALTA-SOCI.
  35.                    07  I-F-AAMM-ALTA-SOCI   PIC 9999.
  36.                    07  FILLER               PIC 99.
  37.            03  I-ACUM-SOCI              PIC S9(12)V99.
  38.            03  I-IMP-CTDO-SOCI          PIC S9(12)V99.
  39.            03  I-IMP-ANTI-SOCI          PIC S9(12)V99.
  40.            03  I-CAN-CUO-SOCI           PIC 99.
  41.            03  I-IMP-CUO-SOCI           PIC S9(12)V99.
  42.            03  I-C-MONEDA-SOCI          PIC X.
  43.            03  I-F-PRIMER-CUO-SOCI      PIC 9(06).
  44.            03  FILLER                   PIC X(46).
  45.            03  I-OPER-SOCI              PIC X(04).
  46.            03  I-F-MODI-SOCI            PIC 9(06).

1) Selecciona el TXT sin recortar con la excel,

2) Te pregunta la excel, delimitados o ancho ficho, le das ancho fijo,
3) Le das siguiente,
4) Vas marcando cada campo con su logitud determinada por la fd que te he puesto arriba.
5) Cuando termines, siguiente
6) y ya tienes en excel cada campo en una columna,
7) lo guardas en .csv con las caracteristicas deseadas

---------- Post añadido el 17 de abril de 2022 a las 23:35 ----------

Si hay algun campo de la FD que no entiendas, pregunta.



tuve que cortarlo para subirlo acá... igualmente se muestra bien, con un socio por linea... pero si te fijas, por ejemplo, de la línea 1 hasta la 10 el nro de operacion consiste de 5 caracteres y en las líneas 11 y 12 consiste de 4, luego vuelve a 5... y asi con varios campos...

Intenté hacer lo que me decís con ese archivo pero al no coincidir todos los campos como debería, las columnas agarraban partes de otras... no se si me explico...

Estuve revisando y ese no es el .CBL... es de otro listado q no me sirve.. el que si me sirve no tengo el .CBL (creo q solo tengo el .COB)

De todas formas lo que hice fue imprimir con el PDFCreator a un .TXT y ahi si lo importe al excel y quedo dentro de todo bien pero no llega a ser lo que necesito... es mejor que nada pero no lo que necesito porque lo imprime en dos lineas y por momentos se mezclan ciertos campos...

Sinceramente no logro entender como el COBOL entiende cuando comienza y finaliza un campo si no coinciden en la cantidad de caracteres entre distintos registros...

Te paso -> acá <- todos los archivos del programa a ver si logras entenderlo... Los datos que yo necesito extraer están en los archivos SOCIMANT y SOCIOSER

Estos son los dos archivos TXT recuperados con rmifca y ReadCOBOLFiles -> Archivo Adjunto 747 <-


Gracias por toda la ayuda que me estás brindando... Quería molestar lo menos posible pero ya me está mareando todo esto :llora:

JCantero 18 de abril de 2022 00:33

Debe de ser problema del readcobolfiles.

Inténtalo con la utilidad mira.

O mejor pásame los ficheros recuperados del rmifca.cob

manu 18 de abril de 2022 00:46

1 Archivos Adjunto(s)
Cita:

Citación del post de JCantero (Mensaje 7711)
pásame los ficheros recuperados del rmifca.cob

Aquí están: Archivo Adjunto 748

manu 18 de abril de 2022 02:15

Cita:

Citación del post de JCantero (Mensaje 7711)
Debe de ser problema del readcobolfiles.

Inténtalo con la utilidad mira.

Bueno, al final tanto dolor de cabeza y era esto... Un problema en el ReadCOBOLFiles...

Intenté con Mira y quedo EXCELENTE...

Nada más que agradecerte por toda la voluntad y la paciencia que me tuviste... Sos el mejor de los mejores...

Saludos y MUCHISIMAS MUCHISIMAS GRACIAS!@JCantero,

JCantero 18 de abril de 2022 09:59

Cita:

Citación del post de manu (Mensaje 7713)
Bueno, al final tanto dolor de cabeza y era esto... Un problema en el ReadCOBOLFiles...

Intenté con Mira y quedo EXCELENTE...

Nada más que agradecerte por toda la voluntad y la paciencia que me tuviste... Sos el mejor de los mejores...

Saludos y MUCHISIMAS MUCHISIMAS GRACIAS!@JCantero,

El "mira" es que lo hice yo.

:astro:

manu 18 de abril de 2022 13:14

Cita:

Citación del post de JCantero (Mensaje 7714)
El "mira" es que lo hice yo.

:astro:

Ahhh hubiésemos empezado por ahí!!! 👏🏻👏🏻👏🏻👏🏻👏🏻

Un genio total

Nuevamente muchas Gracias, y espero que sigas muy bien!

Saludos y un fuerte abrazo...:yess:


La franja horaria es GMT +2. Ahora son las 14:46.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.