PerroCobolero

PerroCobolero

ADS

jueves, 22 de octubre de 2015

SORT vol.2: OUTREC

SORT vol.2: OUTREC.

La estructura general de un SORT es la siguiente:

//SORT001  EXEC PGM=SORT,PARM=('DYNALLOC=(SYSALLDA,32)')
//SORTIN   DD DSN=nombre.fichero.entrada1,DISP=SHR
//         DD DSN=nombre.fichero.entrada2(opcional),DISP=SHR
//SORTOUT  DD DSN=nombre.fichero.salida1,
//            DISP=(,CATLG,DELETE),SPACE=CYL,500,100))
//SYSOUT   DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *




PGM=SORT --> Indica el programa a utilizar, en este caso el SORT.
PARM=('DYNALLOC=(SYSALLDA,32)') --> Cantidad de memoria que se da a la ejecución del paso. Si se queda corto, aumentarla en valores de 8,12,32,64,128, 256 (como las memorias RAM)
SORTIN --> Ficheros de entrada
SORTOUT --> Ficheros de salida
SYSIN --> Indica el tipo de sort a realizar, las opciones disponibles son muchas y muy variadas, pudiendo utilizarse varias juntas en un mismo paso. Algunas de ellas son SORT, SUM, OMIT, INCLUDE, INREC, OUTREC, OUTFIL, OPTION … .

En este documento se explica en detalle algunas de estas funciones:

OUTREC

OUTREC FIELDS. --> Toma los registros del fichero de entrada y los guarda formateados en el fichero de salida:

//SORT001  EXEC PGM=SORT,PARM=('DYNALLOC=(SYSALLDA,32)')
//SORTIN   DD DSN=nombre.fichero.entrada1,DISP=SHR
//         DD DSN=nombre.fichero.entrada2,DISP=SHR
//SORTOUT  DD DSN=nombre.fichero.salida1,
//            DISP=(,CATLG,DELETE),SPACE=CYL,500,100))
//SYSOUT   DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
SORT FIELDS=COPY
OUTREC FIELDS=(I,L,D(opcional))

I – Inicio. Posición donde empieza el campo.
L – Longitud máxima del campo.
D – Dato a incluir (opcional).


¡OJO! En este ejemplo hemos utilizado el SORT FIELDS=COPY, para indicar que no queremos ordenar el fichero, sino sólo copiarlo, pero podría indicarse cualquier tipo de ordenación. Podéis ver el uso del SORT en el artículo Sort vol.1: SORT, INCLUDE.

Hay diferentes formas de utilizar el OUTREC, voy a intentar señalar unas cuantas:

OUTREC – FORMATEO DE FICHEROS

Situación 1. Tenemos un fichero de entrada con los siguientes datos: Número de cliente, Nombre, Apellido1, Apellido2 y Situación Laboral(AUTONOMO ó ASALARIADO).
Supongamos que queremos obtener un fichero que contenga sólo el Nombre seguido de una coma, y a continuación la Situación Laboral:

----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
000000002JAVIER    MARTINEZ  CARRETEROASALARIADO
000000006ANTONIO   VILLA     SUSO     AUTONOMO  
000000005YOLANDA   LOPEZ     ALONSO   AUTONOMO  
000000001JOSE      LOPEZ     PITA     AUTONOMO  
000000004CARLOS    POLO      DEL BARROAUTONOMO  
000000003CARLOS    PEREZ     FANO     AUTONOMO  

La fórmula sería:

OUTREC FIELDS=(10,10,C’,’,39,10)

La salida quedará del siguiente modo:

----+----1----+----2-
JAVIER    ,ASALARIADO
ANTONIO   ,AUTONOMO  
YOLANDA   ,AUTONOMO  
JOSE      ,AUTONOMO  
CARLOS    ,AUTONOMO  
CARLOS    ,AUTONOMO  

Situación 2. Sobre el fichero inicial supongamos que queremos poner primero los Apellidos y luego el Nombre.

----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
000000002JAVIER    MARTINEZ  CARRETEROASALARIADO
000000006ANTONIO   VILLA     SUSO     AUTONOMO  
000000005YOLANDA   LOPEZ     ALONSO   AUTONOMO  
000000001JOSE      LOPEZ     PITA     AUTONOMO  
000000004CARLOS    POLO      DEL BARROAUTONOMO  
000000003CARLOS    PEREZ     FANO     AUTONOMO  

La fórmula sería:

OUTREC FIELDS=(1,9,20,19,10,10,39,34)

La salida quedará del siguiente modo:

----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
000000002MARTINEZ  CARRETEROJAVIER    ASALARIADO
000000006VILLA     SUSO     ANTONIO   AUTONOMO  
000000005LOPEZ     ALONSO   YOLANDA   AUTONOMO  
000000001LOPEZ     PITA     JOSE      AUTONOMO  
000000004POLO      DEL BARROCARLOS    AUTONOMO  
000000003PEREZ     FANO     CARLOS    AUTONOMO  

Situación 3. Supongamos que entre el número de cliente y el nombre queramos meter 10 espacios en blanco:

----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
000000002JAVIER    MARTINEZ  CARRETEROASALARIADO
000000006ANTONIO   VILLA     SUSO     AUTONOMO  
000000005YOLANDA   LOPEZ     ALONSO   AUTONOMO  
000000001JOSE      LOPEZ     PITA     AUTONOMO  
000000004CARLOS    POLO      DEL BARROAUTONOMO
000000003CARLOS    PEREZ     FANO     AUTONOMO  

La fórmula sería:

OUTREC FIELDS=(1,9,C'          ',10,53)

Otra opción:

OUTREC FIELDS=(1,9,10X,10,53)

Y otra:

OUTREC FIELDS=(1,9,10C'         ',10,53)


La salida quedará del siguiente modo:

----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
000000002          JAVIER    MARTINEZ  CARRETEROASALARIADO
000000006          ANTONIO   VILLA     SUSO     AUTONOMO
000000005          YOLANDA   LOPEZ     ALONSO   AUTONOMO  
000000001          JOSE      LOPEZ     PITA     AUTONOMO  
000000004          CARLOS    POLO      DEL BARROAUTONOMO  
000000003          CARLOS    PEREZ     FANO     AUTONOMO

No hay comentarios.:

Publicar un comentario