Concatenar N ficheros

Todo lo relacionado con JCL, manejo de jobs, etc.
Responder
antonioe
Usuario
Usuario
Mensajes: 3
Registrado: 19 Ene 2019, 08:55
País: España
Ciudad: Madrid
Ocupación: Analista funcional

Concatenar N ficheros

Mensaje por antonioe » 19 Ene 2019, 09:27

En un programa COBOL, mediante la rutina BPXWDYN aloco dinámicamente N ficheros.
Lógicamente se cuantos ficheros son y como se llaman, pero ese número N puede variar de una ejecución a otra.

Mas tarde necesito fusionar algunos de esos ficheros en un solo fichero de salida.
Esto se puede hacer de multiples formas, pero el problema es que en cada ejecucion el numero de ficheros a fusionar varia, y no puedo escribirlos a pelo en un SORT, por ejemplo.

El caso es que tengo un fichero que contiene los nombres de los ficheros a fusionar, algo como esto

COBOL.FICHEROS.PARA.FUSIONAR
------------------------------------
COBOL.FICHERO2
COBOL.FICHERO5
COBOL.FICHERO6


¿Se os ocurre como meter eso en la SYSIN de alguna utilidad para que me genere un unico fichero de salida?

Avatar de Usuario
Vicente
Colaborador avanzado
Colaborador avanzado
Mensajes: 546
Registrado: 21 Jul 2011, 04:52
País: España
Ciudad: Malaga
Ocupación: Técnico en Sistemas

Re: Concatenar N ficheros

Mensaje por Vicente » 23 Ene 2019, 10:39

Hola,
¿Podrías hacer que tu programa cobol, u otro, escribiera un JCL, que use IEBGENER u otra utilidad para unir los ficheros, para después submitirlo ?
un saludo
Varios días probando, equivocandote y volviendo a probar
pueden ahorrarte quince minutos de lectura de un manual.

ccavallo
Usuario
Usuario
Mensajes: 17
Registrado: 27 Ago 2013, 13:09
País: España
Ciudad: Alovera
Ocupación: Jefe de area de sistemas

Re: Concatenar N ficheros

Mensaje por ccavallo » 27 Ene 2019, 06:10

Hola

A) Si el fichero COBOL.FICHEROS.PARA.FUSIONAR es factible de modificación, escribe lo siguiente en el fichero para que pueda ser utilizado en la SYSIN de un IDCAMS

REPRO IDS('COBOL.FICHERO2') OFILE(COPY)
REPRO IDS('COBOL.FICHERO5') OFILE(COPY)
REPRO IDS('COBOL.FICHERO6') OFILE(COPY)

Luego un paso IDCAMS como el siguiente, asegurandose previamente que el fichero resultante no exista

//FUSIONAR EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//COPY DD DISP=(MOD,CATLG,DELETE),
// SPACE=(CYL,(100,100),RLSE),UNIT=3390,
// DCB=(LRECL=xxx,BLKSIZE=0,RECFM=FB),
// DSN=COBOL.FICHEROS.FUSIONAD
//SYSIN DD DISP=SHR,DSN=COBOL.FICHEROS.PARA.FUSIONAR


B) Si el fichero COBOL.FICHEROS.PARA.FUSIONAR no es factible de modificación, escribe las mismas REPRO a través de un SORT en un fichero que pueda ser utilizado en la SYSIN del IDCAMS.

Por ejemplo si en el archivo de entrada dice COBOL.FICHERO2, en la salida escriba la linea como REPRO IDS('COBOL.FICHERO2') OFILE(COPY).
Luedo utilizas ese fichero resultante como en el IDCAMS del punto (A)

antonioe
Usuario
Usuario
Mensajes: 3
Registrado: 19 Ene 2019, 08:55
País: España
Ciudad: Madrid
Ocupación: Analista funcional

Re: Concatenar N ficheros

Mensaje por antonioe » 29 Ene 2019, 14:55

Genial,

Muchas gracias, funciona perfectamente.
Una solución fácil y elegante para un problema aparentemente sencillo pero que no lo es tanto...

Responder