qué es el dfsort
TRANSCRIPT
¿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
¿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
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.
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.
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.
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
Campos de control
Orden de procesado de registros
Orden de procesado de registros (cont)
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
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
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
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’
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
Clasificar
Ejemplo
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
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
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
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
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.
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
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]
Constantes de fecha
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
Comparacion de bits
• Hay dos métodos:– Lógica de bits– Comparación de bits.
Comparacion bits. Ejemplos
Comparación de fechas
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)
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
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
Sentencia INREC
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
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)
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)]
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
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
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
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
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=(,-))
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
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’))
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.
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
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.
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
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.
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>
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.
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>
Modificación: FINDREP
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)
Modificación: IFTHEN
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
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))
Parse
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.
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
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
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"
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
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.
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
OUTFIL: Sintaxis
Outfil: Sintaxis(ii)
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.
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
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
JOINKEYS: Orden de procesado
JOINKEYS
JOIN
REFORMAT
JOINKEYS: Ejemplo
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
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
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.
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
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.
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) -
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
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.
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
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:
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
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.
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
Mascaras de edición predefinidas
Mascaras de edición predefinidas (cont)
Mascaras de edición predefinidas (cont)