![]() |
Crear Rutina que exporte archivos DAT a TXT?
Que tal amigos, soy muy nuevo en cobol, pero lo único que necesito es crear un pequeño programa que exporte la información de los archivos .dat a txt, con los respectivos nombres de columna.
Tengo los archivos CPY y FD, que creo son necesarios para poder hacer la exportación. El fin de todo esto es poder tomar la información para trabajarla con sistemas de Business Intelligence. Como puedo empezar a hacerlo? Alguien tiene alguna rutina de ejemplo? Desde ya muchas gracias. |
KalEl, No hay rutinas ya hechas para eso, es muy sencillo de hacer, abres el fichero origen para lectura, (OPEN INPUT fichero_origen), el de destino para escritura, (como tiene que ser un fichero LINE SEQUENTIAL, has de abrirlo con OPEN EXTEND fichero_destino), y después, te posicionas en el fichero_origen con un START, lo lees de manera secuencial con un READ NEXT, montas en una variable alfanumérica los campos con un STRING, grabas esa variable en el fichero destino con un WRITE y cuando termines, haces un CLOSE de los dos ficheros y ya lo tienes.
Sólo has de tener en cuenta, si los campos en el fichero destino, son de longitud fija o variable, porque lo que yo te he puesto es para longitud fija. Si no lo entiendes bien, dilo e intentaremos poner algún ejemplo sencillo. Un saludo.- |
1 Archivos Adjunto(s)
@Josber, Gracias por responder.
Lo voy a probar. Te paso un .dat de ejemplo, para ver si me puedes orientar con este y hacer algunas pruebas. Y Así sigo yo con todos los demas. Lo deje adjunto en este mensaje. Muchas gracias! |
KalEl, es un fichero indexado RMKF, o sea que puede ser perfectamente tratado por PowerCOBOL.
¿Tú lo que quieres es aprender COBOL o simplemente una "herramienta" que te haga la conversión? Si quieres aprender, intenta ir haciendo cosas y te iremos guiando y ayudando. Si es una necesidad puntual, podemos hacerte el programa nosotros. ¿Los ficheros CPY y FD que tienes son los mismos para todos los ficheros o hay juego para cada fichero de datos? Para poder ver el fichero de datos que has colgado, tienes que pasarnos también esos 2 ficheros CPY y FD que corresponden al mismo. |
1 Archivos Adjunto(s)
No me interesa mucho aprender Cobol, solo necesito poder extraer las información de los ficheros siempre que lo necesite a TXT.
Ya se otros lenguajes como PHP, Basic, JScript, etc. Asíque creo que puedo entender la lógica si logro tener al menos un ejemplo funcional de este tipo de extractores. Tengo un CPY que es general y los FD son por cada archivo. Acá los adjunto. |
KalEl, de todos estos ficheros, el único que nos interesa es el FD, que contiene lo siguiente:
Código COBOL:
Lo cual quiere decir, que:
Siendo tán pequeño, te puede interesar el siguiente programa genérico que extrae los datos: [Información] Visor archivos RM/COBOL modo texto - COBOL Foro Luego según la información que te he dado, puedes formatear el fichero de texto en Excel. Ya nos cuentas qué tal te ha ido. |
Gracias Kuk, acabo de probar el link que me pasaste al programita genérico, pero no me extrae la información.. Solo me muestra un resumen del archivo que abro, O no lo estoy usando bien jeje.
Al menos no me extrajo la información en ningún lado. Luego de saber como es la estructura del archivo, como puedo indicarle esto a un script para que me genere un txt? |
KalEl, en cuanto que abras el fichero, en el mismo directorio te aparece un nuevo fichero con el mismo nombre terminando por *.out. Es decir, te generará AR86.DAT.out
Lo he comprobado y extrae bien las primeras 2 columnas, la tercera por lo visto simepre contiene nulos. |
Perfecto, ahora lo que necesitaría es el código de ese programa, ya que necesito pasar unos 15 archivos a txt cada 2 días.
O al menos que ese programa se pueda usar por línea de comando con un .bat digamos y así armarle el script para que pase uno por uno atomaticamente. |
KalEl, entonces este programa no te sirve.
Como has dicho que todos los ficheros tienen el mismo formato, te puedo crear el programa que necesitas. Eso sí, ando un poco mal de tiempo, a ver si este fin de semana te lo puedo hacer. |
Muy amable Kuk, me gustaría tener el código de esta rutina para poder usarla en los demas archivos.
Muchas Gracias! |
KalEl, ¿tú tienes el compilador?
Por cierto, la estructura que has publicado no corresponde con el fichero, porque el fichero según el programa de antes, es de longitud 59 y la estructura 4+25+3=32 |
1 Archivos Adjunto(s)
Tienes Razon, encontre otro FD nuevo para ese archivo. Y da 59 el total.
|
KalEl, aquí tienes el programa. Lo he probado y funciona. En la salida te crea fichero de texto plano, separando los campos por punto-coma, es decir formato CSV para poder verlo en Excel.
Desde el script CMD/Batch debes pasar los nombres de los ficheros separados por punto-coma: Código:
CONVF001 "fichero.dat;fichero_salida.csv"Código COBOL:
|
Kuk, muchisimas gracias, al compilarlo estoy recibiendo los siguientes errores:
(seguramente estoy armando mal el proyecto en general) Código:
Create Type Library for compilation... |
KalEl, este programa no lo tienes que compilar en PowerCOBOL sino en NetCOBOL (Eclipse) porque es un programa Batch.
|
algo parecido para rm/cobol, tengo el fd
|
@luisbago, Si, puedes utilizar el ejemplo anterior (el fuente) lo modificas poniendo tu SELECT y FD para reemplazar (AR86-FILE) por el el tuyo.
Lo compilas en rmcobol y lo ejecutas. |
1 Archivos Adjunto(s)
KaIEI, este programa ejemplo te puede ayudar, leer un archivo .DAT y lo traspaso a TXT
slds |
1 Archivos Adjunto(s)
Cita:
mando cbl, fd.cbl y el lst |
Te adjunto fichero modificado.
|
1 Archivos Adjunto(s)
Fichero subido
|
Te envio fichero modificado sin errores ni warnings.
Cosas modificadas: - Los warning no tienen importancia pero te lo he solucionado.
- En una sentencia string ...... no puedes poner campos computacionales, lo he movido a un campo de edicion - tenias varios comentarios. Si no usas directivas de compilacion los comentarios deben de empezar con un * en la columna 7 o posicionar el comentario a partir de la columana 73. Bueno, ahi lo tienes pruebalo y ya nos dices...... |
Código:
runcobol.exe idx2cvs 211.idx;cosa.txtrmcobol 6.07 y rmcobol 7.00.02 no ejecuta el programa |
@luisbago, si lo ejecuta y te da una excepción de opción no válida.
Tienes que indicar al runtime que le envias parametros externos. Prueba de esta forma: (respetando los espacios en blanco) Código:
runcobol.exe idx2cvs a=' 211.idx; cosa.txt' |
Gracias, funciono con unos arreglos.
Después paso lo siguiente: Un campo declarado en el FD "NSS PIC 9(11) COMP-3." marca el siguiente error 0147: E Data item with DISPLAY usage expected hay varios registros declarados como comp-3, comp y comp-6, como se convierte a texto para colocarlo en el archivo declarado como *.txt (cosa.txt) |
@luisbago, ya te lo dije cuando te envié el .cbl arreglado.
Cita:
Código COBOL:
El anterior campo de edición te deja un string con espacios en blanco a la izquierda(_________123) si lo quieres así (000000000123) pon pic 9(11) en vez de pic z(11). Tambien te puede interesar pic z(10)9 |
| La franja horaria es GMT +2. Ahora son las 13:47. |
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.