qué es el dfsort

90
¿qué es el DFSORT? •Es el producto de IBM encargado de clasificar, mezclar, copiar, analizar y generar informes •Maneja datset de longitud fija o variable. (FB,FBS, VB, VBS) • Soporta ficheros QSAM y VSAM

Upload: juan-manuel-aldecoa-martinez

Post on 05-Aug-2015

1.287 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: qué es el DFSORT

¿qué es el DFSORT?

•Es el producto de IBM encargado de clasificar, mezclar, copiar, analizar y generar informes

•Maneja datset de longitud fija o variable. (FB,FBS, VB, VBS)

• Soporta ficheros QSAM y VSAM

Page 2: qué es el DFSORT

¿qué cosas se pueden hacer con dfsort?

• Clasificar• Mezclar• Copiar• Juntar• Selecionar un subconjunto de registros. Se puede incluir u omitir los registros que cumplan

ciertor criterios• Reformatear los registros de multiples formas• Sumar los valores de ciertos registros al clasificar o mezclar• Crear varios archivos de salida• Generar informes en una pasada• Convertir archivos VB a FB, o • Generar registros de prueba o repetir registros• Alterar la secuencia de clasificación al clasificar o mezclar

Page 3: qué es el DFSORT

Modificar los registros

• Construir registros item a item• Remplazar ciertas columnas• Reformar diferentes registros de distintas maneras• Editar, cambiar, añadir o borrar campos• Convertir campos de fecha de un formato a otro y realizar cálculos de

fecha• Realizar operaciones de busqueda y reemplazo.• Operar sobre grupos de registros• Convertir campos con posición y longitud variable a fijos, mediante un

parser• Insertar blancos, ceros, cadenas, fechas (actual, pasada o futura),

hora,• números de secuencia, constantes decimales y el resultado de

operaciones aritmeticas en cualquier punto del registro de entrada.

Page 4: qué es el DFSORT

Resumen de las sentencias de control del DFSORT

SORT Describes the fields for a sort application, or requests a copy application.

MERGE Describes the fields for a merge application, or requests a copy application.

OPTION Overrides installation defaults, or requests optional features or a copy application.

INCLUDE Describes the criteria to be used to include records before they are sorted, copied or merged

OMIT Describes the criteria to be used to omit records before they are sorted, copied or merged.

INREC Describes how records are to be reformatted before they are sorted, copied or merged.

OUTREC Describes how records are to be reformatted after they are sorted, copied or merged.

SUM Describes how fields are to be summed after sorting or merging. OUTFIL Describes various types of processing to be performed for one or more output data

sets after sorting, copying or merging.JOINKEYS, JOIN, REFORMAT Describes a "joinkeys" application for joining two files on one ormore keys.

Page 5: qué es el DFSORT

Otras sentencias de control del DFSORT

ALTSEQ Describes changes to the normal translation table.MODS Describes user exit routines.RECORD Supplies data set record type and length information when needed.DEBUG Requests diagnostic features.END Marks the end of the control statements.

Page 6: qué es el DFSORT

Reglas generales de codificación

• LABEL Empieza en la columna 1. Actualmente no sirve para nada• Operation Es una palabra que identifica el tipo de sentencia. Entre la 2

y la 71• Operands Dos o mas operandos separados por ‘,’ o ‘;’. Sigue al campo

operación separado por uno o mas blancos. Debe empezar en la primera linea de la sentencia

• Comentarios Siguen al campo operandos separados por al menos un blanco

Si el campo operandos termina en ‘, ’ o ‘; ’ se entiende que la sentencia continua en la siguiente linea en el primer carácter no blanco de las columnas 2 a 71

Page 7: qué es el DFSORT

Campos de control

Page 8: qué es el DFSORT

Orden de procesado de registros

Page 9: qué es el DFSORT

Orden de procesado de registros (cont)

Page 10: qué es el DFSORT

Definición de campos

• Un campo se define por su posición (p), su longitud (m) y su formato (f)

• P La posición indica en que byte del registro empieza el campo, y opcionalmente, en que bit dentro del byte (B.b). En registro variables, la primera posición de datos es la 5

• M La longitud indica cuantos bytes y bits tiene el campo. El máximo es 4096

• F especifica el formato del campo. Los más corrientes son CH,AQ, ZD, PD, BI, AC y formatos de fecha

Page 11: qué es el DFSORT

Simbolos

• Se pueden utilizar símbolos para definir campos, constantes o columnas de salida de informes

• Se pueden utilizar símbolos del sistemas para definir constantes

Para utilizar simbolos en el DFSORT es necesario:1. Definir los simbolos, utilizando sentencias con el formato adecuado2. Identificarlos al DFSORT mediante la DD SYMNAMES3. Referenciarlos en las sentencias de control

Page 12: qué es el DFSORT

Formato sentencias simbolos

Symbol,value remark

Symbol Es sensible a mayusculas. Indica el nombre del simbolo. No tiene que empezar en la columna 1

