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
concatenar registros
-
- Usuario
- Mensajes: 27
- Registrado: 23 Feb 2015, 04:43
- País: España
- Ciudad: Madrid
- Ocupación: Otra
concatenar registros
El Mainframe te enseña a leer.
-
- Usuario
- Mensajes: 27
- Registrado: 23 Feb 2015, 04:43
- País: España
- Ciudad: Madrid
- Ocupación: Otra
Re: concatenar registros
El formateo me lo deja de la sgte manera:
APPEND,C'111'
APPEND,C'222'
APPEND,C'333'
APPEND,C'111'
APPEND,C'222'
APPEND,C'333'
El Mainframe te enseña a leer.
-
- Usuario
- Mensajes: 16
- Registrado: 29 Sep 2015, 01:37
- País: España
- Ciudad: Madrid
- Ocupación: Otra
- Contactar:
Re: concatenar registros
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
¿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
-
- Usuario
- Mensajes: 27
- Registrado: 23 Feb 2015, 04:43
- País: España
- Ciudad: Madrid
- Ocupación: Otra
Re: concatenar registros
Hola Abbys, muchas gracias!!!! Muy bueno tu blog.
El Mainframe te enseña a leer.
-
- Usuario
- Mensajes: 16
- Registrado: 29 Sep 2015, 01:37
- País: España
- Ciudad: Madrid
- Ocupación: Otra
- Contactar:
Re: concatenar registros
Muchas gracias! Me alegro de que te guste el blog 

Mi blog de Mainframe: http://emuframe.com