lunes, 23 de mayo de 2011

Sort vol.2.1: OUTREC. IFTHEN

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:

Riaza dijo...

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.

Riaza dijo...

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

PaTrIzIaAaAa dijo...

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

Tallian dijo...

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!

Isai Cerón dijo...
Este comentario ha sido eliminado por el autor.
Isai Cerón dijo...

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.

Tallian dijo...

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)

Jorge Ortiz dijo...

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

Luis María Delgado Santolalla dijo...

¿alguien sabe como puedo hacer esto en el caso de que yo quiera, por ejemplo, cambiar por ejemplo el Registro 73 de un fichero?

Ernesto dijo...

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

natan barron dijo...

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.