Value: Puede representar un campo (p,m,f o p,m), un campo Parse o una constanteSe puede utilizar el * para asignar la siguiente posición a pSKIP,n POSITION,q POSITION,symbol ALIGN,H ALIGN,F ALIGN,D sirven para

recolocar la siguiente posiciónEl simbolo = sirve para asignar a p,m o f el valor del campo anterior

Page 13: qué es el DFSORT

Ejemplo de definición de simbolos

Symbola,6,20,CH Symbola1,=,8,= Symbola2,*,12,= Symbold,*,=,ZDRpt_hdr,S’ Job &JOBNAME. was run on Sysplex &SYSPLEX. on &LWDAY’

Equivale a

Symbola,6,20,CH Symbola1,6,8,CH Symbola2,14,12,CH Symbold,26,12,ZD Rpt_hdr,C’ Job BIGTEST was run on Sysplex MAS2 on MON’

Page 14: qué es el DFSORT

Simbolos SET y PROC Symbols en sentencias de control

//SRTPROC PROC //RFSORT EXEC PGM=SORT,PARM='JP9"&SRTCOND",LIST' //SORTIN DD DISP=SHR,DSN=PKRUTZA.CLEANUP.RACFDBU//SORTOUT DD DISP=SHR,DSN=SLKACZ.CLEANUP.OUTPUT(&SRTCOND) //SORTWK01 DD UNIT=SYSALLDA,SPACE=(CYL,(1,5)) //SORTWK02 DD UNIT=SYSALLDA,SPACE=(CYL,(1,5)) //SORTWK03 DD UNIT=SYSALLDA,SPACE=(CYL,(1,5)) //SORTWK04 DD UNIT=SYSALLDA,SPACE=(CYL,(1,5)) //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=(10,8,CH,A) INCLUDE COND=((5,4,CH,EQ,C'0205'), AND,(39,8,CH,EQ,JP9)) OPTION VLSHRT OUTFIL VTOF,OUTREC=(C'CONNECT ',10,8, C' GROUP(‘,19,8, C') OWNER(',39,8,C')', 80:X),REMOVECC // PEND

//STEP1 SET SRTCOND='BOHART' // EXEC SRTPROC //STEP2 SET SRTCOND='PKRUTZA' // EXEC SRTPROC //STEP3 SET SRTCOND='RALEY' // EXEC SRTPROC //STEP4 SET SRTCOND='RAMIREZ' // EXEC SRTPROC //STEP5 SET SRTCOND='RAMON' // EXEC SRTPROC

JP0 – JP9

Page 15: qué es el DFSORT

Clasificar

Page 16: qué es el DFSORT

Ejemplo

Page 17: qué es el DFSORT

Mezclar

• La sintaxis es igual que la del SORT• Mezcla registros de varios ficheros de entrada,

identificados por SORTINxx• Los archivos deben estar previamente

clasificados por los campos de la sentencia MERGE

Page 18: qué es el DFSORT

Modificar secuencia ordenación

• Mediante la sentencia ALTSEQ podemos modificar el orden de clasificación de alguno (formato AQ) o todos los campos alfabéticos del sort (OPTION CHALT)

• Tambien sirve para crear una tabla de traducción que se puede utilizar con INREC y OUTREC

Page 19: qué es el DFSORT

Copiar

• Para copiar un fichero de entrada, se especifica COPY en el campo FIELDS de la sentencia SORT o MERGE. También se puede utilizar el parametro COPY de la sentencia OPTION

SORT FIELDS=COPYMERGE FIELDS=COPYOPTION COPY

Page 20: qué es el DFSORT

Archivos VB

• DFSORT procesa la RDW. La primera posición de datos es, por lo tanto, la 5

• Para evitar que el sort termine con error si falta en el registro algun campo de clasificación, se debe usar la sentencia VLSHRT

Page 21: qué es el DFSORT

Seleccionar registros

• Al DFSORT se le indican los registros a incluir u omitir del proceso mediante las sentencias INCLUDE y OMIT. Igualmente se le puede indicar que registros omitir o incluir en una salida determinada de un proceso multi-salida mediante el operando OMIT e INCLUDE de la sentencia OUTFIL

• No se pueden utilizar las dos simultaneamente.• Los parámetros son comunes a ambas formas, excepto el operando

FORMAT, invalido en la sentencia OUTFIL.

Page 22: qué es el DFSORT

Expresiones lógicas

• Una expresión lógica es la combinación de una o más relación condicional, sobre los campos del registro de entrada.

• Las posibles condiciones relacionales son:– Comparaciones de un campo con otro o una

constante– Comparaciones de subcadenas– Test de bits– Comparaciones de fecha– Test numéricos

Page 23: qué es el DFSORT

Comparaciones

Tipos de constantes:

•Pueden ser un número decimal (n, +n, −n), una cadena de caracteres (C’xx...x’), o una cadena hexadecimal (X'yy...yy').

•Se puede utilizar la fecha actual, una fecha futura o pasada como un numero decimal o una cadena de caracteres, mediante el formato fmtdat[+/-d]

