concatenar registros

Todo lo relacionado con JCL, manejo de jobs, etc.
Responder
jcdm
Usuario
Usuario
Mensajes: 27
Registrado: 23 Feb 2015, 04:43
País: España
Ciudad: Madrid
Ocupación: Otra

concatenar registros

Mensaje por jcdm » 27 Feb 2018, 09:31

Buenos días,

Tengo dos ficheros.

FICH1
aaa
bbb
ccc

FICH2
111
222
333

Y Quisiera obtener una salida simple

aaa111
bbb222
ccc333

No hay ninguna clave ni me interesa eliminar duplicados, solo unir ambos ficheros sea cual sea el contenido.

Lo intento con SORT
//PASO01 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=FICHERO2,DISP=SHR
//SORTOUT DD DSN=SALIDA(SALIDA),DISP=SHR ---->PDS
//SYSIN DD *
SORT FIELDS=COPY
OUTREC FIELDS=(C'APPEND,C',C'''',1,3,C'''',80:X)
/*
//PASO09 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=FICHERO1,DISP=SHR
//SORTOUT DD SYSOUT=*
//SYMNOUT DD SYSOUT=*
//SORTOUT DD DSN=SALIDA(SALIDA),DISP=SHR
//SYSIN DD *
SORT FIELDS=COPY
OUTREC BUILD=(1,3,APPEND)
/*

Sin embargo no tengo muy claro el formato de la outrec

OUTREC BUILD=(1,3,APPEND)
$
E SYNTAX ERROR
El Mainframe te enseña a leer.

jcdm
Usuario
Usuario
Mensajes: 27
Registrado: 23 Feb 2015, 04:43
País: España
Ciudad: Madrid
Ocupación: Otra

Re: concatenar registros

Mensaje por jcdm » 28 Feb 2018, 04:13

El formateo me lo deja de la sgte manera:

APPEND,C'111'
APPEND,C'222'
APPEND,C'333'
El Mainframe te enseña a leer.

Abbys
Usuario
Usuario
Mensajes: 15
Registrado: 29 Sep 2015, 01:37
País: España
Ciudad: Madrid
Ocupación: Otra
Contactar:

Re: concatenar registros

Mensaje por Abbys » 04 Mar 2018, 13:32

Buenas

¿Has dado con la solución? Te propongo una, aunque posiblemente haya más soluciones y menos rebuscadas... pero esta funciona:

//PASO01 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DISP=SHR,DSN=IBMUSER.SORTIN.F1
//SORTOUT DD DSN=&&DSOUT1,DISP=(NEW,PASS),UNIT=3390,SPACE=(TRK,15)
//SYSIN DD *
OUTREC FIELDS=(1,5,SEQNUM,6,ZD)
SORT FIELDS=COPY
/*
//PASO02 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DISP=SHR,DSN=IBMUSER.SORTIN.F2
//SORTOUT DD DSN=&&DSOUT2,DISP=(NEW,PASS),UNIT=3390,SPACE=(TRK,15)
//SYSIN DD *
OUTREC FIELDS=(1,5,SEQNUM,6,ZD)
SORT FIELDS=COPY
/*
//PASO03 EXEC PGM=SORT
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SORTJNF1 DD DISP=SHR,DSN=&&DSOUT1
//SORTJNF2 DD DISP=SHR,DSN=&&DSOUT2
//SORTOUT DD DISP=SHR,DSN=IBMUSER.SORTOUT.SALIDA
//SYSIN DD *
SORT FIELDS=COPY
JOINKEYS FILES=F1,FIELDS=(6,6,A)
JOINKEYS FILES=F2,FIELDS=(6,6,A)
REFORMAT FIELDS=(F1:1,3,F2:1,3)
/*

Fichero de entrada IBMUSER.SORTIN.F1
aaa
bbb
ccc
ddd

Fichero de entrada IBMUSER.SORTIN.F2
111
222
333
444

Fichero de salida IBMUSER.SORTOUT.SALIDA
aaa111
bbb222
ccc333
ddd444

PASO01 incluye una secuencia de números de 6 dígitos desde la posición 6 en el primer fichero de entrada y guarda la salida en un temporal.
PASO02 incluye una secuencia de números de 6 dígitos desde la posición 6 en el segundo fichero de entrada y guarda la salida en un temporal.
PASO03 se hace un join de los dos temporales, siendo la clave de cada fichero la secuencia de números que hemos añadido y guarda la salida en el dataset final.

¡Espero que te sirva para adaptarlo a tus ficheros!

Un saludo
Javier Fernández García
Mi blog de Mainframe: http://emuframe.com

jcdm
Usuario
Usuario
Mensajes: 27
Registrado: 23 Feb 2015, 04:43
País: España
Ciudad: Madrid
Ocupación: Otra

Re: concatenar registros

Mensaje por jcdm » 08 Mar 2018, 12:11

Hola Abbys, muchas gracias!!!! Muy bueno tu blog.
El Mainframe te enseña a leer.

Abbys
Usuario
Usuario
Mensajes: 15
Registrado: 29 Sep 2015, 01:37
País: España
Ciudad: Madrid
Ocupación: Otra
Contactar:

Re: concatenar registros

Mensaje por Abbys » 13 Mar 2018, 06:12

Muchas gracias! Me alegro de que te guste el blog :D
Mi blog de Mainframe: http://emuframe.com

Responder