Concatenar N ficheros

Todo lo relacionado con JCL, manejo de jobs, etc.
Responder
antonioe

Concatenar N ficheros

Mensaje por antonioe »

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?
Vicente

Re: Concatenar N ficheros

Mensaje por Vicente »

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
ccavallo

Re: Concatenar N ficheros

Mensaje por ccavallo »

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

Re: Concatenar N ficheros

Mensaje por antonioe »

Genial,

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