Qué Es El DFSORT
Qué Es El DFSORT
Qué Es El DFSORT
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 or more keys.
Describes changes to the normal translation table. Describes user exit routines. Supplies data set record type and length information when needed. Requests diagnostic features. Marks the end of the control statements.
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 operacin 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 carcter no blanco de las columnas 2 a 71
Campos de control
Definicin de campos
Un campo se define por su posicin (p), su longitud (m) y su formato (f) P La posicin indica en que byte del registro empieza el campo, y opcionalmente, en que bit dentro del byte (B.b). En registro variables, la primera posicin de datos es la 5 M La longitud indica cuantos bytes y bits tiene el campo. El mximo es 4096 F especifica el formato del campo. Los ms corrientes son CH,AQ, ZD, PD, BI, AC y formatos de fecha
Simbolos
Se pueden utilizar smbolos para definir campos, constantes o columnas de salida de informes Se pueden utilizar smbolos del sistemas para definir constantes
Para utilizar simbolos en el DFSORT es necesario: 1. Definir los simbolos, utilizando sentencias con el formato adecuado 2. Identificarlos al DFSORT mediante la DD SYMNAMES 3. Referenciarlos en las sentencias de control
Symbol,value remark
Symbol Value: Es sensible a mayusculas. Indica el nombre del simbolo. No tiene que empezar en la columna 1 Puede representar un campo (p,m,f o p,m), un campo Parse o una constante Se puede utilizar el * para asignar la siguiente posicin a p SKIP,n POSITION,q POSITION,symbol ALIGN,H ALIGN,F ALIGN,D sirven para recolocar la siguiente
posicin
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
//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 * //STEP1 SET SRTCOND='BOHART' SORT FIELDS=(10,8,CH,A) // EXEC SRTPROC INCLUDE COND=((5,4,CH,EQ,C'0205'), //STEP2 SET SRTCOND='PKRUTZA' AND,(39,8,CH,EQ,JP9)) // EXEC SRTPROC OPTION VLSHRT //STEP3 SET SRTCOND='RALEY' OUTFIL VTOF,OUTREC=(C'CONNECT ',10,8, // EXEC SRTPROC C' GROUP(,19,8, //STEP4 SET SRTCOND='RAMIREZ' C') OWNER(',39,8,C')', // EXEC SRTPROC 80:X),REMOVECC //STEP5 SET SRTCOND='RAMON' // PEND // EXEC SRTPROC
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
Copiar
Para copiar un fichero de entrada, se especifica COPY en el campo FIELDS de la sentencia SORT o MERGE. Tambin se puede utilizar el parametro COPY de la sentencia OPTION
SORT FIELDS=COPY MERGE FIELDS=COPY OPTION COPY
Archivos VB
DFSORT procesa la RDW. La primera posicin de datos es, por lo tanto, la 5
Para evitar que el sort termine con error si falta en el registro algun campo de clasificacin, 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 parmetros son comunes a ambas formas, excepto el operando FORMAT, invalido en la sentencia OUTFIL.
Expresiones lgicas
Una expresin lgica es la combinacin de una o ms relacin 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 numricos
Comparaciones
Tipos de constantes:
Pueden ser un nmero decimal (n, +n, n), una cadena de caracteres (Cxx...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 mtodos:
Lgica de bits Comparacin de bits.
Comparacin de fechas
Comprobacin de numeros
Se puede comprobar que un campo tenga valores numricos en formato carcter, decimal con zona o empaquetados (CH,ZD o PD)
Seleccin registros y VB
Se aplican las consideraciones generales, expuestas en SORT/MERGE Si se sabe que algn registro no contiene algn campo de comparacin, se puede utilizar la opcin VLSCMP, que rellena con ceros binarios el registro corto. La combinacin 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 sumarn 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 (posicin y longitud invariable) como con variables (distinta posicin y longitud en cada registro) Se puede modificar el registro con los siguientes mtodos:
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
Ejemplo:
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=(,-))
Se pueden realizar clculos sobre las fechas, y posteriormente editarlos o convertirlos. Los clculos permitidos son:
ADDDAYS, ADDMONS y ADDYEARS para sumar dias, meses o aos SUBDAYS, SUBMONS y SUBYEARS para restar dias, meses o aos DATEDIFF clcula la diferencia en das entre dos fechas NEXTDday clcula el siguiente da que cae en day (SUN, MON, TUE, WED, THU, FRI or SAT). PREVDday clcula el anterior da que cay en day (SUN, MON, TUE, WED, THU, FRI or SAT). LASTDAYW, LASTDAYM, LASTDAYQ y LASTDAYY clcula el ltimo da de la semana, mes, trimestre o ao
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,CR,CREAD, CU,CUPDATE, XFF,CEMPTY, CX,35,6, CA,CALTER), NOMATCH=(11,6), 4X,21,1,CHANGE=(10, B.1......,CVSAM, B.0......,CNON-VSAM))
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
JFY (cont.)
JFY has optional parameters that provide additional functions. Specific leading and trailing characters can be changed to blanks before justification begins
JFY Example
OPTION COPY OUTREC BUILD=(1,30,JFY=(SHIFT=RIGHT,LEAD=CI Like ))
SQZ
SQZ parameter allows you to left-squeeze or rightsqueeze 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 COPY OUTREC OVERLAY=(1,30,SQZ=(SHIFT=LEFT))
Before ----+----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.
SQZ Example
OPTION COPY OUTREC BUILD=(1,30,SQZ=(SHIFT=LEFT, PREBLANK=C'()',LEAD=C'<DETAIL>', MID=C',',TRAIL=C'</DETAIL>'))
Before ----+----1----+----2----+---3 ***************************** * (History) 5 (Psychology) 108 (Business) 92 (Biology) 207 (Science) 9
Modificacin: FINDREP
Modificacin: IFTHEN
Modificacin: 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 nmeros de secuencia a propagar. Se procesa antes que el resto de los WHEN WHEN=(logexp): Aplica las clausulas de modificacin a los registros que cumplen la condicin WHEN=ANY: Aplica las clausulas de modificacin a los registros que cumplan alguna de las WHEN=(logexp) previas ninguna de las WHEN=(logexp)
previas
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.
----+----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,%01 Grade,%02
PARSE Example
INREC 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"
OUTFIL: Sintaxis
Outfil: Sintaxis(ii)
ICETOOL
Es una utilidad multi propositi que, basada en el DFSORT, realiza mltiples operaciones en un solo paso ICETOOL funciona a base de operadores: COPY Copia un archivo a uno o ms archivos de salida COUNT Imprime el numero de registros del archivo de entrada en un mensaje. Puede fijar el cdigo de retorno basandose en un chequeo de dicho nmero 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 agregacin (Max, min, tot, ave, count) MERGE Mezcla varios archivos de entrada en uno o varios de salida MODE Establece el modo de operacin: STOP, CONTINUE o SCAN OCCUR Imprime una linea con el nmero 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 numrico 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 segn el nmero 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 informacin. Especie de JOINKEYS STATS imprime un mensaje con el minimo, maximo, valor medio y total de los campos numricos elegidos. SUBSET Selecciona registro de un archivo quitando los registros de cabeceras o de pies UNIQUE Imprime un mensaje con el nmero de valores nicos de los campos elegidos VERIFY Vlida 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 clasificacin de cada archivos, si ya estn 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 unin, que se pasa como entrada a un SORT o COPY, que puede utilizar la mayoria de las sentencias DFSORT
JOINKEYS
JOIN
REFORMAT
JOINKEYS: Ejemplo
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 COPY INCLUDE COND=(21,4,FS,EQ,NUM)
Before ----+----1----+----2----+---3 ***************************** * June 3210 Betty * April Daisy 0198 Rose 0020
After ----+----1----+----2----+---3
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.
Low impact central storage frames System: SYSA Date Time Min Frames ---------- -------- ----------2005-08-01 11:45:00 934215 2005-08-01 12:00:00 971599 2005-08-01 12:15:00 970192
- 1 Max Frames ----------1001596 1004939 982565 Avg Frames ----------963434 984437 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 COPY OUTFIL FNAMES=(OUT1,OUT2,OUT3),SPLIT1R=3
Before
After
Input DS has: Record1 Record2 Record3 Record4 Record5 Record6 Record7 Record8 Record9
Out1 has: Record1 Record2 Record3 Out2 has: Record4 Record5 Record6
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 ----+----1----+----2----+---3 ***************************** * History Psychology Business Biology After ----+----1----+----2----+---3 ***************************** * History Psychology Business Biology