Page 24: qué es el DFSORT

Constantes de fecha

Page 25: qué es el DFSORT

Busqueda de subcadenas

• Se identifica poniendo en el campo formato el valor ‘SS’• Hay dos formas de busqueda:

– Comprobar si un campo esta dentro de una lista de subcadenas La longitud del campo es menor que la constante

– Buscar una cadena dentro del campo. La longitud del campo es mayor que la constante

Page 26: qué es el DFSORT

Comparacion de bits

• Hay dos métodos:– Lógica de bits– Comparación de bits.

Page 27: qué es el DFSORT

Comparacion bits. Ejemplos

Page 28: qué es el DFSORT

Comparación de fechas

Page 29: qué es el DFSORT

Comprobación de numeros

• Se puede comprobar que un campo tenga valores numéricos en formato carácter, decimal con zona o empaquetados (CH,ZD o PD)

Page 30: qué es el DFSORT

Selección registros y VB

• Se aplican las consideraciones generales, expuestas en SORT/MERGE

• Si se sabe que algún registro no contiene algún campo de comparación, se puede utilizar la opción VLSCMP, que rellena con ceros binarios el registro corto.

• La combinación de VLSHRT y VLSCMP genera tres comportamientos en registros cortos:1. VLSCMP permite que se realicen las comparaciones. Como

el registro se ‘alarga’ con ceros, las comparaciones de los campos cortos suelen ser falsas. El resto, pueden ser FALSE o TRUE

2. NOVLSCMP y VLSHRT considera todas las comparaciones como falso si el registro es corto

3. NOVLSCMP y NOVLSHRT provocan el final del sort si hay registros cortos

Page 31: qué es el DFSORT

Suma de registros

• Mediante la sentencia SUM, se pueden especificar campo que se sumarán cuando varios registros tengan la misma clave

• Se pueden sumar binarios (BI), coma fija (FI), decimal empaquetado (PD), decimal con zona (ZD) y coma flotante (FL).

• Estan implicados dos grupos de campos:– Campos de control (sentencia SORT)– Campos de suma (sentencia SUM)

• Solo se conserva un registro de cada grupo. Si se quiere que sea el primero, usar OPTION EQUALS

• Si solo se desea eliminar duplicados, especificar FIELDS=NONE

Page 32: qué es el DFSORT

Sentencia INREC

Page 33: qué es el DFSORT
Page 34: qué es el DFSORT

Modificar registros

• Se pueden modificar registros mediante las sentencia INREC, OUTREC y OUTFIL. La sintaxis es similar, solo cambia el momento en que se modifica el registro.

• Se pueden usar estas sentencias juntas• Se pueden realizar modificaciones muy variadas.• Trabajan tanto con campos fijos (posición y longitud

invariable) como con variables (distinta posición y longitud en cada registro)

• Se puede modificar el registro con los siguientes métodos:– BUILD Modifica el registro especificando todos sus campos uno

a uno– OVERLAY Solo indica que partes del registro modificar. Puede

ampliar registro– FINDREP Busca y reeplaza cadenas en el registro– IFTHEN Distintas modificaciones para distintos registros

Page 35: qué es el DFSORT

Modificar: Reordenar campos

• Una modificación básica es reordenar los campos del registro

• Tan solo hay que indicar el nuevo orden deseado• Se puden cambiar de posición, duplicar o suprimir campos• Se puede indicar la nueva posición prefijando con c:• En registros VB no se puede suprimir la RDW. SIEMPRE se

debe incluir al principio• En VB se puede omitir en el último campo la longitud, para

indicar ‘hasta el final del registro’• Ejemplo:

SORT FIELDS=(106,4,CH,A)SUM FIELDS=(162,4,BI,166,4,BI)OUTREC FIELDS=(106,4,10:166,4,162,4)

Page 36: qué es el DFSORT

Modificar: Insertar constantes

• Se pueden insertar distintos tipos de constantes en los registros:– Ceros binario: se indica mediante [n]Z. Inserta n ceros– Blancos:Se indica mediante [n]X– Cadenas hexadecimales: [n]X’yy..yy’. Debe ser de longitud par– Cadenas de caracteres: [n]C’xx..xx’. – Valores de fecha (actual, futura o pasada) y hora en distintos

