Ampliando un poco las funciones del OUTREC os voy a explicar como incluir condiciones. Es muy sencillo y puede evitar tener que crear programas en un momento dado.
Pongamos el caso de que tenemos el siguiente fichero con los datos de unos clientes:
----+----1----+----2----+----3----+----4----+----5----+----
***************************** Top of Data *****************
000000001JOSE LOPEZ PITA AUTONOMO 47001
000000002JAVIER MARTINEZ CARRETEROASALARIADO 47001
000000003CARLOS PEREZ FANO AUTONOMO 47001
000000004CARLOS POLO DEL BARROAUTONOMO 47001
000000005YOLANDA LOPEZ ALONSO AUTONOMO 47001
000000006ANTONIO VILLA SUSO AUTONOMO 47001
000000007FULANITO VILLA SUSO AUTONOMO 47001
Un buen día nos dicen que quieren añadir al final de cada registro un indicador que nos marque lo siquiente:
Si es un AUTONOMO añadir el indicador 'A'
Si es un ASALARIADO añadir el indicador 'S'
Utlizaremos el siguiente paso de jcl donde aplicamos la condición:
//OUTREC EXEC SORTD
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=Nombre_Fichero_De_Entrada,DISP=SHR
//SORTOUT DD DSN=Nombre_Fichero_De_Salida,
// DISP=(,CATLG),
// SPACE=(CYL,(100,100),RLSE)
//SYSIN DD *
SORT FIELDS=COPY
OUTREC IFTHEN=(WHEN=(39,11,CH,EQ,C'AUTONOMO '),
OVERLAY=(1,59,C'A')),
IFTHEN=(WHEN=NONE,
OVERLAY=(1,59,C'S'))
El resultado obtenido será el siguiente:
----+----1----+----2----+----3----+----4----+----5----+----6
***************************** Top of Data ******************
000000001JOSE LOPEZ PITA AUTONOMO 47001A
000000002JAVIER MARTINEZ CARRETEROASALARIADO 47001S
000000003CARLOS PEREZ FANO AUTONOMO 47001A
000000004CARLOS POLO DEL BARROAUTONOMO 47001A
000000005YOLANDA LOPEZ ALONSO AUTONOMO 47001A
000000006ANTONIO VILLA SUSO AUTONOMO 47001A
000000007FULANITO VILLA SUSO AUTONOMO 47001A
Vemos como a los AUTONOMOS les marca con una A y a los ASALARIADOS con una S.
Notas:
- Para añadir más condiciones se deben añadir más IFTHEN al OUTREC.
- Esto es válido también para el INREC.
11 comentarios:
Comentar que en los anteriores ejemplos del outrec, se os olvidó poner el SORT FIELDS=COPY, por lo que cuando submites el job,este falla con RC16 indicando no merge o sort statement found.
Decir que los ejemplos están geniales, después de años en la profesion me entero más o menos de lo que hace un sort... gracias
hola yo tengo dudas en si como funciona el OVERLAY eh visto ejemplos pero tienen diferentes formatos
y parametros que le agregan, pero no me queda claro
Hola PaTrIzIaAaAa.
En el OVERLAY lo que hacemos es indicar lo que irá escrito en el fichro de salida, igual que hacemos en un OUTREC normal.
En nuestro ejemplo le estamos diciendo que, en la salida, escriba lo que trae el fichero de entrada en las posiciones de la 1 ocupando 59, y a continuación que escriba una 'A'.
Es decir, podemos indicarle partes del f
ichero de entrada u otros datos que queramos, por ejemplo, tomando como fichero de entrada el del ejemplo:
SORT FIELDS=COPY
OUTREC IFTHEN=(WHEN=(39,11,CH,EQ,C'AUTONOMO '),
OVERLAY=(1,9,C'A',55,5)),
IFTHEN=(WHEN=NONE,
OVERLAY=(1,9,C'S',55,5))
Y el resultado sería:
000000001A47001
000000002S47001
etc.
Espero que te ayude!
Este comentario ha sido eliminado por el autor.
Que tal compañeros, me gustaría saber que tengo que hacer para que el OUTREC pueda poner mas de una linea. Saludos desde México.
Buenas Isai.
Si te refieres a que ocupe más de una linea, no hay ningún problema. No necesitas poner ningún caracter de continuación. Por ejemplo:
OUTREC FIELDS=(1,20,22,80,104,04,ZD,TO=BI,LENGTH=02,
109,1,112,7,1X,122,26)
al descargar una tabla este contiene 2 campos varchar ampliando la descarga de 885 a 889 , el outrec sirve también para eliminar estos campos me podrias dar un tip , saludos
¿alguien sabe como puedo hacer esto en el caso de que yo quiera, por ejemplo, cambiar por ejemplo el Registro 73 de un fichero?
Buenas Tardes,
Tengo el siguiente problema:
Tengo un
Fichero de entrada con la siguiente información:
01 xxx
01 yyy
01 zzz
02 xxx
03 xxx
03 yyy
Y quisiera un
Fichero de salida resultante:
01 xxx yyy zzz
02 xxx
03 xxx yyy
Usando Sort de JCL
Gracias
Gracias por crear este sitio web, me ayuda con mi trabajo, tengo que crear un programa en C que haga lo mismo para cada una de las muchas instrucciones de JCL.