z/OS JCL y Utilerías JCL Job Control Language Sentencias de control para la asignación de recursos y la ejecución de programas batch INPUT JOB STREAM NULL INSTR. JOB STEPS DD INSTRS. EXEC INSTR. DD INSTRS. EXEC INSTR. //JOB DD INSTRS. EXEC INSTR. DD INSTRS. EXEC INSTR. JOBS //JOB 2 JES2 • JES2 (Job Entry Subsystem): – Lee las sentencias (tarjetas) de JCL – Aloja los jobs en la cola de entrada de ejecución y los ordena por prioridad – Asigna un iniciador y crea el ambiente necesario para la ejecución del Job – Ejecuta programas y libera recursos al terminar 3 Convenciones En Sintaxis • Codificación – – – – – – Tal como se describe en la sintaxis Sentencias con parámetros obligatorios y opcionales Comas para separar parámetros Signo igual (=) representa equivalencia Utilización de parámetros simbólicos Set de caracteres permitidos 4 Estructura de Sentencias • Registros de 80 bytes, similar a una tarjeta perforada • Compuesta por 5 campos: – Identificador • Determina una sentencia JCL • Siempre en las columnas 1 y 2 • // Todas, /* Fin de datos, //* Comentarios – Nombre • • • • Identifica la sentencia y es referencia en el stream Debe iniciar en la columna 3 Longitud máxima de 8 caracteres Mínimo un espacio entre el nombre y los siguientes parámetros 5 Sentencias... – Operación • Especifica la sentencia o comando • Sigue al nombre, antes y después un espacio – Parámetros • • • • • Opciones de proceso separadas por comas Sigue al campo operación Al menos un espacio antes y después Parámetros posicionales y subparámetros Comas para separar parámetros – Comentarios • Inicia después del último carácter de parámetros • Información de ayuda o referencia 6 JOB - JOBSTEP //jname1 JOB … … … … //… … … … … … … //step1 EXEC … … … //… … … DD … … … //… … … DD … … … //… … … DD … … … //step2 EXEC … … … //… … … DD … … … //… … … DD … … … //jname2 JOB … … … //… … … … … … … //step3 EXEC … … … //… … … DD … … … //step4 EXEC … … … //… … … DD … … … // Sentencia Job Sentencia Exec Sentencias DD JOB Sentencia Exec Sentencias DD Job Stream Sentencia Job Sentencia Exec Sentencias DD Sentencia Exec Sentencias DD Sentencia Null JOB 7 Sentencias Principales • JOB • EXEC • DD • PROC • PEND 8 Sentencia JOB • • • • Marca el inicio de un JOB Indica al sistema la forma de proceso Necesaria para cada JCL Puede iniciar en cualquier columna después de la 4 y antes de la 16 • Jobname debe ser único, de máximo 8 caracteres e iniciar en la columna 3 • Parámetros Posicionales – Número de cuenta – Nombre 9 Sentencia JOB... • Subparámetros – REGION=valor. Especifica la cantidad de espacio de memoria que el Job necesita – RESTART= RESTART=stepname stepname o proc.stepname proc.stepname.. Indica al JOB que comience desde un paso en específico – TIME= TIME=([minutes] ([minutes] [,seconds [,seconds]). ]). Tiempo máximo de residencia en memoria del JOB dentro del procesador. Minutes= 1 a 1439, Seconds= Seconds = 1 a 59 – TYPRUN=[HOLD] [SCAN]. Hold envía el job a la cola de Input y queda en pausa (congelado). SCAN solo efectúa una revisión de sintaxis • Comentarios siguen a los parámetros, al menos un espacio antes y después 10 Sentencia JOB • Ejemplos: //ALPHA JOB 843,LINLEE,CLASS=F,MSGCLASS=A,MSGLEVEL=(1,1) //MYJOB JOB,‟JMBUSKIRK‟,TIME=(4,30),MSGCLASS=H,MSGLEVEL=(2,0) //MART JOB //TRY JOB „D83‟,123,USER=RAC1,PASSWORD=XYZ 11 Sentencia EXEC • Identifica el programa o el proceso a ejecutar • Marca el inicio de cada paso de JOB • Sintaxis //stepname EXEC PGM=XXXXXXXX //stepname //stepname // stepname EXEC PROC=XXXXXXXX //stepname // stepname EXEC Nombre del proceso • Stepname es opcional, obligatorio para referencias anteriores y posteriores • Debe contener uno de los siguientes parámetros – PGM – PROC – Nombre del Proceso 12 Sentencia EXEC... • Parámetros posicionales – PGM=prg PGM=prg--name name.. Nombre del programa a ejecutar – PROC= PROC=proc proc--name name.. Nombre del procedimiento a ejecutar – COND=( COND=(stepname.code,operator stepname.code,operator). ). Evalúa el código de retorno enviado por el paso anterior y determina si continua el proceso – PARM= PARM=information information.. Pasa valores al programa que se este ejecutando – REGION= REGION=value value.. Especifica la cantidad de espacio que requiere el proceso – TIME TIME[. [.procstepname procstepname]= ]=((minutes,seconds minutes,seconds)1440 )1440.. Especifica el tiempo máximo de residencia en memoria para el paso 13 Sentencia EXEC... • Ejemplos //STEP4 EXEC PGM=DREC,PARM=„3010,N0‟ // EXEC PGM=ENTRY,TIME=(2,30) //STEP01 EXEC PGM=PBORRA,COND=(0,NE) 14 Sentencia DD • • • • • DD. Data Definition Se pueden describir varios recursos: DATA SETS, SYSOUT, SYSLIB, STEPLIB, JOBLIB, etc etc… … Una sentencia DD por cada archivo Sintaxis: //ddname // ddname DD positionalpositional-parameter,keyword parameter,keyword--parameters… • Máximo 3273 sentencias DD • Cada ddname debe ser único en un paso de Job • Una DD se omite cuando se concatenan archivos 15 Sentencia DD... • Parámetros posicionales – * . Recibe datos vía inin-stream – DATA. Recibe datos vía inin-stream el cual contiene sentencias JCL – DUMMY. No especifica nombre de archivo • Subparámetros – DSN= DSN=dataset dataset.. Especifica el nombre largo del archivo 16 Sentencia DD... • Subparámetros – DCB=(RECFM=TipoDCB=(RECFM=Tipo-reg,LRECL reg,LRECL= =length length,, BLKSIZE=block,DSORG BLKSIZE= block,DSORG= =org org)) – RECFM. Tipo de registro: F – Fijo, FB – Fijo bloqueado, V – Variable, VB – Variable bloqueado – LRECL. Longitud total del registro en bytes – BLKSIZE. Valor del bloqueaje en bytes – DSORG. Tipo de organización del archivo: PS – Secuencial, PO – Particionado – DISP=( DISP=(status,normal,abnormal status,normal,abnormal)) – Status. Estado inicial, valores: OLD, NEW, SHR, MOD – Normal. Acción al finalizar normalmente el proceso, valores: DELETE, KEEP, PASS, CATLG, UNCATLG – Abnormal Abnormal.. Acción en caso de que el proceso termine de forma incorrecta, valores: DELETE, KEEP, CATLG, UNCATLG 17 Sentencia DD... • Subparámetros – SPACE=( SPACE=(uni uni--med( med(pri pri--qty,sec qty,sec--qty,dir qty,dir)[,RLSE][,CONTIG], )[,RLSE][,CONTIG], [,ROUND]). Determina la cantidad de espacio para el archivo – UniUni-med med.. Unidad de medida: TRK – Tracks Tracks,, CYL – Cilindros, BLK – Blocks – Pri Pri--qty qty.. Cantidad primaria, deberá estar disponible al momento de la alojación – Sec Sec--qty qty.. Cantidad secundaria. Se aloja dinamicamente conforme va requiriendo el espacio y hasta 5 extents – Dir. Bloques de directorio, para el caso de datasets particionados – RLSE. Indica que al termino de ejecución, libera el espacio no ocupado – CONTIG. Utiliza un solo extent en espacio contiguo – ROUND. Completa el requerimiento de memoria utilizada a “frontera” de cilindro 18 Sentencia DD... • Subparámetros – UNIT=Unidad. Unidad lógica genérica donde reside el data set. Valores: SYSDA, 3390, WRKDA y otros definidos por instalación – VOLUME=SER. Especifíca el volúmen donde se va a quedar el archivo – LABEL= LABEL=(data (data--set set--seq seq--no, labellabel-type, password). password). Especificación de secuencia del dataset en el volúmen volúmen,, tipo de etiqueta de cinta o cartucho y password – EXPDT= EXPDT=yyddd yyddd.. Especifica una fecha de expiracion del archivo Formato: yy dos digitos para el año, ddd tres digitos para el día (de 001 a 366). Para fechas mayores a Enero 1 de 2000, debe utilizar cuatro digitos para el año (yyyy (yyyy)) 19 Sentencia DD... • Ejemplos: // STEP2 //DDX // //DDY EXEC DD //DD1 // DD DD PGM=POINT DSN=EST,DISP=MOD,VOL=SER=(42569,42570), UNIT=3330 SYSOUT=* DSNAME=AAG3,DISP=(,KEEP), VOL=SER=13230,UNIT=3400--S VOL=SER=13230,UNIT=3400 20 Tarjeta NULL • Marca fin de un paso de JOB • Codificada en las columnas 1 y 2 como // • El sistema reconoce el fin de Job: – Cuando el inin-stream no tiene mas datos – Cuando encuentra // sin nada más 21 Concatenación de archivos • Codificar varios DD bajo un solo DDNAME • Se omiten las DDNAMES de todas las DD de los archivos, a excepción de la primera • Los archivos serán procesados en el orden en que se escriban • Si se pretenden concatenar archivos de diferente bloqueaje debe observarse que el de mayor tamaño aparezca en primer orden 22 Concatenación de archivos • Ejemplos: //INPUT // // // DD DD DD DSNAME=FGLIB,DISP=(OLD,PASS) DSNAME=GROUP,DISP=SHR DSNAME=TPFILE,DISP=(OLD,KEEP), UNIT=TAPE,VOL=SER=T1254 23 Ejemplo de JCL //IBMUSER1 JOB (ODS,PD,PN,009),‘SORT ESTADISTICO’, // CLASS=V, // REGION=7M, // MSGCLASS=L, // NOTIFY=IBMUSER1, // MSGLEVEL=(1,1) //****************************************************************************** //* HACE UN SORT PARA SELECCIONAR LOS REGISTROS TIPO 09 //* DEL ARCHIVO * 0080000 DE ESTADISTICO //****************************************************************************** //JSORT01 EXEC PGM=SORT,REGION=0M //* //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSUDUMP DD DUMMY //SORTWK01 DD SPACE=(CYL,(10,50)),UNIT=WRKDA //SORTWK02 DD SPACE=(CYL,(10,50)),UNIT=WRKDA //SORTWK03 DD SPACE=(CYL,(10,50)),UNIT=WRKDA //SORTWK04 DD SPACE=(CYL,(10,50)),UNIT=WRKDA //SORTWK05 DD SPACE=(CYL,(10,50)),UNIT=WRKDA //SORTWK06 DD SPACE=(CYL,(10,50)),UNIT=WRKDA //SORTIN DD DSN=USERID1.TMP.COPY, // DISP=SHR //SORTOUT DD DSN=USERID1.TMP.COPY.SORT, // DISP=(NEW,CATLG,DELETE), // SPACE=(CYL,(100,50),RLSE), // UNIT=TMPDA, // DCB=*SORTIN // SYSIN DD * SORT FIELDS=(14,2,BI,A) END /* 24 Ejercicio 1 de JCL • Con el usuario y password asignado, entre al mainframe de acuerdo al procedimiento anteriormente descrito • Elabore el JCL que ejecute el programa PROG01 cuyo módulo carga se encuentra en su librería DSRNXX.PO.LOAD • Encontrará un esqueleto de JCL a completar en su librería DSRNXX.PO.JCL con nombre de miembro JEJER01 • Siga las indicaciones de su instructor 25 Procedimientos En JCL • Es ejecutado mediante: //PASO EXEC PROC=procedure name //PASO EXEC Procedure Name • Y cuando es llamado por EXEC el procedimiento. Es sustituido en el jobstream y las sentencias son mezcladas con las del JCL • Hasta este momento JES2 revisa la sintaxis 26 Procedimientos En JCL • Inician con la sentencia PROC y terminan con PEND Los procedimientos pueden contener: SET, EXEC, DD, IF/THEN/ELSE/ENDIF, INCLUDE, CNTL, ENDCNTL y comentarios No pueden contener: – Sentencias JOB 27 Procedimientos En JCL No pueden contener: – Sentencias delimitador /* – Sentencias Null // – Sentencias no JCL Orden de búsqueda: librería PROCLIB y STEPLIB Utilización de parámetros simbólicos Substitución de parámetros al tiempo de ejecución 28 Procs Catalogados • Un procedimiento catalogado significa que este se encuentra en una librería PROCLIB • Pueden ser: – SYS1.PROCLIB – Librerías de sistema definidas por instalación – Librerías de usuario • Se pueden modificar los procedimientos mediante: – Substitución, adición o nulificación de parámetros – Por medio de parámetros simbólicos • Se modifican Procs In-stream y catalogados 29 Modificación de Procedimientos (Parámetros Simbólicos) • Variable usada en Jcl mediante el prefijo “&” • Asignación de valores vía: – PROC. Asigna valores de default – EXEC. Sobreescribe valores de Proc de default – SET. Asigna valores in Procs y no Procs • Se codifican valores en cualquier orden en sentencias PROC, EXEC o SET • Ejemplo: //STP EXEC PROC P1,V=VOL001 //A DD VOL=SER=&V, ... ... ... • Resultado: //A DD VOL=SER=VOL001 30 Parámetros Simbólicos • Ejemplo: Jobstream: //JOB1 //STP1 //S1.D JOB EXEC PROC=PRUEBA,CARGO=7834,DP=OLD DD * ... Datos ... Proc “PRUEBA”: //S1 EXEC //A ... ... ... ... ... ... ... ... PGM=NOMINA,ACCT=&CARGO DD DSN=ENTRADA,DISP=&DP Substitución Resultante: //S1 EXEC PGM=NOMINA,ACCT=7834 //A DD DSN=ENTRADA,DISP=OLD ... ... ... ... ... ... ... ... //D DD * ... Datos ... 31 Ejemplos de JCL´ JCL´s • JCL “disparador” de la ejecución de un PROC //MCJCE100 JOB (EEMC,1),'MC', // CLASS=A, // REGION=0M, // MSGCLASS=X, // MSGLEVEL=(1,1), // SCHENV=SEBATPROD //* //JOBLIB DD DSN=LDB2MXD0.DBD1.SDSNLOAD,DISP=SHR // DD DSN=MBVC.LOADLIB.BATCH,DISP=SHR // DD DSN=MBVC.LOADLIB.RUTINAS,DISP=SHR // DD DSN=CEE.SCEERUN,DISP=SHR // DD DSN=DB2.SDSNLOAD,DISP=SHR //* //MYLIB JCLLIB ORDER=MBVC.PROCLIB //* //MCJCE100 EXEC MCPCE100,AMB=C 32 Ejemplos de JCL´ JCL´s • PROC (Procedimiento) //MCPCE100 PROC //********************************************************************** //* * //* SISTEMA: MC(MODULO DE MEDIOS DE PAGO) * //* * //* PROCESO: MCPCE100. * //* * //* OBJETIVO : VERIFICA LAS FECHAS ACTIVAS PARA LA ESTRATEGIA 10 ACTUA * //* -LIZANDO SU STATUS DEPENDIENDO DEL LA FECHA ACTUAL Y EL * //* PERIODOD DE ACTIVACION * //* * //* REALIZO : FJC * //* * //* FECHA : NOVIEMBRE 2002 * //* * //********************************************************************** 33 Ejemplos de JCL´ JCL´s • PROC (Procedimiento) //********************************************************************** //* PROGRAMA MC4CE100 * //********************************************************************** //MCPCE101 EXEC PGM=IKJEFT1A //SYSPRINT DD SYSOUT=* //SYSTSPRT DD SYSOUT=* //SYSDBOUT DD SYSOUT=* //SYSABOUT DD SYSOUT=* //SYSUDUMP DD DUMMY //SYSOUT DD SYSOUT=* //SYSTSIN DD DSN=MBV&AMB..CONTROL(MCE10001),DISP=SHR //* 34 Utilerías • De archivos – – – – – – – – Crear Copiar Imprimir Actualizar Reorganizar Clasificar Intercalar Comparar • Ambos grupos son controlados mediante sentencias de Jcl y declaraciones de control propias de ellas • Reducen el costo de adquirirlas o escribirlas con personal de programación debido al uso tan común que se hace de ellas 35 Tipos de Utilerías • De Aplicación. – Normalmente se usan para crear, modificar o borrar conjuntos de datos. • De Clasificación/Mezcla. – Permiten clasificar o mezclar información proveniente de archivos • Para archivos VSAM. – Permiten crear, mantener, borrar o actualizar información contenida en archivos VSAM • De mantenimiento DASD. – Permiten darle mantenimiento a los Dispositivos de Acceso Directo, incluyendo respaldos y recuperaciones • De control de espacio. – Se encargan de mantener la disponibilidad de espacio de DASD 36 Utilería IEFBR14 • Ejemplo: //MYJOB JOB (ACC),‟AMS‟, // REGION=4096K,NOTIFY=IDSAMS // MSGCLASS=X //* //* EJEMPLO DE CREACION DE ARCHIVO A TRAVES DE LA UTILERIA //* IEFBR14 //* //STEP1 EXEC PGM=IEFBR14 //SYSUT DD DSN=ARCHIVO.NUEVO,DISP=(NEW,CATLG,DELETE), // SPACE=(CYL,(10,1),RLSE),UNIT=TMPDA //* //* EJEMPLO DE BAJA DE ARCHIVO A TRAVES DE LA UTILERIA IEFBR14 //* //STEP2 EXEC PGM=IEFBR14 //SYSUT2 DD DSN=ARCHIVO.BAJA,DISP=(OLD,DELETE) // 37 Ejercicio 2 de JCL • Con el usuario y password asignado, entre al mainframe de acuerdo al procedimiento anteriormente descrito • Elabore el JCL que permita generar con la utilería IEFBR14 un archivo secuencial de 2 cilindros de espacio primario, 1 cilindro de espacio secundario y longitud de registro de 80 bytes • El archivo se deberá llamar DSRNXXX.PS.PRUEBA • El JCL se deberá llamar JEJER02 38 Ejercicio 2 de JCL • Elabore el JCL que permita generar con la utilería IEFBR14 un archivo secuencial de 10 cilindros de espacio primario, 2 cilindros de espacio secundario y longitud de registro de 100 bytes • El archivo se deberá llamar DSRNXXX.PS.PRUEBA1 • Elabore el JCL que borre el archivo PRUEBA1 a través de la utilería IEFBR14 • Tome de referencia los ejemplos de la diapositiva 39 • El JCL se deberá llamar JEJER021 39 Utilería IEBGENER • Copia de archivos, ejemplo: //MYJOB JOB (ACC),‟AMS‟, // // //* //* EJEMPLO DE COPIA DE ARCHIVO //* //STEP1 EXEC //SYSUT1 DD //SYSUT2 DD // // //* //MYJOB JOB (ACC),‟AMS‟, // // //* //* EJEMPLO DE COPIA DE ARCHIVO //* //STEP1 EXEC //SYSUT1 DD //SYSUT2 DD //* REGION=4096K,NOTIFY=IDSAMS MSGCLASS=X A UNO NUEVO PGM=IEBGENER DSN=ARCHIVO.UNO,DISP=SHR DSN=ARCHIVO.DOS, DISP=(,CATLG,DELETE),DCB=*.SYSUT1, UNIT=TMPDA,SPACE=(CYL,(10,1),RLSE) REGION=4096K,NOTIFY=IDSAMS MSGCLASS=X EN OTRO YA EXISTENTE PGM=IEBGENER DSN=ARCHIVO.ABCD,DISP=SHR DSN=ARCHIVO.WXYZ,DISP=SHR 40 Utilería IEBGENER • Imprimir el contenido de archivos, ejemplo: //MYJOB JOB (ACC),‟AMS‟, // REGION=4096K,NOTIFY=IDSAMS // MSGCLASS=X //* //* EJEMPLO DE UNA DESCARGA A IMPRESORA ARCHIVO EN SYSOUT //* VISTO EN PANTALLA //* //STEP1 EXEC PGM=IEBGENER //SYSUT1 DD DSN=ARCHIVO.EN.DISCO,DISP=SHR //SYSUT2 DD SYSOUT=X //SYSPRINT DD SYSOUT=Z 41 Ejercicio 3 de JCL • Por medio del editor de TSO genere datos de prueba en el archivo DSRNXXX.PS.PRUEBA • No importa el formato o contenido del archivo • Por medio de la utilería IEBGENER copie el archivo DSRNXXX.PS.PRUEBA al archivo DSRNXXX.PS.PRUEBA.NUEVO • El JCL se deberá llamar JEJER03 42 Utilería EIBCOPY • Mantenimiento a datasets particionados • Funciones: – Copia de librerías – Compresión de librerías • Sentencias DD a utilizarse: – SYSIN. Define las sentencias de control. Normalmente residen – – – – como input-stream, sin embargo, también pueden estar en algún archivo SYSPRINT. Archivo secuencial que será usado para listar sentencias y mensajes. Este archivo puede grabarse en sysout, en disco o en cinta, según se necesite SYSUT1. Archivo particionado de entrada SYSUT2. Archivo particionado de salida SYSUT3 y SYSUT4. Areas auxiliares de espacio 43 Utilería EIBCOPY • Sentencias de Control: – COPY. Indica el inicio de la operación y contiene los operandos: – – – – INDD. Librería o librerías de entrada OUTDD. Librería de destino R. Especifica reemplazo de miembros existentes LIST(YES/NO). Lista los miembros copiados – SELECT. Especifica los miembros a copiar, operandos: – MEMBER. Nombre del miembro a copiar. Seguido y separado con coma, se puede especificar un nuevo nombre de miembro – R. Especifica reemplazo de miembros existentes – EXCLUDE. Elimina de la operación de copia, algunos miembros del archivo de entrada, operandos: – MEMBER. Nombre del o los miembros a excluir. Cada miembro especificado debe ser único 44 Utilería EIBCOPY • Ejemplos: //MYJOB JOB (ACC),‟AMS‟, // REGION=4096K,NOTIFY=IDSAMS // MSGCLASS=X //* //* EJEMPLO DE COMPRESION DE UN ARCHIVO PARTICIONADO //* //STEP1 EXEC PGM=IEBCOPY //SYSUT1 DD DSN=IDSAMS.FTE.LIB,DISP=OLD //SYSUT3 DD SPACE=(CYL,(10,5))DISP=(,DELETE) //SYSUT4 DD SPACE=(CYL,(10,5))DISP=(,DELETE) //SYSPRINT DD SYSOUT=X //SYSIN DD * COPY INDD=SYSUT1,OUTDD=SYSUT1 //* 45 Utilería EIBCOMPR • Comparación de data sets • Funciones: – Dos archivos secuenciales – Dos archivos particionados o extendidos – Data sets fijos, variables, indefinidos, bloqueados o desbloqueados – No utilizable para modulos de carga • Consideraciones de igualdad: – Los dos archivos contienen el mismo número de registros – Correspondencia de registros en llave y datos 46 Utilería EIBCOMPR • Sentencias DD a utilizarse: – SYSIN. Define las sentencias de control. – SYSPRINT. Archivo secuencial que será usado para listar sentencias y mensajes. – SYSUT1. Archivo de entrada – SYSUT2. Archivo de salida – SYSUT3 y SYSUT4. Areas auxiliares de espacio • Sentencias de Control: – COMPARE. Indica la organización de archivos, contiene los operandos: – TYPORG. Especifica la organización que tienen los archivos de entrada, opciones: PS – Secuencial, PO – Particionado 47 Utilería EIBCOMPR • Ejemplos: //MYJOB JOB (ACC),‟AMS‟, // REGION=4096K,NOTIFY=IDSAMS // MSGCLASS=X //* //* EJEMPLO DE COMPARACION DE ARCHIVOS SECUENCIALES //* //PASO EXEC IEBCOMPR //SYSPRINT DD SYSOUT=X //SYSUT1 DD DSN=DATASET.IND1,DISP=SHR //SYSUT2 DD DSN=DATASET.OUT1,DISP=SHR //SYSIN DD DUMMY //MYJOB JOB (ACC),‟AMS‟, // REGION=4096K,NOTIFY=IDSAMS // MSGCLASS=X //* //* EJEMPLO DE COMPARACION DE ARCHIVOS PARTICIONADOS //* //PASO EXEC IEBCOMPR //SYSPRINT DD SYSOUT=X //SYSUT1 DD DSN=DATASET.ONE,DISP=SHR //SYSUT2 DD DSN=DATASET.TWO,DISP=SHR //SYSIN DD * COMPARE TYPORG=PO 48 Utilería ICEMAN (DFSort) • Programa utilería para: Clasificar, Fusionar y Copiar información de archivos • Alternativamente puede realizar las funciones de: – Filtrado de información innecesaria – Editar o reformatear registros – Sumar información numérica • Sentencias DD a utilizarse: – SYSIN. Define las sentencias de control. – SYSPRINT. Archivo secuencial que será usado para listar sentencias y mensajes. – SYSUT1. Archivo de entrada – SYSUT2. Archivo de salida 49 Utilería ICEMAN • Sentencias de Control: – – – – – – – – INCLUDE. Incluye registros en el archivo de salida INREC. Reformatea el registro antes de que sean procesados SORT. Especifica una acción de clasificación OMIT. Omite registros en el archivo de salida OUTREC. Omite registros en el archivo de salida MERGE. Especifica una acción de fusión de archivos SUM. Sumariza campos END. Termina la lectura por SYSIN o SORTCNTL 50 Iceman - Sentencia INCLUDE • Incluye registros en el archivo de salida mediante un criterio de selección • Ejemplo: INCLUDE COND=(1,10,CH,EQ,50,10,CH) Se incluyen en el archivo de salida solamente aquellos registros en los cuales el campo de 10 bytes carácter iniciando en el byte 1 sea igual al campo de 10 bytes carácter que inicia en el byte 50 51 Iceman - Sentencia INREC • Reformato de registros antes de que sean procesados • Define qué partes del registro de entrada serán incluidas en el registro reformateado de entrada y el orden en que deberán aparecer • Ejemplos Sintaxis-1: INREC FIELDS=(20,4,12,3) Reformatea el registro de entrada de la posición 20-23 y de la 12-14 en las posiciones 1-4 y 5-7 respecto al archivo de salida INREC FIELDS=(10,3,20,8,33,11,5,1) Reformatea el registro de entrada para dejar en salida: Posiciones 1-3 4-11 12-22 23 El campo El campo El campo El campo de de de de entrada de entrada de entrada de entrada en las posiciones 10-12 las posiciones 20-27 las posiciones 33-43 la posición 5 52 Iceman - Sentencia SORT • Ejemplo de SORT: SORT FIELDS=(2,5,CH,A),SIZE=29483 El campo de argumento de sort inicia en la columna 2 con 5 bytes de longitud tipo carácter, la secuencia de orden es ascendente. El archivo a clasificarse deberá tener 29483 registros 53 Iceman - Sentencia OMIT • Omite registros del archivo de entrada • Ejemplos: OMIT COND=(1,10,CH,EQ,50,10,CH) Omite los registros de entrada cuyo campo de 10 bytes, que inicia en la columna 1 y es CHaracter, sea igual al campo de 10 bytes que inicia en la columna 50 y tambien es CHaracter OMIT COND=(27,1,CH,EQ,C'D„) Omite los registros de entrada los cuales contengan el carácter „D‟ en la posición 27 54 Iceman - Sentencia OUTREC • Reformatea la salida de registros • Define que partes del registro de entrada serán incluidas en el registro reformateado de salida y el orden en que deberán aparecer 55 Iceman - Sentencia MERGE • Especifica una operación de MERGE o COPY, sintaxis: MERGE FIELDS=(pos,lon,form,seq),FORMAT=form,opc MERGE FIELDS=COPY • Los parámetros y opciones de MERGE son similares a los de la sentencia SORT • Remitase a las láminas de descripción de SORT, para la descripcíón de ésta sentencia 56 Iceman - Sentencia SUM • Proporciona una opción de obtener sumatorias o totales de determinados campos de un archivo • Ejemplos: SUM FIELDS=(41,8,ZD,49,4,FI) Suma los datos de un campo desempacado de 8 bytes que empieza en la columna 41 y de un campo entero de punto fijo de 4 bytes que comienza en la columna 49 SUM FIELDS=(21,8,49,4),FORMAT=ZD Suma los datos de un campo numérico de 8 bytes que empieza en la columna 21 a los de un campo numérico de 4 bytes que comienza en la columna 49 57 FIN DE MODULO Derechos de autor • Este producto has sido elaborado por • Jorge Godínez Rodríguez. • Derechos reservados – Prohibida su reproducción parcial o total 59