formatos:• Los de INCLUDE• DATE[=(abc[d])] abc puede ser M, Y, D, o 4. D es el separador• DATENS[=(abc)]• YDDD[=(abc) ab puede ser Y, D o 4. C es el separador• YDDDNS[=(ab)• TIMEn[P/[(c )] n es el formato (1 a 3) P si es decimal. C el separador• TIME[=(ab[c])] ab es 12 o 24 (formato de 12 o 24 horas) c separador• TIMENS[=(ab)]

Page 37: qué es el DFSORT

Modificar: Insertar numero de secuencia

• Mediante este parámetro se puede insertar un número de secuencia en el registro. – N Indica el ancho del campo de salida– Fs Formato del campo– START Indica el primer valor a utilizar. Por defecto, 1– INCR valor a sumar a START. Por defecto 1– RESTART Indica que se vuelva a utilizar START

cuando un cierto campo cambie de valor

Page 38: qué es el DFSORT

Modificar: Realizar traducciones

• Se puede traducir los campos de entrada utilizando el formato p,m,TRAN= de las siguientes formas:– De minusculas a mayusculas y viceversa (LTOU, UTOL)– De Ascii a Ebcdic y al reves (ATOE, ETOA)– De Hexadecimal a carácter y vice (HEX, UNHEX)– De binario a carácter y vuelta (BIT, UNBIT– Según las tabla ALTSEQ (ALTSEQ)

• Ejemplo:Entrada: WILLIAMBAYLESS

OUTREC FIELDS=(1,1,2,14,TRAN=UTOL,X,16,1,17,14,TRAN=UTOL)

Produce: William Bayless

Page 39: qué es el DFSORT

Modificar: Traducir campos numéricos

• Se pueden convertir campos numericos a distintos formatos, para hacerlos legibles

• Las opciones disponibles son:– P,m,f,Mn Utiliza una de las 27 mascaras

predefinidas– P,m,f,EDIT=(mascara) Utiliza una mascara

personalizada– P,m,f,[TO=]fo Convierte de formato f a fo

Page 40: qué es el DFSORT

Modificación: mascaras de edición

• Las mascaras de edicion pueden tener los siguientes caracteres:– I indica un digito no significativo– T indica un digito significativo– S Indica el signo– Cualquier otro carácter se muestra tal cual

Page 41: qué es el DFSORT

Modificación: Cálculos con campos o constantes decimales

• Se pueden realizar cálculos con campos o constantes numéricas

• Las operaciones permitidas son, por orden de prioridad:– MIN, MAX– MUL, DIV y MOD– ADD y SUB

• Se pude usar parentesis para agrupar operaciones• El resultado se calcula como ZD de 15 digitos y se le

puede editar como se vio previamente (Mn, edit, TRAN, etc)

• Ejemplo:OUTREC FIELDS=(1,8,5X,((11,6,PD,MUL,+10),SUB,31,7,PD),EDIT=(SI,III,III,IIT.TTT),SIGNS=(,-))

Page 42: qué es el DFSORT

Modificación: Conversiones y cálculos con fechas

• Si el campo representa una fecha (formatos Y2x e Y4x) se puede editar, convertir o realizar calculos con él.

• Las conversiones disponibles son:– TOJUL=Yaa[(s)] - convierte a juliano, opcionalmente con separador– TOGREG=Yaa[(s) - convierte a gregoriano con o sin separador– WEEKDAY=CHAR3 - convierte al nombre del dia en ingles en 3 caracteres (ej.: (MON,

WED,SUN)– WEEKDAY=CHAR9 - convierte al nombre del dia en ingles en 9 caracteres (ej.: (MONDAY)– WEEKDAY=DIGIT1 - convierte a 1 digito que indica el dia de la semana (empezando por el

domingo ¿?) ejempl0, C'2' para Lunes.

• Se pueden realizar cálculos sobre las fechas, y posteriormente editarlos o convertirlos. Los cálculos permitidos son:

– ADDDAYS, ADDMONS y ADDYEARS para sumar dias, meses o años– SUBDAYS, SUBMONS y SUBYEARS para restar dias, meses o años– DATEDIFF cálcula la diferencia en días entre dos fechas– NEXTDday cálcula el siguiente día que cae en ‘day’ (SUN, MON, TUE, WED, THU, FRI or SAT).– PREVDday cálcula el anterior día que cayó en ‘day’ (SUN, MON, TUE, WED, THU, FRI or SAT).– LASTDAYW, LASTDAYM, LASTDAYQ y LASTDAYY cálcula el último día de la semana, mes,

trimestre o año

Page 43: qué es el DFSORT

Modificación: Busqueda en tablas

• Se puede utilizar un campo para buscarlo en una tabla y reemplazarlo por el valor asociado a la clave:

– V Indica la longitud del resultado– Find, set definen la tabla. Cuando el campo valga ‘Find’, se cambiará por

‘set’– NOCHANGE sirve para indicar el valor a usar si no se encuentra la clave en

la tabla

• Ejemplo:OUTFIL FILES=1,OUTREC=(11,1,CHANGE=(6,C’R’,C’READ’,

C’U’,C’UPDATE’, X’FF’,C’EMPTY’, C’X’,35,6, C’A’,C’ALTER’), NOMATCH=(11,6),

4X,21,1,CHANGE=(10,B’.1......’,C’VSAM’,B’.0......’,C’NON-VSAM’))

Page 44: qué es el DFSORT

Modificación: Justificar y exprimir(JFY y SQZ)

JFY parameter allows you to left-justify or right-justify the data in a field.

•Can be used with INREC, OUTREC and OUTFIL.

•For a left-justified field, leading blanks are removed and the characters from the first nonblank to the last nonblank are shifted left, with blanks inserted on the right if needed.

•For a right-justified field, trailing blanks are removed and the characters from the last nonblank to the first nonblank are shifted right, with blanks inserted on the left if needed.

Page 45: qué es el DFSORT

JFY Example

INREC BUILD=(1,30,JFY=(SHIFT=LEFT))SORT FIELDS=(1,30,CH,A)

Before After

----+----1----+----2----+----3

******************************

History

Psychology

Business

Biology

Science

----+----1----+----2----+----3

******************************

Biology

Business

History

Psychology

Science

Page 46: qué es el DFSORT

JFY (cont.)

JFY has optional parameters that provide additional functions.

•Specific leading and trailing characters can be changed to blanks before justification begins

•A leading string can be inserted

•A trailing string can be inserted

•The output length can be changed.

Page 47: qué es el DFSORT

JFY Example

OPTION COPYOUTREC BUILD=(1,30,JFY=(SHIFT=RIGHT,LEAD=C’I Like ‘))

Before After

----+----1----+----2----+----3

******************************

History

Psychology

Business

Biology

Science

----+----1----+----2----+----3

******************************

I Like History

I Like Psychology

I Like Business

I Like Biology

I Like Computer Science

Page 48: qué es el DFSORT

SQZ

SQZ parameter allows you to left-squeeze or right-squeeze the data in a field.

•Can be used with INREC, OUTREC and OUTFIL.

•For a left-squeezed field, all blanks are removed and the characters from the first nonblank to the last nonblank are shifted left, with blanks inserted on the right if needed.

•For a right-squeezed field, all blanks are removed and the characters from the last nonblank to the first nonblank are shifted right, with blanks inserted on the left if needed.

Page 49: qué es el DFSORT

SQZ Example

OPTION COPYOUTREC OVERLAY=(1,30,SQZ=(SHIFT=LEFT))

Before After

----+----1----+----2----+----3

*****************************

<tag> History </tag>

<tag> Psychology </tag>

<tag> Business </tag>

<tag> Biology </tag>

<tag> Science </tag>

----+----1----+----2----+----3

******************************

<tag>History</tag>

<tag>Psychology</tag>

<tag>Business</tag>

<tag>Biology</tag>

<tag>Science</tag>

Page 50: qué es el DFSORT

SQZ (cont.)

SQZ has optional parameters that provide additional functions.

•Specific characters can be changed to blanks before squeezing begins

•A leading or trailing string can be inserted

•A string can be inserted wherever a group of blanks is removed between the first nonblank and the last nonblank

•Blanks can be kept as is between paired apostrophes or paired quotes

•The output length can be changed.

Page 51: qué es el DFSORT

SQZ Example

OPTION COPYOUTREC BUILD=(1,30,SQZ=(SHIFT=LEFT, PREBLANK=C'()',LEAD=C'<DETAIL>', MID=C',',TRAIL=C'</DETAIL>'))

Before After

----+----1----+----2----+----3

******************************

(History) 5

(Psychology) 108

(Business) 92

(Biology) 207

(Science) 9

----+----1----+----2----+----3

******************************

<DETAIL>History,5</DETAIL>

<DETAIL>Psychology,108</DETAIL

<DETAIL>Business,92</DETAIL>

<DETAIL>Biology,207</DETAIL>

<DETAIL>Science,9</DETAIL>

Page 52: qué es el DFSORT

Modificación: FINDREP

Page 53: qué es el DFSORT

Modificación: FINDREP (2)

• Permite sustituir una (IN=, OUT=) o varias cadenas (INOUT=(c1,r1,c2,r2...) en el registro de entrada

• Tambien se le puede indicar la posicion inicial de busqueda (STARTPOS), la posición final (ENDPOS) y el número máximo de cambios a realizar (DO=n)

Page 54: qué es el DFSORT

Modificación: IFTHEN

Page 55: qué es el DFSORT

Modificación: IFTHEN

• Los parametros OVERLAY, FINDREP, y BUILD o FIELDS permiten modificar todos los registros de la misma manera. Las clausulas IFTHEN permiten aplicar distintos cambios a distintos grupos de registros. Los tipos disponibles son:

– WHEN=INIT: Aplica las clausulas BUILD, FINDREP o OVERLAY a todos los registros. Se procesa antes que el resto de los WHEN

– WHEN=GROUP: Define los registros que pertenecen a un grupo, y los campos, identificadores o números de secuencia a propagar. Se procesa antes que el resto de los WHEN

– WHEN=(logexp): Aplica las clausulas de modificación a los registros que cumplen la condición

– WHEN=ANY: Aplica las clausulas de modificación a los registros que cumplan

alguna de las WHEN=(logexp) previas– WHEN=NONE: Aplica las clausulas de modificación a los registros que no

cumplan ninguna de las WHEN=(logexp) previas

Page 56: qué es el DFSORT

Modificación: IFTHEN ejemplo

OPTION COPY OUTREC IFTHEN=(WHEN=INIT,

BUILD=(1:1,40,50:106,4,60:170,4,BI,EDIT=(TT.TT),70:170,4)),

IFTHEN=(WHEN=(50,4,CH,EQ,C’COR’,AND,70,4,BI,GT,+2000),

OVERLAY=(70:C’20%’,X)),

IFTHEN=(WHEN=(50,4,CH,EQ,C’COR’,AND,70,4,BI,LE,+2000),

OVERLAY=(70:C’10%’,X)),

IFTHEN=(WHEN=(50,4,CH,EQ,C’VALD’),OVERLAY=(70:C’25%’,X)),

IFTHEN=(WHEN=NONE,OVERLAY=(70:C’15%’,X))

Page 57: qué es el DFSORT

Parse

Page 58: qué es el DFSORT

PARSE

PARSE allows you to extract delimited fields (eg. CSV) and treat them as fixed-length fields.

•Can be used with INREC, OUTREC and OUTFIL.

•You can define the rules for extracting variable fields into fixed length %nn fields.

•Then use these %nn fields where you can use p,m (fixed) fields in BUILD, OVERLAY. You can edit, convert, justify, squeeze, translate, and do arithmetic with %nn fields.

Page 59: qué es el DFSORT

PARSE Example (using CSV)OPTION COPYOUTREC PARSE=(%01=(ENDBEFR=C',',FIXLEN=12), %02=(ENDBEFR=C',',FIXLEN=4), %03=(FIXLEN=14)), BUILD=(%01,%02,UFF,EDIT=(IIIT),

%03,JFY=(SHIFT=RIGHT))

Before After

----+----1----+----2----+----3

******************************

History,1010,Smith

Psychology,401,Roberts

Business,21,Johnson

Biology,3,Tai

----+----1----+----2----+----3

******************************

History 1010 Smith

Psychology 401 Roberts

Business 21 Johnson

Biology 3 Tai

Page 60: qué es el DFSORT

PARSE (cont.)

PARSE has parameters that allow you to define the rules for parsing many types of delimited fields.

•Specify the length of the %nn field•Start at an absolute or relative position•Start at or after one or more strings•End at or before one or more strings•Ignore string within paired apostrophes or quotes

You can also use symbols for %nn fields. For example:Course,%01Grade,%02

Page 61: qué es el DFSORT

PARSE ExampleINREC PARSE=(%01=(STARTAFT=C'Pet=',ENDBEFR=C'

',PAIR=QUOTE,FIXLEN=12), %02=(STARTAFT=C'Name=',ENDBEFR=C' ',PAIR=QUOTE,FIXLEN=10)), OVERLAY=(31:%01,JFY=(SHIFT=LEFT,PREBLANK=C'"'), 43:%02,JFY=(SHIFT=LEFT,PREBLANK=C'"')) SORT FIELDS=(31,12,CH,A,43,10,CH,A) OUTREC BUILD=(1,30)

Before

----+----1----+----2----+----3

******************************

Pet=Rat Name=Daisy

Pet="Guinea Pig" Name=Larry

Pet=Rat Name=Betty

Pet=Hamster Name="John Boy"

Page 62: qué es el DFSORT

PARSE Example (cont.)

After INREC

----+----1----+----2----+----3----+----4----+----5

**************************************************

Pet=Rat Name=Daisy Rat Daisy

Pet="Guinea Pig" Name=Larry Guinea Pig Larry

Pet=Rat Name=Betty Rat Betty

Pet=Hamster Name="John Boy" Hamster John Boy

After SORT and OUTREC

----+----1----+----2----+----3

******************************

Pet="Guinea Pig" Name=Larry

Pet=Hamster Name="John Boy"

Pet=Rat Name=Betty

Pet=Rat Name=Daisy

Page 63: qué es el DFSORT

Crear varias salidas e informes

• Se pueden crear más de un archivo de salida e informes en una sola pasada sobre los datos resultantes de un sort, merge o copy mediante la sentencia OUTFIL

• Se pueden utilizar varias sentencias OUTFIL con parametros independientes.

• Sirve para:– Guardar un subconjunto secuencial de la entrada, mediante

STARTREC y ENDREC– Crear una muestra de los registros de entrada con SAMPLE.– Guardar parte de los registors con INCLUDE y OMIT – Limitar el número de registros seleccionados con ACCEPT– Seleccionar los registros “descartados “ por otras OUTFIL con

SAVE– Modificar los registros con PARSE, BUILD, OUTREC, OVERLAY, or

IFTHEN. Tiene las mismas funcionalidades que las sentencias equivalentes y además permite crear multiples registros a partir de uno y añadir registros en blanco

– Duplicar registors con REPEAT.

Page 64: qué es el DFSORT

Crear varias salidas e informes (II)

• Sirve para:– Duplicar registors con REPEAT.– Repartir los registros en los archivos de salida con SPLIT, SPLITBY,

y SPLIT1R– Crear informes detallados con hasta tres niveles (report, page, y

section) con BUILD, OUTREC, OVERLAY, IFTHEN, HEADERn, TRAILERn, SECTIONS, LINES, NODETAIL, BLKCCH1, BLKCCH2, BLKCCT1, y REMOVECC.

• Actualizar valores de cuenta y totales de registros finales con IFTRAIL.• Convertir registros VB a FB (VTOF) o registros FB a VB (FTOV).• Las sentencias OUTFIL se procesan en último lugar

Page 65: qué es el DFSORT

OUTFIL: Sintaxis

Page 66: qué es el DFSORT

Outfil: Sintaxis(ii)

Page 67: qué es el DFSORT

ICETOOL

• Es una utilidad multi propositi que, basada en el DFSORT, realiza múltiples operaciones en un solo paso

• ICETOOL funciona a base de “operadores”:– COPY Copia un archivo a uno o más archivos de salida– COUNT Imprime el numero de registros del archivo de entrada en

un mensaje. Puede fijar el código de retorno basandose en un chequeo de dicho número

– DATASORT Clasifica los registros entre una cabacera y un pie.– DEFAULTS Imprime los valores de las opciones por defecto– DISPLAY Imprime los valores o caracteres de los campos

especificados. Puede generar informes con funciones de agregación (Max, min, tot, ave, count)

– MERGE Mezcla varios archivos de entrada en uno o varios de salida

– MODE Establece el modo de operación: STOP, CONTINUE o SCAN– OCCUR Imprime una linea con el número de ocurrencias y el valor

de cada valor único de los campos especificados. Se puede limitar los valores impresos a los que cumplan ciertas condiciones.

Page 68: qué es el DFSORT

ICETTOL (II)

– RANGE Imprime un mensaje con la cuenta de los valores de un campo numérico que estan dentro del rango

– RESIZE Agrupa varios registros en uno o parte un registro en varios trozos

– SELECT Selecciona registros de un archivo y los escribe en salida según el número de ocurrencias de determinados campos. Los registros no seleccionados se pueden volcar a otro archivo

– SORT Clasifica un dataset– SPLICE Junta distintos campos procedentes de registros con la misma

clave pero distinta información. Especie de JOINKEYS– STATS imprime un mensaje con el minimo, maximo, valor medio y total

de los campos numéricos elegidos.– SUBSETSelecciona registro de un archivo quitando los registros de

cabeceras o de pies– UNIQUE Imprime un mensaje con el número de valores únicos de los

campos elegidos– VERIFY Válida los campos decimales elegidos, imprimiendo un mensaje

con cada valor invalido

Page 69: qué es el DFSORT

JOINKEYS

• DFSORT permite hacer varios tipos de “uniones” entre dos ficheros con una o varias claves mediante las sentencias:– JOINKEYS Se deben codificar dos sentencias JOINKEYS, una para

cada archivo. Cada uno es procesado por una subtarea. Cada sentencia JOINKEYS define la ddname y los campos de clasificación de cada archivos, si ya están clasificados, si hay que filtrar el archivo, etc

– JOIN Opcional. Indica como construir los registros de salida. Si se omite, solo se conservan los registros emparejados, con todos sus campos.

– REFORMAT Opcional para JOIN ONLY. Indica que campos de cada fichero se ponen en la salida. Tambien se puede incluir indicadores y rellenos.

• F1 y F2 se clasifican o copian mediante una subtarea. Se pueden utilizar un subconjunto de sentencias dfsort (INCLUDE, OMIT, INREC, SUM and OPTION) durante este proceso.

• La tarea principal utiliza la exit E15 para hacer la unión, que se pasa como entrada a un SORT o COPY, que puede utilizar la mayoria de las sentencias DFSORT

Page 70: qué es el DFSORT

JOINKEYS: Orden de procesado

Page 71: qué es el DFSORT

JOINKEYS

Page 72: qué es el DFSORT

JOIN

Page 73: qué es el DFSORT

REFORMAT

Page 74: qué es el DFSORT

JOINKEYS: Ejemplo

Page 75: qué es el DFSORT

DATEn-r and DATEn+r

DATEn-r and DATEn+r can be used to generate date values, in various forms, relative to today’s date.

•These operands now allow you to compare date fields in various formats to past and future dates with INCLUDE, OMIT, and WHEN.

•These operands also allow you to insert past and future dates in your records with INREC, OUTREC, and OUTFIL.

•Some of the common Date types are: YYYMMDD, YYYMM, YYYYDDD

Page 76: qué es el DFSORT

DATEn-r and DATEn+r Example

* Job was run on 2006/11/02OPTION COPYINCLUDE COND=(22,10,CH,GE,DATE1(/)-7, AND,22,10,CH,LE,DATE1(/)+7)

Before After

----+----1----+----2----+----3-

*******************************

History starts on 2006/09/15

Psychology starts on 2006/10/23

Business starts on 2006/10/30

Biology starts on 2006/11/02

Science starts on 2006/11/07

English starts on 2006/11/20

----+----1----+----2----+----3-

*******************************

Business starts on 2006/10/30

Biology starts on 2006/11/02

Science starts on 2006/11/07

Page 77: qué es el DFSORT

NUM

NUM parameter allows you to test a field for numerics (field,EQ,NUM) or non-numerics (field,NE,NUM)

•Can be used with INCLUDE, OMIT and WHEN.

•You can test for character (FS), zoned decimal (ZD) or packed decimal (PD) numerics or non-numerics.

Page 78: qué es el DFSORT

NUM Example

OPTION COPYINCLUDE COND=(21,4,FS,EQ,NUM)

Before After

----+----1----+----2----+----3

******************************

June 3210

Betty *

April

Daisy 0198

Rose 0020

Margie 521-

----+----1----+----2----+----3

******************************

June 3210

Daisy 0198

Rose 0020

Page 79: qué es el DFSORT

FL

FL format can be used to convert 4-byte or 8-byte hexadecimal floating-point values to integer values.

•Can be used in INREC, OUTREC, OUTFIL, and DISPLAY in the same way other numeric formats (e.g. ZD, PD, UFF, SFF, etc) can.

•The fractional part of the FL value is truncated.

Page 80: qué es el DFSORT

FL Example (displaying SMF data)

SORT FROM(SMFIN) TO(SMF71) USING(TY71)DISPLAY FROM(SMF71) LIST(SMF71RPT) -TITLE('Low impact central storage frames') -BREAK(15,4,CH,L'System: ') -HEADER('Date') ON(11,4,DT1,E'9999-99-99') -HEADER('Time') ON(7,4,TM1,E'99:99:99') -HEADER('Min Frames') ON(925,8,FL,U10) -HEADER('Max Frames') ON(933,8,FL,U10) -HEADER('Avg Frames') ON(941,8,FL,U10) -

Page 81: qué es el DFSORT

FL Example (displaying SMF data cont.)

Control statements in TY71CNTL:OMIT COND=(6,1,BI,NE,+71,OR,1,2,BI,LE,+18)SORT FIELDS=(15,4,CH,A,11,4,PD,A,7,4,BI,A)

Low impact central storage frames - 1 - System: SYSA Date Time Min Frames Max Frames Avg Frames ---------- -------- ----------- ----------- ----------- 2005-08-01 11:45:00 934215 1001596 963434 2005-08-01 12:00:00 971599 1004939 984437 2005-08-01 12:15:00 970192 982565 973768

Page 82: qué es el DFSORT

SPLIT1R

SPLIT1R allows you to split an input file into multiple output files with contiguous records.

•Can be used with the OUTFIL statement

•A specified number of records is written to each output data set

•Extra records are written to the last output data set.

Page 83: qué es el DFSORT

SPLIT1R Example

OPTION COPYOUTFIL FNAMES=(OUT1,OUT2,OUT3),SPLIT1R=3

Before After

Input DS has:

Record1

Record2

Record3

Record4

Record5

Record6

Record7

Record8

Record9

Record10

Out1 has: Out3 has:

Record1 Record7

Record2 Record8

Record3 Record9

Record10

Out2 has:

Record4

Record5

Record6

Page 84: qué es el DFSORT

Symbols for Columns (sym:)

A symbol (sym:) can now be used for an output column.

•Can be used with INREC, OUTREC and OUTFIL, for an output column wherever you can use c:

•For example, if Field1,18,6,CH and Col2,29 are defined in SYMNAMES, Field1: can be used for 18: and Col2: can be used for 29: 

Page 85: qué es el DFSORT

Sym: Example//SYMNAMES DD * Course,11,20 //SYSIN DD * OPTION COPY OUTREC OVERLAY=(Course:Course,JFY=(SHIFT=LEFT))

Before After

----+----1----+----2----+----3

******************************

History

Psychology

Business

Biology

Science

----+----1----+----2----+----3

******************************

History

Psychology

Business

Biology

Science

Page 86: qué es el DFSORT

INREC with SELECT and SPLICE

SELECT and SPLICE now allow you to use an INREC statement to reformat your records before they are selected or spliced.

All of the operands of the INREC statement (PARSE, BUILD, OVERLAY, IFTHEN and IFOUTLEN) are now available with SELECT and SPLICE.

Page 87: qué es el DFSORT

INREC with SELECT example

//TOOLIN DD * SELECT FROM(IN) TO(OUT) ON(1,20,CH) FIRSTDUP USING(CTL1)//CTL1CNTL DD * INREC OVERLAY=(1,20,JFY=(SHIFT=LEFT)) SORT FIELDS=(1,20,CH,A,21,3,ZD,D)

Before After

----+----1----+----2----+----3

******************************

Vicky 253

Frank 852

David 212

Frank 907

David 651

Frank 213

----+----1----+----2----+----3

******************************

David 651

Frank 907

Page 88: qué es el DFSORT

Mascaras de edición predefinidas

Page 89: qué es el DFSORT

Mascaras de edición predefinidas (cont)

Page 90: qué es el DFSORT

Mascaras de edición predefinidas (cont)