JCL y Utilerías1 JCL y Utilerías Objetivos El presente curso tiene como objetivos: Conocer los diferentes tipos de JCL’s Identificar los requisitos para la codificación de un JCL. Definir las sentencias utilizadas Explicar los códigos de retorno, los códigos de error y principales abends. Explicar las principales utilerías de usadas. 2 JCL y Utilerías Índice 1. Introducción 2. Conceptos de JCL 3. Sentencias de JCL 3.1. Sentencia JOB 3.2. Sentencia EXEC 3.3. Sentencia DD 3.4. Sentencias especiales 4. Códigos de retorno 5. Procedimientos 3 JCL y Utilerías 1. IEBGNENER 7. Utilerías 6.2.Índice 6. Generational Data Group (GDG) 4 JCL y Utilerías .4. IDCAMS 6. DFSORT 6.3 IEBCOPY 6. 1. Introducción 5 JCL y Utilerías . que son un conjunto de instrucciones necesarias para la ejecución de un proceso batch. esto es semejante a un “Batch de D. De esta manera el JCL le dice al sistema operativo todos los requerimientos de entrada y salida que se necesitan para ejecutar un proceso o varios en una secuencia determinada (Gestor de trabajos – JES). 6 JCL y Utilerías . • Para llevar a cabo algunas de estas tareas en el sistema operativo OS/390.” que ejecuta peticiones al sistema operativo.S. discos. es necesario conocer el manejo de JCL’s (Job Control Language). comunicaciones etc. terminales de trabajo.O. Dentro de sus principales ocupaciones están la administración de: Memoria.Introducción • El Sistema Operativo es el encargado de gestionar de forma eficiente todos los recursos de los que dispone un sistema de información. programas. Conceptos de JCL 7 JCL y Utilerías .2. es un lenguaje de programación que permite codificar las instrucciones necesarias para la ejecución de un proceso batch. • Estas instrucciones son interpretadas y ejecutadas por el gestor de trabajos (JES – Job Entry Subsystem) 8 JCL y Utilerías .Definición de JCL • JCL (Job Control Lenguage). Partes de un JCL: – Cabecera. tiempo. También se puede hacer referencia como step (paso). Ejecución de un programa dentro de un job. Máximo de pasos permitidos en un JCL es de 255. Job Step (paso de job). Contiene las sentencias de ejecución de cada programa o utilería a ejecutar. • • 9 JCL y Utilerías .Términos y Conceptos Generales • • Job (trabajo). nivel de mensajes. características de entorno. etc. Información relativa al entorno en donde será ejecutado el job. Unidad de trabajo básica independiente. – Cuerpo. Se ejecutan a través de la definición de procesos llamados por el JCL al momento de la ejecución. (Procs) • Mixtos. • Procedimientos. Ejecutan los programas dentro del mismo job. 10 JCL y Utilerías .Tipos de JCL • In-stream. Son una combinación de los dos anteriores. los cuales deberán terminar como máximo en la columna 72. Los parámetros utilizados en la codificación del JCL deberán ser separados por comas. El nombre que identifica cada paso del JCL deberá comenzar con un caracter alfabético de máximo de 8 caracteres a partir de la columna 3. y la declaración de estos no deberá exceder de la posición 71 La codificación de comentarios es con //*. • • • • 11 JCL y Utilerías . salvo en algunos casos. La terminación de un paso es indicada a través de /* en las columnas 1 y 2.Sintaxis general de JCL • La codificación de un JCL debe empezar en las columnas 1 y 2 con //. DELETE) //SYSIN DD * /* 12 JCL y Utilerías .CLASS=C. // DISP=(NEW.MSGLEVEL=(1.MSGCLASS=C.LRECL=32.1) //********************************************************************** //* CREACION DE ARCHIVO DE PRUEBA * //********************************************************************** //P01DE01 EXEC PGM=IEBGENER //SYSTSPRT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSUT1 DD * ABC456789112DEF67892123456789312 //SYSUT2 DD DSN=ACCEN.PRUEBA.NBAS.Sintaxis general de JCL A continuación se muestra un ejemplo en el que se puede ver la sintaxis de un JCL: 123456789012345678901234567890123456789012345678901234567890123456789012 //JCLNAME JOB (PBM).BLKSIZE=0).CATLG.'EJEMPLO'. // DCB=(RECFM=FB. Sintaxis de las sentencias de JCL Sentencia JOB EXEC DD Comando Delimitador Nulo Comentarios Columna 1 y 2 // // // // /* // // Campos (a partir de la columna 3) jobname JOB[operandos] stepname EXEC [oprendos] filename DD [operandos] (Comando) operandos * comentarios 13 JCL y Utilerías . 3. Sentencias de JCL 14 JCL y Utilerías . Sentencias de JCL Las principales sentencias utilizadas son: • JOB. Define las entradas y salidas del proceso 15 JCL y Utilerías . Identifica el inicio del job a ejecutarse. • EXEC. Principio de cada paso e identifica el programa o procedimiento a ser ejecutado • DD. 1 Sentencia JOB 16 JCL y Utilerías .3. • El jobname(CREAFILE) indica el nombre que se asignará al JCL. // REGION=4096K. • 17 JCL y Utilerías .parm2.. puede tener una longitud máxima de 8 caracteres. debe comenzar en la posición 12.NOTIFY=ESBS755.CLASS=C.'user'.parm1.'EJEMPLO'. // MSGCLASS=C. La sentencia JOB Indica el inicio del job a ser ejecutado..MSGLEVEL=(1. // COND=(0.Sentencia JOB //CREAFILE JOB (ABC).LT) //Jobname JOB (cuenta).1). LT) • Cuenta del jcl.'EJEMPLO'. // COND=(0.1). // MSGCLASS=C.Sentencia JOB //CREAFILE JOB (ABC).MSGLEVEL=(1. Puede ser especificado por la instalación. • • 18 JCL y Utilerías . ya que éste es utilizado para determinar el gasto de recursos que el job necesita. // REGION=4096K.NOTIFY=ESBS755. Parámetros de ejecución. Se debe indicar la cuenta (ABC) a la que es asignada el job. Usuario del job.CLASS=C. Máximo 20 caracteres. LT) CLASS=x • • • Indica la cola de ejecución a la cual será asignado el job En caso de no ser indicada. // MSGCLASS=C. se asigna la predeterminada por la instalación. // COND=(0.NOTIFY=ESBS755.1). // REGION=4096K.CLASS=C.'EJEMPLO'.MSGLEVEL=(1.Principales parámetros de la sentencia JOB //CREAFILE JOB (ABC). Algunos valores asignados pueden ser : A – Impresora X – retener mensajes Z – no imprimir mensajes 19 JCL y Utilerías . LT) MSGCLASS=x • Indica la cola de salida (x) a la cual se enviaran los mensajes que se generen durante la ejecución del job. 20 JCL y Utilerías . // COND=(0.1).NOTIFY=ESBS755.'EJEMPLO'. // MSGCLASS=C.MSGLEVEL=(1. // REGION=4096K.CLASS=C.Principales parámetros de la sentencia JOB //CREAFILE JOB (ABC). NOTIFY=ESBS755.1).LT) MSGLEVEL=(x.y) • • • Controla la salida de las sentencias y mensajes de salida en el log.Principales parámetros de la sentencia JOB //CREAFILE JOB (ABC). // REGION=4096K. 21 JCL y Utilerías • . Indica la clase de ejecución a la cual se enviaran los mensajes que se generen durante la ejecución del job.'EJEMPLO'. Valores a asignar : x – Sentencias que se desplegarán en el log del job y – Mensajes que serán desplegados en el job Si esta sentencia es omitida se asigna un valor por default de la instalación. // MSGCLASS=C.MSGLEVEL=(1.CLASS=C. // COND=(0. CLASS=C. 22 JCL y Utilerías .MSGLEVEL=(1. // MSGCLASS=C. • Puede ser expresada en Kilobytes (K) o Megabytes (M). // REGION=4096K.NOTIFY=ESBS755. // COND=(0.1).LT) REGION=nnnn[K][M] • Especifica el máximo de memoria asignada a nivel de todo el JCL.'EJEMPLO'.Principales parámetros de la sentencia JOB //CREAFILE JOB (ABC). LT) NOTIFY=aaaaaaa • Específica el usuario de TSO (aaaaaaa) al que se notificará al terminar de ejecutarse el job. // COND=(0.'EJEMPLO'.1).Principales parámetros de la sentencia JOB //CREAFILE JOB (ABC).CLASS=C.MSGLEVEL=(1. 23 JCL y Utilerías . // MSGCLASS=C.NOTIFY=ESBS755. // REGION=4096K. Mayor que LT .a) • Específica el código de retorno (n) y la condición (a) para que los pasos del JOB continúen ejecutándose.CLASS=C.LT) COND=(n.Distinto de 24 JCL y Utilerías . // MSGCLASS=C. Condiciones de retorno : GT .Principales parámetros de la sentencia JOB //CREAFILE JOB (ABC). // COND=(0.Menor que EQ .NOTIFY=ESBS755.1).Menor o igual que NE .'EJEMPLO'.Mayor o igual que LE . // REGION=4096K.Igual a • GE .MSGLEVEL=(1. LINES=nnnn Controla el reinicio del job a partir del paso especificado RESTART=stepname RESTART TIME TYPERUN Determina el tiempo máximo de CPU que puede ser utilizado en la ejecución del job. se envía un mensaje al operador. Localiza los errores de sintaxis del JCL con las opciones de no ejecutarlo.Parámetros adicionales de la sentencia JOB LINES Número máximo de líneas a desplegar en SYSOUT. o bien. y dependiendo de éste se cancela el job. ejecutarlo hasta que el operador lo permita ejecutarlo en la clase de SYSOUT 25 JCL y Utilerías . se guarda la información en cartucho. 2 Sentencia EXEC 26 JCL y Utilerías .3. Parámetros de ejecución a nivel de la sentencia EXEC.Sentencia EXEC //P01DE01 EXEC PGM=BG3C3330. La sentencia EXEC debe iniciar en la posición 12. el cual puede tener una longitud máxima de 8 caracteres. 27 JCL y Utilerías • .COND=(0. Se debe indicar si es un programa (PGM) o un procedimiento (PROC) el que se va a ejecutar.PARM='20010101'. indica el inicio de cada paso.parm2 • • • Inicia con el stepname.EQ) //stepname EXEC [PGM][PROC]=programa/procedimiento.parm1. 28 JCL y Utilerías .Principales parámetros de la sentencia EXEC //P01DE01 EXEC PGM=BG3C3330. • Pueden informarse hasta 100 caracteres como valores de un parámetro.COND=(0.EQ) PARM=valor • Permite informar valores al programa en ejecución.PARM='20010101'. Principales parámetros de la sentencia EXEC Parámetros para un programa usando PARM DECLARACION EN PROGRAMA *********************************************** * LINKAGE SECTION * *********************************************** LINKAGE SECTION. * 01 REG-PARM. 05 PARM-LONG PIC X(2). 05 PARM-TAREA PIC X(4). 05 PARM-ARCHIVO PIC X(3). *********************************************** * PROCEDURE DIVISION *********************************************** PROCEDURE DIVISION USING REG-PARM. DECLARACION EN JCL Programa sin DB2 //P01DE01 EXEC PGM=BG4CINT0,PARM=‘9400MOV’,COND=(0,EQ) Programa con DB2 //SYSTSIN DD * DSN SYSTEM(DB2D) RUN PROGRAM(BG4CINT0) PLAN(BVDBGPB) PARM('9400MOV') END 29 JCL y Utilerías Principales parámetros de la sentencia EXEC //P01DE01 EXEC PGM=BG3C3330,PARM='20010101',COND=(0,EQ) COND=(n,a,[EVEN/ONLY]) • Realiza la misma función que en la sentencia JOB, con la diferencia que ésta sólo aplica a nivel de paso, y con algunas condiciones adicionales. Las condiciones: – EVEN. Indica que el paso se ejecutará aún cuando algún paso anterior finalice anormalmente – ONLY. Indica que este paso se ejecutará si algún paso ha finalizado anormalmente. 30 JCL y Utilerías • Parámetros adicionales de la sentencia EXEC REGION Especifica el máximo de memoria asignada a nivel de paso. Puede ser expresada en Kilobytes o Megabytes Tiempo máximo de ejecución a nivel de paso TIME 31 JCL y Utilerías 3 Sentencia DD 32 JCL y Utilerías .3. UNIT=3390.CATLG.VOL=SER=SYSWK1.10).DCB=_____ • El ddname indica el nombre del paso.HAQL090.VOL=_____. tiene una longitud máxima de 8 caracteres y éste nombre debe ser único por cada paso. // DCB=(LRECL=137.RECFM=FB. SPACE=_____.DATA. Debe iniciar en la posición 12.SBAS. // DISP=(NEW.RLSE). Describe los archivos que requiere el programa a ser ejecutado. Posterior a su codificación. se asignan los parámetros opcionales necesarios para la definición del archivo.Sentencia DD //S1DQ4000 DD DSN=APHA.DELETE). DD (Data Definition). // SPACE=(CYL.(10.UNIT=____. 33 JCL y Utilerías • • .DISP=_____.BLKSIZE=1370) //ddname // DD DSN= ____. codificándose después del ddname. SBAS. SELECT IN-FILE ASSIGN TO E1DQ0001 DEFINICION DE DD //E1DQ0001 DD DSN=ACCEN.DATOS 34 JCL y Utilerías .Principales parámetros de la sentencia DD PROGRAMA COBOL. Particionados.DELETE). // DCB=(LRECL=137.10).SBAS. Generacionales (GDG). VSAM.VOL=SER=SYSWK1.UNIT=3390.DATA.RECFM=FB.(10.Principales parámetros de la sentencia DD //S1DQ4000 DD DSN=APHA. 35 JCL y Utilerías .CATLG. // SPACE=(CYL.HAQL090. // DISP=(NEW.BLKSIZE=1370) DSN=namefile • El namefile es el nombre con que el sistema debe localizar o alojar los archivos. • Existen diferentes tipos de archivos. etc.RLSE). los mas importantes son: Secuenciales. archivo(num_generación) – Archivos temporales. nombre.del.archivo – Archivos particionados.del. nombre.archivo(nom_elemento) – Archivos generacionales.del. &&nombre 36 JCL y Utilerías .Principales parámetros de la sentencia DD • Los nombres que son asignados generalmente a los diferentes tipos de archivos son: – Archivos secuenciales. Máximo 44 caracteres nombre. 37 JCL y Utilerías . – El segundo indicador nos dice que acción se debe de tomar con el archivo si el paso termina correctamente – El tercer indicador nos dice que acción se debe de tomar con el archivo si el paso termina anormalmente.ind_2.HAQL090.VOL=SER=SYSWK1.CATLG.DELETE).ind_3) • El parámetro DISP.SBAS.DATA. // DCB=(LRECL=137. tiene tres funciones: – El primer indicador nos dice la situación del archivo al inicio de la ejecución. // DISP=(NEW. // SPACE=(CYL.RLSE).BLKSIZE=1370) DISP=(ind_1.UNIT=3390.(10.Principales parámetros de la sentencia DD //S1DQ4000 DD DSN=APHA.RECFM=FB.10). • En la adición de registros nuevos.. • Si existe. • El archivo existe y además puede ser compartido. • Si el archivo no existe lo considera NEW.Principales parámetros de la sentencia DD Las diferentes disposiciones de los archivos son: Disposición NEW OLD SHR MOD • El archivo es creado • El archivo ya existe y mientras se esta utilizando ninguna otra tarea puede acceder a dicho archivo. Descripción 38 JCL y Utilerías .. obliga al sistema de I/O a posicionarse en el último registro que exista. ninguna otra tarea puede accederlo. Continúa. Se borra al terminar el job. • El archivo se guarda y es catalogado.Principales parámetros de la sentencia DD Las diferentes disposiciones de los archivos son: Disposición DELETE KEEP PASS CATLG UNCATLG • El archivo es borrado • Indica que el archivo debe mantenerse al final del paso. Descripción 39 JCL y Utilerías . • Indica que el archivo se utilizará en los pasos posteriores. • El archivo se guarda y no es catalogado. Si el segundo parámetro no es codificado se asume KEEP. si en el primer parámetro se informa NEW.UNCATLG .CATLG .Principales parámetros de la sentencia DD • Reglas de uso para parámetros DISP: DISP= NEW OLD SHR MOD . .PASS . El tercer parámetro siempre debe ser codificado 40 JCL y Utilerías .KEEP .KEEP . Si el segundo parámetro no es codificado se asume DELETE.CATLG .PASS .UNCATLG • • • • Si el primer parámetro no es codificado se asume NEW. .DELETE . sólo si en el primer parámetro se informa OLD.DELETE . (10.RECFM=FB.BLKSIZE=1370) UNIT=[address/type][TAPE][SYSDA] • Especifica un dispositivo de entrada o salida.DATA.SBAS.DELETE). // DISP=(NEW.UNIT=3390.Principales parámetros de la sentencia DD //S1DQ4000 DD DSN=APHA.VOL=SER=SYSWK1. ya sea a unidad de cinta o disco. // DCB=(LRECL=137. volumen o un grupo de discos designados por la instalación (generalmente SYSDA o 3390).10).CATLG. Este parámetro depende de la instalación • 41 JCL y Utilerías .HAQL090.RLSE). // SPACE=(CYL. DELETE). 42 JCL y Utilerías . • Las unidades en las que se mide el espacio son :Cilindros (CYL).HAQL090.BLKSIZE=1370) SPACE=([CYL][TRK][nnnn]. // DCB=(LRECL=137.(10. // DISP=(NEW.RECFM=FB.DATA.(ext_primaria.VOL=SER=SYSWK1.UNIT=3390.RLSE). Sólo debe indicarse cuando el archivo es nuevo. Tracks (TRK) o longitud del bloque(nnnn).Principales parámetros de la sentencia DD //S1DQ4000 DD DSN=APHA. // SPACE=(CYL.[miembros]).[RLSE]) • Indica el espacio que debe reservarse en disco para almacenar los datos del archivo.ext_secundaria.CATLG.10).SBAS. Se pueden añadir hasta 15 extensiones secundarias. // DISP=(NEW. // DCB=(LRECL=137.Principales parámetros de la sentencia DD //S1DQ4000 DD DSN=APHA. 43 JCL y Utilerías • • .SBAS.HAQL090.VOL=SER=SYSWK1. El tercer subparámetro (directorio). // SPACE=(CYL. indica el espacio que se reservará para el archivo al momento de crearlo.DELETE).CATLG.UNIT=3390.DATA. indica que al final de la ejecución se libere el espacio no usado por el archivo alojado. RLSE. es principalmente para indicar el espacio a reservar para los miembros a alojar en caso de tratarse de un archivo particionado.BLKSIZE=1370) • • El primer subparámetro (extensión primaria).RECFM=FB. El segundo subparámetro (extensión secundaria) es la cantidad de espacio a añadir cada vez que el archivo se llene.RLSE).(10.10). SBAS.BLKSIZE=1370) VOL=disco ó VOL=SER=disco • VOL. indica el número de serie del disco. Para archivos catalogados no es necesario se codifique esta sentencia.UNIT=3390.RLSE).DELETE).VOL=SER=SYSWK1.(10.10).CATLG. // DISP=(NEW. se utiliza para identificar el disco en el que se encuentra el archivo.RECFM=FB. Normalmente. tiene el mismo valor que el volumen. SER.Principales parámetros de la sentencia DD //S1DQ4000 DD DSN=APHA.HAQL090. // SPACE=(CYL. • 44 JCL y Utilerías .DATA. // DCB=(LRECL=137. BLKSIZE=_____) ó LRECL=______.BLKSIZE).DELETE).RECFM.BLKSIZE=_____ • Data Control Block (DCB).RECFM=_____.Principales parámetros de la sentencia DD //S1DQ4000 DD DSN=APHA. Indica las características de los registros del • La sentencia DCB.VOL=SER=SYSWK1.DATA.BLKSIZE=1370) DCB=(LRECL=______.(10.CATLG.RECFM=_____. 45 JCL y Utilerías . // SPACE=(CYL.UNIT=3390.SBAS.10).RLSE).HAQL090. // DISP=(NEW. puede ser omitida y especificar únicamente los subparámetros de ésta (LREC.RECFM=FB. archivo. // DCB=(LRECL=137. SBAS.(10.BLKSIZE=1370) LRECL=nnnn • Especifica la longitud del registro .VOL=SER=SYSWK1.RECFM=FB.RLSE).10).DELETE).CATLG. 46 JCL y Utilerías .Principales parámetros de la sentencia DD //S1DQ4000 DD DSN=APHA. // SPACE=(CYL. // DISP=(NEW.UNIT=3390. // DCB=(LRECL=137.DATA.HAQL090. Indefinida FBA – Fijo bloqueado con caracteres ASA 47 JCL y Utilerías .Principales parámetros de la sentencia DD //S1DQ4000 DD DSN=APHA.SBAS.BLKSIZE=1370) RECFM=nnnn • Indica el formato del bloqueo: F – Fija FB – Fija bloqueada V – Variable VB – Variable bloqueado U .DELETE).CATLG.RLSE).RECFM=FB.VOL=SER=SYSWK1.(10. // DCB=(LRECL=137.DATA. // DISP=(NEW. // SPACE=(CYL.10).HAQL090.UNIT=3390. VOL=SER=SYSWK1.CATLG.DATA.RLSE). // SPACE=(CYL.BLKSIZE=1370) BLKSIZE=nnnn • • Indica la longitud del bloque.RECFM=FB.DELETE).HAQL090. Si el blocksize es omitido o se le asigna el valor 0. // DCB=(LRECL=137.SBAS.(10.Principales parámetros de la sentencia DD //S1DQ4000 DD DSN=APHA. el sistema lo calcula.10). Se calcula multiplicando la longitud del registro por el número de registros contenidos en un bloque. // DISP=(NEW.UNIT=3390. En los sistemas actuales se recomienda informarlo con valor 0 (BLKSIZE=0) 48 JCL y Utilerías • . //S1DQ0001 DD DUMMY SYSOUT Indica el archivo lógico al que debe direccionarse a una clase de salida. //S1DQ0001 DD SYSOUT=X COPIES Indica el número de copias (entre 1 y 255) que se desea obtener de un listado //S1DQ0001 DD SYSOUT=X.COPIES=4 49 JCL y Utilerías . en lugar de un disco o cinta.Parámetros adicionales de la sentencia DD DUMMY Se utiliza para simular las entradas y salidas a un archivo. El programa realiza todas las funciones como si el archivo existiera. o bien.COPIES=4. //S1DQ0001 DD SYSOUT=X.COPIES=4. // OUTLIMIT=1500 50 JCL y Utilerías .DEST=RTM005 OUTLIMIT Indica el número máximo de líneas que se van a imprimir del listado. el paso termina.DEST=RTM005. a una impresora local(LOCAL). //S1DQ0001 DD SYSOUT=X. Cuando se alcanza el límite de líneas.Parámetros adicionales de la sentencia DD DEST Indica la impresora física por la que se listará el informe que se desea imprimir. ya sea a un terminal remoto (RTMnnn). 3.4 Sentencias Especiales 51 JCL y Utilerías . COB2LIB.BGA. //CREAFILE JOB (ABC).'EJEMPLO'.DISP=SHR // DD DSN=SYS1.Sentencias especiales • Algunas sentencias son utilizadas para indicar dónde se encuentran los programas o archivos que intervienen en el job.TCA.DISP=SHR 52 JCL y Utilerías .CLASS=C //JOBLIB DD DSN=MBVD.DISP=SHR // DD DSN=MBVD.NRNTLOAD.NRNTLOAD. Estas sentencias son: • JOBLIB A través de la cual se indican a nivel de JOB las librerías donde se encuentran los programas que se requieren ejecutar. Sentencias especiales STEPLIB Permite indicar a nivel de paso las librerías donde se encuentran los programas que se quieren ejecutar //P01DE01 //STEPLIB EXEC PGM=BG3C3330 DD DSN=ACCEN.COMPLIB.LOAD SYSABEND SYSDUMP Muestra los mensajes de memoria en caso de producirse un mensaje de terminación anormal (ABEND). //SYSABEND DD //SYSUDUMP DD SYSOUT=* SYSOUT=* 53 JCL y Utilerías Sentencias especiales Paso de parámetros para un programa usando SYSIN DECLARACION EN PROGRAMA *********************************************** * VARIABLES *********************************************** WORKING- STORAGE SECTION. * 01 VARIABLES-SYSIN. 05 WS-TARJETA. 10 FECHA-SISTEMA. 15 FECHA-SISTEMA-AA PIC X(2). 15 FECHA-SISTEMA-MM PIC X(2). 15 FECHA-SISTEMA-DD PIC X(2). ********************************************** * PROCEDURE DIVISION ********************************************** PROCEDURE DIVISION. 1000-RECIBE-FECHA. ACCEPT FECHA-SISTEMA FROM SYSIN. DECLARACION EN JCL //**************************************************** //* ESTE JCL ES UNA PRUEBA DE EJECUCION DE JCL //**************************************************** //PASO01 EXEC PGM=IKJEFT01 //STEPLIB DD DSN=DGDWP.BTCH.LOAD,DISP=SHR // DD DSN=DSTOP.BTCH.LOAD,DISP=SHR // DD DSN=DXAEP.BTCH.LOAD,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSTSPRT DD SYSOUT=* //SYSOUT DD SYSOUT=* //LAYDB110 DD SYSOUT=* //LOGERR DD SYSOUT=* //SYSIN DD * 980603 //SYSTSIN DD * DSN SYSTEM(DB2D) RUN PROGRAM(BG4CINT0) PLAN(BVDBGPB) 54 JCL y Utilerías 4. Códigos de retorno 55 JCL y Utilerías Códigos de Error y ABEND • Existen dos diferentes códigos de error regresados por el OS/390. adquiriendo los siguientes valores: S – Sistema U – Usuario I – Informativo nnn . Los códigos del sistema. Los códigos de retorno de un programa y códigos de retorno propios del sistema.Se refiere al tipo de Abend. están estructurados de la siguiente forma: Annn • • • Donde: A . En caso de terminar con un ABEND (Terminación anormal) el paso que se esta ejecutando realiza un bypass de los pasos restantes.Indica el número de código en hexadecimal 56 JCL y Utilerías . CR 00 04 08 12 16 Mayor a16 y Menor de 500 Ejecución exitosa Error informativo (Warning) Archivo no localizable No se encontró algún elemento necesario para la ejecución ABEND no controlado Error controlado.Códigos de retorno • • Los códigos de retorno pueden ser definidos por el propio programador Algunas veces se requiere del uso de códigos de retorno especiales para detener la ejecución de un programa por alguna condición específica. Propio del programa Descripción 57 JCL y Utilerías . Salida de un spool Display Filter View Print Options Help LINE 1-2 (2) SCROLL ===> CSR ------------------------------------------------------------------------------SDSF STATUS DISPLAY ALL CLASSES COMMAND INPUT ===> NP JOBNAME IDBEX26 JOBID OWNER PRTY QUEUE 15 EXECUTION 1 PRINT A 1603 C POS SAFF MEX3 TSU08135 IDBEX26 ASYS STATUS MEX3 IDBEX26X JOB05676 IDBEX26 58 JCL y Utilerías . JOB IDBEX26X (JOB05676) LINE 1-10 (10) COMMAND INPUT ===> SCROLL ===> CSR NP DDNAME STEPNAME PROCSTEP DSID OWNER C DEST REC-CNT PAGE JESMSGLG JES2 2 IDBEX26 X LOCAL 53 JESJCL JES2 3 IDBEX26 X LOCAL 150 JESYSMSG JES2 4 IDBEX26 X LOCAL 239 SYSOUT BG105207 105 IDBEX26 X LOCAL 26 S1DLINC0 BG105204 106 IDBEX26 X LOCAL 2 SYSTSPRT BG105204 110 IDBEX26 X LOCAL 6 SYSOUT BG105202 115 IDBEX26 X LOCAL 26 S1DLINC0 BG105201 116 IDBEX26 X LOCAL 2 SYSOUT BG105201 118 IDBEX26 X LOCAL 2 SYSTSPRT BG105201 120 IDBEX26 X LOCAL 6 59 JCL y Utilerías .Salida de un spool Display Filter View Print Options Help ------------------------------------------------------------------------------SDSF JOB DATA SET DISPLAY . 48 08.BANGOB.45 08.SORT BORRADO POR ESTAR DU JOB05676 --TIMINGS (M JOB05676 -JOBNAME STEPNAME PROCSTEP RC EXCP CONN TCB SRB JOB05676 -IDBEX26X BG105207 00 138 806 .SORT SG(SGDASD03) JOB05676 VAM0516 DATASET (MBVD.55 08.WKF.CUENTAS. 07 MAR 2002 ---JOB05676 IRR010I USERID IDBEX26 IS ASSIGNED TO THIS JOB.BG.MOVUMO.44.44.50 08. MARCH JOB05676 $HASP373 IDBEX26X STARTED .00 JOB05676 MBVD.FIX.44.45.MOVUMO.BG.FIX.46 08.44.00 .FIX.45.52 08.BANGOB.44 08.44.44.45.58 08.BG.44.44.45.PROGRESA.45.EDOCTAS.44.BG3C1052.CTASFEB BORRADO POR ESTAR DUPLIC JOB05676 -IDBEX26X BG105204 00 475 2072 .44.FIX.44.FIX.50 08.00 JOB05676 DMS2987 DATA SET CATALOGED TO SAMS:DISK PSEUDO-VOLUME ARCIVE JOB05676 DMS2987 SAMS:DISK HAS ARCHIVED MBVD.44.00 .PROGRESA.CUENTAS.44.SORT JOB05676 VAM0511 DSDD18 JOB05676 MBVD.EDOCTAS.BANGOB.44.FIX.52 08.WKF.BG.BG.49 08. JOB05676 ICH70001I IDBEX26 LAST ACCESS AT 08:35:09 ON THURSDAY.N O 08.44.PROGRESA.44.44.45 08.S Y S T E M M E X 3 -.CUENTAS.SO JOB05676 DMS3752 AUTO RESTORE REQUEST BY IDBEX26X JOB05676 DMS3752 IS PASSED TO THE SUBSYSTEM FOR DSN = MBVD.58 08.CTASFEB SG(SGDASD03) JOB05676 VAM0516 DATASET (MBVD.EDOCTAS.WKF.TIME=08.PROGRESA.50 08.58 08.SYS MEX3 JOB05676 IEF403I IDBEX26X .45 08.44 08.FIX.58 08.WKF.45 JOB05676 MBVD.44.BG.44.49 JOB05676 ---.CLASS A .FIX.44.INIT 1 .PROGRESA.PROGRESA.SORT JOB05676 VAM0511 DATASET (MBVD.52 08.PROGRESA.BG.SORT JOB05676 VAM0511 DSDD15 60 JCL y Utilerías .BG3C1052.BG.STARTED .44.MOVUMO.BG.44.CUENTAS.BANGOB.44.48 08.PROGRESA.58 08.BG3C1052.FIX.THURSDAY.BG.50 08.BG3C JOB05676 DMS2993 DATA SET SUCCESSFULLY RESTORED JOB05676 MBVD.Salida de un spool ********************************* TOP OF DATA ********************************** J E S 2 J O B L O G -.44.BG.BG.52 08.54 08.BG.SORT SG(SGDASD03) JOB05676 VAM0516 DATASET (MBVD.CTASFEB JOB05676 VAM0511 DSDD18 JOB05676 MBVD.MOVUMO.SORT JOB05676 VAM0511 DATASET (MBVD.EDOCTAS.55 08.55 08.BG3C1052.CTASFEB JOB05676 VAM0511 DATASET (MBVD.46 08. PS.? SYSOUT IEF285I IDBEX26. IEF285I MBVD.BGJC1052.JOB05676.FIX.D0000118.? SYSOUT IEF285I IDBEX26.IDBEX26X.D0000103.STEP WAS EXECUTED .FEB CATALOGED IEF285I VOL SER NOS= DSDA67.JOB05676.REPORT.JOB05676.MOVUMO.? SYSOUT IEF285I IDBEX26.IDBEX26X.BG. IEF285I IDBEX26.PROGRESA.IDBEX26X.BG.JOB05676.D0000117.COND CODE 0000 IEF285I MBVD.FEB CATALOGED IEF285I VOL SER NOS= DSDA67.IDBEX26X.EDOCTAS.D0000120.D0000116.IDBEX26X.IDBEX26X.WKF.JOB05676.BG3C1052. IEF285I IDBEX26.PS.JOB05676.0845 61 JCL y Utilerías .D0000121.JOB05676.? SYSIN IEF373I STEP/BG105201/START 2002066.? SYSOUT IEF285I IDBEX26.D0000123.? SYSOUT IEF285I IDBEX26.Salida de un spool IEF142I IDBEX26X BG105201 .SORT KEPT IEF285I VOL SER NOS= DSDD28.IDBEX26X.D0000122. IEF285I IDBEX26.IDBEX26X.SORT KEPT IEF285I VOL SER NOS= DSDD16.? SYSOUT IEF285I IDBEX26.FIX.IDBEX26X.BGJC1052.JOB05676.FIX.BANGOB.? SYSOUT IEF285I IDBEX26.? SYSOUT IEF285I IDBEX26.JOB05676.CUENTAS.D0000119. 5. Procedimientos 62 JCL y Utilerías . Procedimientos • Un procedimiento es un conjunto de sentencias que definen uno o mas pasos de trabajo. • Se utilizan cuando este grupo de sentencias son usadas con frecuencia en el mismo o distinto job. • Los procedimientos son clasificados en : In-stream Catalogados Mixtos 63 JCL y Utilerías . PROC EXEC PGM=... DSN=... PROC=CARGA PGM=..... PGM=. Son utilizados cuando un mismo proceso es realizado varias veces en el mismo job.. //PASO2 // PEND //PASO1 //ENTRADA //.. mediante las sentencias de PROC y PEND. //DIARIO //CARGA //PASO1 //CLIENTES //.. • • 64 JCL y Utilerías . //PASO2 //PASO3 JOB ..Procedimientos In-stream • Este tipo de procedimientos se definen en el mismo job... EXEC EXEC DD EXEC EXEC PGM=. Se ejecutan al ser referenciados a través de la sentencia EXEC.. DD DSN=.... ..... PGM=. DD DSN=.... //PASO2 //PASO3 JOB .... 65 JCL y Utilerías ... Comienzan con el procname y a continuación la palabra PROC Se utilizan cuando se realiza un mismo proceso en distintos jobs. //PASO2 PROC EXEC DD EXEC PGM=.Procedimientos Catalogados • Los procedimientos catalogados son aquellos que se definen y almacenan en Librerías. Se ejecutan a a través de la sentencia EXEC.. //DIARIO //PASO1 //ENTRADA //. PROCEDIMIENTO “CARGA” • • • //CARGA //PASO1 //CLIENTES //... DSN=. EXEC PGM=... EXEC EXEC PROC=CARGA PGM=. las columnas 1 y 2 son modificadas: Catalogados In Stream // // se convierten se convierten XX • ++ • Cuando la línea de codificación tiene parámetros simbólicos. Cuando el JES (Gestor de trabajos). las modificaciones son: Catalogados In Stream // // se convierten se convierten 66 X/ +/ JCL y Utilerías . inserta las líneas del procedimiento en el lugar correspondiente.Sentencias de procedimientos • Para codificar un procedimiento se siguen las mismas reglas explicadas en la codificación de un job. 6. Utilerías JCL 67 JCL y Utilerías . • Las principales utilerías usadas son: DFSORT IDCAMS IEBCOPY Organiza la información contenida en un archivo Permite tratar archivos VSAM Copia archivos particionados IEBGENER Permite copiar archivos secuenciales 68 JCL y Utilerías .Utilerías del sistema • Las utilerías permiten realizar operaciones con archivos sin tener que codificar un programa. DFSORT 69 JCL y Utilerías .1.6. • 70 JCL y Utilerías . Las funciones principales de esta utilería son: Ordenación de registros de un archivo Fusión de dos archivos en uno Copia de archivos Eliminación de registros de un archivo Reformateo de registros de un archivo Acumulación de valores de los registros de un archivo.Definición • Esta utilería es usada principalmente para llevar a cabo la organización de los datos contenidos en un archivo.DFSORT . 1)) • • Va a continuación de la sentencia EXEC...D) INCLUDE COND=(1.EQ.5. //SORTOUT DD DSN=..9.SPACE=(CYL. //SORTWKnn DD UNIT=SYSDA.CH..1.100) //SORTIN DD DSN=.CH. 71 JCL y Utilerías .8.DFSORT – Ordenación //ORDENAR EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=(1.CH. y dependiendo de la instalación será invocado como programa o procedimiento.A.C'LOPEZ') SUM FIELDS=(14.PD) OUTREC FIELDS=(1.5. El programa que ejecuta esta utilería es SORT.7. número de registros de entrada y de salida.A.100) //SORTIN DD DSN=.DFSORT – Ordenación //ORDENAR EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=(1.SPACE=(CYL. • 72 JCL y Utilerías .5.CH.7.CH...EQ. //SORTWKnn DD UNIT=SYSDA.CH.1)) • Los mensajes de salida que fueron generados en la ejecución son dejados en el archivo de SYSOUT.1.C'LOPEZ') SUM FIELDS=(14.. //SORTOUT DD DSN=.D) INCLUDE COND=(1.. Estos mensajes contienen información acerca de errores de la codificación.8.9.5.PD) OUTREC FIELDS=(1. CH. //SORTWKnn DD UNIT=SYSDA.5.1)) • SYSIN es el archivo en el que se codifica los parámetros de acuerdo con la función o funciones que se requieran realizar..D) INCLUDE COND=(1.C'LOPEZ') SUM FIELDS=(14..DFSORT – Ordenación //ORDENAR EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=(1.8. 73 JCL y Utilerías .CH.EQ.9. //SORTOUT DD DSN=.CH..SPACE=(CYL.7..1.5.100) //SORTIN DD DSN=.PD) OUTREC FIELDS=(1.A. 1)) • La sentencia SORT FIELDS se utiliza para indicar los campos por los que se desea ordenar el archivo y el orden que debe establecerse. //SORTOUT DD DSN=.5..DFSORT – Ordenación //ORDENAR EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=(1.D) INCLUDE COND=(1.EQ.SPACE=(CYL.9. 74 JCL y Utilerías .CH.100) //SORTIN DD DSN=.5.C'LOPEZ') SUM FIELDS=(14..CH.8. //SORTWKnn DD UNIT=SYSDA.7.1..A..PD) OUTREC FIELDS=(1.CH. CH.EQ...D) INCLUDE COND=(1.A.. //SORTOUT DD DSN=.5.1)) • En la primera posición se indica el comienzo del registro.100) //SORTIN DD DSN=. a partir de donde empieza el campo por el que se quiere ordenar.8.CH. //SORTWKnn DD UNIT=SYSDA.DFSORT – Ordenación //ORDENAR EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=(1..1.9.7.PD) OUTREC FIELDS=(1.SPACE=(CYL. 75 JCL y Utilerías .CH.5.C'LOPEZ') SUM FIELDS=(14. . del campo por el que se quiere ordenar. //SORTOUT DD DSN=..8.100) //SORTIN DD DSN=.D) INCLUDE COND=(1.CH. //SORTWKnn DD UNIT=SYSDA.DFSORT – Ordenación //ORDENAR EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=(1.CH.5.SPACE=(CYL.EQ.7.5.1. Debe tomarse en cuenta la longitud en caso de campos empaquetados • 76 JCL y Utilerías .PD) OUTREC FIELDS=(1..9.C'LOPEZ') SUM FIELDS=(14.CH..A.1)) • A partir de la segunda posición se indica la longitud en bytes. 5.1)) • • Se indica el formato del campo por el que se quiere ordenar.C'LOPEZ') SUM FIELDS=(14.CH.EQ.1.SPACE=(CYL.D) INCLUDE COND=(1.. //SORTWKnn DD UNIT=SYSDA.100) //SORTIN DD DSN=.5.7. es posible codificar la sentencia de la siguiente forma: //SORT FIELDS=(1.Carácter ZD .DFSORT – Ordenación //ORDENAR EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=(1.5.A.7.8.Decimal PD .9..8.CH. //SORTOUT DD DSN=.Compactado • Cuando el formato de los campos de ordenación es el mismo.D).FORMAT=CH 77 JCL y Utilerías .PD) OUTREC FIELDS=(1.CH.A... Los formatos mas utilizados son: CH . //SORTOUT DD DSN=.1.. //SORTWKnn DD UNIT=SYSDA..CH.1)) • Para la sentencia SORT FIELDS es importante indicar el tipo de ordenación.9.5.5.D) INCLUDE COND=(1.A.PD) OUTREC FIELDS=(1.7.Descendente 78 JCL y Utilerías ..EQ.SPACE=(CYL. las cuales pueden ser: A – ascendente D .CH.100) //SORTIN DD DSN=.DFSORT – Ordenación //ORDENAR EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=(1..CH.8.C'LOPEZ') SUM FIELDS=(14. EQ.CH.1)) • A través de la sentencia INCLUDE se puede realizar la selección de registros que cumplan ciertas condiciones.CH.PD) OUTREC FIELDS=(1.5.9. • 79 JCL y Utilerías ... //SORTWKnn DD UNIT=SYSDA.C'LOPEZ') SUM FIELDS=(14.A. Las sentencias de INCLUDE y OMIT no pueden ser codificadas a la vez .SPACE=(CYL.. o bien.D) INCLUDE COND=(1.1.8.. realizar lo contrario con la sentencia OMIT. //SORTOUT DD DSN=.DFSORT – Selección //ORDENAR EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=(1.CH.7.5.100) //SORTIN DD DSN=. 1.8.5. LE) y a continuación la constante de control 80 JCL y Utilerías .C'LOPEZ') SUM FIELDS=(14.. La tercera posición indica el formato del campo. En la cuarta posición se indica el operador de comparación (EQ.SPACE=(CYL.CH..D) INCLUDE COND=(1.EQ.DFSORT – Selección //ORDENAR EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=(1.100) //SORTIN DD DSN=.CH.A.NE.5. //SORTOUT DD DSN=.CH.9. La segunda posición indica la longitud del campo al que se hace referencia. //SORTWKnn DD UNIT=SYSDA..GT.7. LT. la primera posición a partir de donde empieza el campo que se quiere incluir.PD) OUTREC FIELDS=(1.1)) • • • • En la primera posición se indica el comienzo del registro. es decir.GE.. PD) OUTREC FIELDS=(1...5.yy’ +n.SPACE=(CYL.D) INCLUDE COND=(1. //SORTWKnn DD UNIT=SYSDA.8....CH...C'LOPEZ') SUM FIELDS=(14...n donde donde donde x es un caracter EBCDIC y es un par de dígitos hexadecimales n es un dígito decimal 81 JCL y Utilerías .EQ. //SORTOUT DD DSN=.5.1)) • Para el uso de constantes se codificará de la siguiente forma: C’x.7..DFSORT – Selección //ORDENAR EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=(1.100) //SORTIN DD DSN=.A.9.1.CH.x’ X’yy.CH. OR.CH.EQ.5.SPACE=(CYL.PD) OUTREC FIELDS=(1.7.DFSORT – Selección //ORDENAR EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=(1..5.D) INCLUDE COND=(1. 1. 82 JCL y Utilerías ..5.CH..C'PEREZ') SUM FIELDS=(14.A.C'LOPEZ'.100) //SORTIN DD DSN=.EQ.8.CH.9. separadas por comas.1.1)) • Si se desean poner varias condiciones. //SORTOUT DD DSN=.CH. //SORTWKnn DD UNIT=SYSDA.. se separan con operadores lógicos AND y OR. La primera posición indica el comienzo de campo a sumar y la segunda la longitud de dicho campo.1)) • • La sentencia SUM permite sumar los valores de un campo...100) //SORTIN DD DSN=.CH.A. //SORTOUT DD DSN=.8.EQ.9.SPACE=(CYL.C'LOPEZ') SUM FIELDS=(14.1.PD) OUTREC FIELDS=(1. 83 JCL y Utilerías • • ..7.5.5. El resultado de la suma es guardado en un registro y el resto son borrados. continuada por el formato. Los campos a sumar deben ser numéricos.CH.. //SORTWKnn DD UNIT=SYSDA.D) INCLUDE COND=(1. empaquetados o decimales.CH.DFSORT – Suma //ORDENAR EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=(1. DFSORT – Suma • Cuando se desean eliminar los registros duplicados que tienen los mismos campos de control iguales. se utiliza lo siguiente: SUM FIELDS=NONE 84 JCL y Utilerías . CH.C'LOPEZ') SUM FIELDS=(14.CH.1.1)) • A través de la sentencia OUTREC. //SORTOUT DD DSN=.EQ.5. Se debe codificar la localización y longitud de los campos que van a aparecer en el registro de salida.A.8.. //SORTWKnn DD UNIT=SYSDA. • 85 JCL y Utilerías .5.. El resto de campos no especificados son eliminados.PD) OUTREC FIELDS=(1..7.100) //SORTIN DD DSN=. se puede realizar el reformateo de registros después de ser ordenados.9.D) INCLUDE COND=(1..SPACE=(CYL.DFSORT – Reformateo de datos //ORDENAR EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=(1.CH. nnX) Donde nn X Por ejemplo: 20X 10X es el número de caracteres a insertar indicador de caracter en blanco inserta 20 caracteres blancos antes del campo inserta 10 caracteres blancos después del campo 86 JCL y Utilerías .DFSORT – Reformateo de datos • La sentencia OUTREC permite la inserción o borrado de campos en blanco en el registro.100.1. OUTREC FIELDS=(nnX. SUM. INREC FIELDS=(nnX.nnX) • Si se realizan INREC y SUM a la vez.DFSORT – Reformateo de datos • La sentencia INREC tiene la misma función que la sentencia OUTREC. OUTREC y después de INCLUDE y OMIT. La sentencia INREC se procesa antes de SORT. • 87 JCL y Utilerías . En cambio en OUTREC se procesa después de realizar la suma. la suma se realiza sobre los registros ya formateados.100.1. con la diferencia que realiza el reformateo antes de ser ordenados. .CH. Debe codificarse con DD.PD) OUTREC FIELDS=(1.A.1.5.C'LOPEZ') SUM FIELDS=(14..7..CH. //SORTOUT DD DSN=. //SORTWKnn DD UNIT=SYSDA.EQ.9.CH.1)) • • SORTIN define el archivo de entrada que se desea ordenar.DFSORT – SORTIN //ORDENAR EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=(1.. con el nombre de SORTIN 88 JCL y Utilerías .SPACE=(CYL.8.100) //SORTIN DD DSN=.5.D) INCLUDE COND=(1. SPACE=(CYL.A.8.C'LOPEZ') SUM FIELDS=(14...D) INCLUDE COND=(1.PD) OUTREC FIELDS=(1.1)) • SORTOUT define el archivo de salida en el que se desea guardar el archivo ya ordenado y reformateado.7. Debe codificarse con DD.. //SORTWKnn DD UNIT=SYSDA. con el nombre de SORTOUT.5.1.9.CH.EQ.100) //SORTIN DD DSN=.CH.5.DFSORT – SORTOUT //ORDENAR EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=(1. • 89 JCL y Utilerías . //SORTOUT DD DSN=..CH. Se deben definir como archivos temporales sin longitud de registro.C'LOPEZ') SUM FIELDS=(14.CH.5.A..9.CH.1.CH.D) INCLUDE COND=(1.1)) • La sentencia SORTWKnn. son utilizadas como áreas de trabajo temporales donde se guardan los registros a ordenar.DFSORT – Áreas de trabajo //ORDENAR EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=(1. //SORTOUT DD DSN=.SPACE=(CYL.PD) OUTREC FIELDS=(1.8.5... //SORTWKnn DD UNIT=SYSDA. Se pueden codificar desde SORTWK01 hasta SORTWK16 • • 90 JCL y Utilerías .EQ.100) //SORTIN DD DSN=.7.. DFSORT – Merge //FUSION EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SYSIN DD * MERGE FIELDS=(1. //SORTOUT DD DSN=..EQ.CH.8. Pueden fusionarse hasta 16 archivos a la vez Los archivos deben tener el mismo formato y estar ordenados por los mismos campos de control.D) INCLUDE COND=(1.7...5..CH.5. No puede utilizarse la sentencia SORT 91 JCL y Utilerías .CH.A.PD) OUTREC FIELDS=(1.9.100) //SORTINnn DD DSN=. • • • • La sentencia MERGE es utilizada para fusionar los registros ya ordenados de varios archivos.C'LOPEZ') SUM FIELDS=(14. ..5. • La sentencia COPY. en este caso 92 JCL y Utilerías . //SORTOUT DD DSN=..GT.CH) OUTREC FIELDS=(1..CH.DFSORT – Copy //FUSION EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SYSIN DD * INCLUDE COND=(1.6.5.100) OPTION COPY //SORTIN DD DSN=. es utilizada para copiar datos de un archivo a otro sin realizar alguna ordenación o fusión. • No se puede usar la sentencia SUM. 2. IDCAMS 93 JCL y Utilerías .6. Definición El IDCAMS es una utilería para gestionar archivos VSAM (Virtual Storage Access Method). • • Sus funciones principales son: Definir y borrar un archivo VSAM Copiar de un archivo a otro Construir índices alternativos Listar catálogos Imprimir archivos Transferir archivos de un sistema a otro 94 JCL y Utilerías .IDCAMS . aunque también puede ser usada para archivos secuenciales. 95 JCL y Utilerías .IDCAMS .Definición Un VSAM es un método de acceso a los datos almacenados en un dispositivo de acceso directo • • Se llaman archivos VSAM aquellos que son accedidos de acuerdo con lo descrito anteriormente. Son los más usados. RRDS Los registros se almacenan en el orden dado por un número de secuencia.IDCAMS .Tipos de VSAM • Los archivos VSAM pueden clasificarse de la siguiente forma: ESDS Los registros son almacenados y recuperados en el mismo orden en el que se graban KSDS Los registros se recuperan en el orden de un campo definido como clave. 96 JCL y Utilerías . pero no pueden grabarse en cinta 97 JCL y Utilerías .Archivos ESDS Los archivos ESDS (Entry Sequenced Data Storage) tienen las siguientes características: No tienen índices ni claves • Los registros se añaden al final del archivo Sólo pueden ser accedidos en forma secuencial Son similares a los archivos secuenciales.IDCAMS . para identificar el registro.IDCAMS .Archivos KSDS Los archivos KSDS (Key Sequenced Data Storage) tienen las siguientes características: Necesitan una clave. • La clave se utiliza para insertar el registro en el archivo y recuperarlo después. que debe ser única. Admite claves alternativas (secundarias). no únicas Admite acceso directo (por clave) o secuencial 98 JCL y Utilerías . Este número puede ser asignado por el programa del usuario o por el sistema. Los registros se añaden según un número asignado de 1 a n. siendo n el número máximo de registros del archivo.Archivos RRDS Los archivos RRDS (Relative Record Data Storage) tienen las siguientes características: No tienen índices ni claves. • 99 JCL y Utilerías . Admite acceso directo (por número) o secuencial.IDCAMS . .IDCAMS .. .Codificación //stepname //SYSPRINT //SYSIN . /* EXEC PGM=IDCAMS DD SYSOUT=* DD * • • • Debe codificarse después de la sentencia EXEC como PGM=IDCAMS En SYSPRINT se encuentran los mensajes de salida del programa SYSIN muestra la codificación de los mandatos 100 JCL y Utilerías ... Creación de un archivo VSAM //DEFINIR //SYSPRINT //SYSIN DEFINE EXEC PGM=IDCAMS DD SYSOUT=* DD * CLUSTER(NAME(ACCEN.EMPL.MASTER.EMPL)– REC(500 50)RECSZ(25 50)KEYS(10 0)VOLUME(DIR003)SHR(2 3)INDEXED DATA(NAME(ACCEN.INDEX)) /* • En algunas instalaciones la definición de archivos VSAM es realizada por el departamento de administración de bases de datos 101 JCL y Utilerías .DATA) – INDEX(NAME(ACCEN.IDCAMS .MASTER.EMPL.MASTER. MASTER.MASTER. se encuentra formado por dos componentes: uno de los índices (INDEX) y otro los datos (DATA) Los demás tipos de archivos sólo están formados por datos (DATA) 102 JCL y Utilerías .IDCAMS .EMPL.Creación de un archivo VSAM //DEFINIR //SYSPRINT //SYSIN DEFINE EXEC PGM=IDCAMS DD SYSOUT=* DD * CLUSTER(NAME(ACCEN.DATA) – INDEX(NAME(ACCEN.EMPL.MASTER.INDEX)) /* • • • El archivo es definido como un Cluster (DEFINE CLUSTER) Un CLUSTER en archivos KSDS.EMPL)– REC(500 50)RECSZ(25 50)KEYS(10 0)VOLUME(DIR003)SHR(2 3)INDEXED DATA(NAME(ACCEN. EMPL.MASTER.MASTER.IDCAMS . 103 JCL y Utilerías .EMPL)– REC(500 50)RECSZ(25 50)KEYS(10 0)VOLUME(DIR003)SHR(2 3)INDEXED DATA(NAME(ACCEN.EMPL.INDEX)) /* • El parámetro NAME identifica al archivo en el catálogo.MASTER.DATA) – INDEX(NAME(ACCEN.Creación de un archivo VSAM //DEFINIR //SYSPRINT //SYSIN DEFINE EXEC PGM=IDCAMS DD SYSOUT=* DD * CLUSTER(NAME(ACCEN. DATA) – INDEX(NAME(ACCEN.EMPL.INDEX)) /* • • El parámetro REC indica el espacio requerido.MASTER. el cual puede ser especificado en número de registros.Creación de un archivo VSAM //DEFINIR //SYSPRINT //SYSIN DEFINE EXEC PGM=IDCAMS DD SYSOUT=* DD * CLUSTER(NAME(ACCEN. tracks ó cilindros.MASTER.MASTER. 104 JCL y Utilerías .EMPL)– REC(500 50)RECSZ(25 50)KEYS(10 0)VOLUME(DIR003)SHR(2 3)INDEXED DATA(NAME(ACCEN. El primer subparámetro indica la extensión primaria al crear el archivo y el segundo subparámetro indica la extensión secundaria a incrementar.IDCAMS .EMPL. MASTER.MASTER.INDEX)) /* • • El parámetro RECZ indica el tamaño del registro.EMPL. 105 JCL y Utilerías .DATA) – INDEX(NAME(ACCEN.MASTER.EMPL)– REC(500 50)RECSZ(25 50)KEYS(10 0)VOLUME(DIR003)SHR(2 3)INDEXED DATA(NAME(ACCEN.IDCAMS . El primer subparámetro indica el tamaño medio en bytes de los registros y el segundo subparámetro indica el tamaño máximo en bytes de los registros.Creación de un archivo VSAM //DEFINIR //SYSPRINT //SYSIN DEFINE EXEC PGM=IDCAMS DD SYSOUT=* DD * CLUSTER(NAME(ACCEN.EMPL. MASTER. El primer subparámetro indica el tamaño en bytes de la clave y el segundo subparámetro la posición relativa a partir del comienzo del registro.Creación de un archivo VSAM //DEFINIR //SYSPRINT //SYSIN DEFINE EXEC PGM=IDCAMS DD SYSOUT=* DD * CLUSTER(NAME(ACCEN.IDCAMS .EMPL)– REC(500 50)RECSZ(25 50)KEYS(10 0)VOLUME(DIR003)SHR(2 3)INDEXED DATA(NAME(ACCEN.MASTER.EMPL.MASTER. La primera posición se codifica como 0.DATA) – INDEX(NAME(ACCEN.INDEX)) /* • • • KEYS define la clave de acceso al archivo. 106 JCL y Utilerías .EMPL. 107 JCL y Utilerías .EMPL.MASTER.MASTER.Creación de un archivo VSAM //DEFINIR //SYSPRINT //SYSIN DEFINE EXEC PGM=IDCAMS DD SYSOUT=* DD * CLUSTER(NAME(ACCEN.IDCAMS .INDEX)) /* • El parámetro VOLUME especifica el nombre del disco en el que se va a generar el archivo.MASTER.EMPL.EMPL)– REC(500 50)RECSZ(25 50)KEYS(10 0)VOLUME(DIR003)SHR(2 3)INDEXED DATA(NAME(ACCEN.DATA) – INDEX(NAME(ACCEN. MASTER.MASTER. El primer subparámetro indica el nivel de acceso al archivo por una sola computadora y el segundo se refiere al nivel de acceso en caso de sean varias computadoras conectadas a través de una red.INDEX)) /* • • El parámetro SHR indica las opciones activas.MASTER. 108 JCL y Utilerías .Creación de un archivo VSAM //DEFINIR //SYSPRINT //SYSIN DEFINE EXEC PGM=IDCAMS DD SYSOUT=* DD * CLUSTER(NAME(ACCEN.DATA) – INDEX(NAME(ACCEN.EMPL. en caso de que el archivo se encuentre compartido.EMPL.IDCAMS .EMPL)– REC(500 50)RECSZ(25 50)KEYS(10 0)VOLUME(DIR003)SHR(2 3)INDEXED DATA(NAME(ACCEN. Creación de un archivo VSAM //DEFINIR //SYSPRINT //SYSIN DEFINE EXEC PGM=IDCAMS DD SYSOUT=* DD * CLUSTER(NAME(ACCEN.MASTER.EMPL. 109 JCL y Utilerías .MASTER.EMPL.INDEX)) /* • • El parámetro INDEXED indica que el archivo a crear es un KSDS.EMPL)– REC(500 50)RECSZ(25 50)KEYS(10 0)VOLUME(DIR003)SHR(2 3)INDEXED DATA(NAME(ACCEN.DATA) – INDEX(NAME(ACCEN. Si este parámetro no es codificado se asume INDEXED.MASTER.IDCAMS . IDCAMS .INDEX)) /* • Indica el nombre del archivo donde se almacenaran los datos del archivo.DATA) – INDEX(NAME(ACCEN.MASTER. 110 JCL y Utilerías .EMPL.Creación de un archivo VSAM //DEFINIR //SYSPRINT //SYSIN DEFINE EXEC PGM=IDCAMS DD SYSOUT=* DD * CLUSTER(NAME(ACCEN.EMPL.MASTER.EMPL)– REC(500 50)RECSZ(25 50)KEYS(10 0)VOLUME(DIR003)SHR(2 3)INDEXED DATA(NAME(ACCEN.MASTER. 111 JCL y Utilerías .EMPL)– REC(500 50)RECSZ(25 50)KEYS(10 0)VOLUME(DIR003)SHR(2 3)INDEXED DATA(NAME(ACCEN.DATA) – INDEX(NAME(ACCEN.EMPL.INDEX)) /* • Este parámetro se utiliza para definir el nombre del índice del archivo.IDCAMS .MASTER.MASTER.MASTER.Creación de un archivo VSAM //DEFINIR //SYSPRINT //SYSIN DEFINE EXEC PGM=IDCAMS DD SYSOUT=* DD * CLUSTER(NAME(ACCEN.EMPL. EMPL • • El parámetro DELETE permite borrar archivos VSAM.MASTER. Al borrar el CLUSTER se eliminan también el DATA y el INDEX que se encuentran asociados al archivo.IDCAMS . Esta sintaxis también puede ser usada para el borrado de archivos secuenciales o particionados • 112 JCL y Utilerías .Borrado de un archivo VSAM //BORRADO //SYSPRINT //SYSIN EXEC PGM=IDCAMS DD SYSOUT=* DD * DELETE ACCEN. DD * REPRO INFILE(file1) OUTFILE(file2) SKIP(nnn) COUNT(nnnn) - /* • El parámetro REPRO permite: Copiar de VSAM a VSAM Copiar de secuencial a secuencial Convertir de secuencial a VSAM 113 JCL y Utilerías . DD DSN=.Copia de un archivo VSAM //DEFINIR //SYSPRINT //file1 //file2 //SYSIN EXEC PGM=IDCAMS DD SYSOUT=* DD DSN=.IDCAMS ..... 114 JCL y Utilerías . DD DSN=.. DD * REPRO INFILE (file1) OUTFILE(file2) SKIP(nnn) COUNT(nnnn) - /* • Los parámetros INFILE y OUTFILE especifican los archivos de entrada /salida..Copia de un archivo VSAM //DEFINIR //SYSPRINT //file1 //file2 //SYSIN EXEC PGM=IDCAMS DD SYSOUT=* DD DSN=.IDCAMS ... IDCAMS .Copia de un archivo VSAM //DEFINIR //SYSPRINT //ARCHIVO1 //ARCHIVO2 //SYSIN EXEC PGM=IDCAMS DD SYSOUT=* DD DSN=. FROMKEY ('LOPEZ 115 • ') JCL y Utilerías . el cual indica la clave inicial a partir de la cual se quiere copiar.. Otra opción es utilizar en el caso de estos archivos el parámetro FROMKEY. DD * REPRO INFILE (ARCHIVO1) OUTFILE(ARCHIVO2) SKIP(100) COUNT(1500) - /* • El parámetro SKIP es opcional y es usado cuando se quiere indicar el número de registros que deben “saltarse” antes de comenzar la copia... DD DSN=.. . DD * REPRO INFILE (ARCHIVO1) OUTFILE(ARCHIVO2) SKIP(100) COUNT(1500) - /* • • El parámetro COUNT indica el número de registros que quieren copiarse. En vez de este parámetro puede usarse TOKEY. TOKEY ('LOPEZ99999') 116 JCL y Utilerías ..Copia de un archivo VSAM //DEFINIR //SYSPRINT //ARCHIVO1 //ARCHIVO2 //SYSIN EXEC PGM=IDCAMS DD SYSOUT=* DD DSN=. DD DSN=. en el cual se puede indicar la clave final.IDCAMS ... Impresión de un archivo VSAM //DEFINIR //SYSPRINT //namefile //SYSIN EXEC DD DD DD PRINT CHAR PGM=IDCAMS SYSOUT=* DSN=. * INFILE(namefile) FROMKEY('LOPEZ ') /* • • • El parámetro PRINT permite imprimir tanto archivos VSAM como secuenciales.IDCAMS .. El formato del listado puede ser de tres tipos: CHAR Caracteres HEX Hexadecimal DUMP caracter-Hexadecimal 117 JCL y Utilerías .. Para limitar el listado se utilizan los mismos parámetros que en REPRO. IEBCOPY 118 JCL y Utilerías .3.6. principalmente particionados.IEBCOPY .Definición El IEBCOPY es una utilería que permite copiar archivos. Las funciones principales que tiene asociadas esta utilería son: Copiar miembros de un archivo particionado Copiar un archivo particionado Sobre otro particionado Sobre un secuencial Reemplazar miembros de un particionado. • • 119 JCL y Utilerías . .. DSN=.IEBCOPY . En SYSPRINT se encuentran los mensajes de salida del programa... 120 JCL y Utilerías • • . /* PGM=IEBCOPY SYSOUT=* DSN=..Codificación //stepname EXEC //SYSPRINT DD //namefile1 DD //namefile2 DD //SYSIN DD . SYSIN muestra la codificación de los mandatos. * • • • Debe codificarse después de la sentencia EXEC como PGM=IEBCOPY namefile1 es el archivo de entrada donde se encuentran los datos a ser copiados namefile2 es el archivo de salida donde se guardarán los datos que fueron copiados.. R).DISP=SHR //SALIDA DD DSN=ACCEN.Copia de archivos particionados //COPIAR EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //ENTRADA DD DSN=ACCEN.item4) • OUTDD indica el nombre del archivo de salida donde se van a copiar los miembros.itemn). (item3.item2. INDD indica el nombre del archivo de entrada donde se encuentran los miembros.DISP=SHR //SYSOUT1 DD * //SYSIN DD * COPY OUTDD=SALIDA.LIB1.FUENTES. 121 JCL y Utilerías • • .LIB2.IEBCOPY .FUENTES. Sólo puede especificarse un archivo de entrada y uno de salida.INDD=ENTRADA SELECT MEMBER=((item1. IEBCOPY - Copia de archivos particionados //COPIAR EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //ENTRADA DD DSN=ACCEN.LIB1.FUENTES,DISP=SHR //SALIDA DD DSN=ACCEN.LIB2.FUENTES,DISP=SHR //SYSOUT1 DD * //SYSIN DD * COPY OUTDD=SALIDA,INDD=ENTRADA SELECT MEMBER=((item1,R),item2, (item3,newname),item4) • • • • • La sentencia SELECT permite indicar los miembros a ser copiados. Esta función permite copiar, reemplazar o renombrar miembros Item1,item2 indican los nombres de los miembros a copiar El subparámetro R, indica que el miembro será reemplazado con el mismo nombre en la librería de salida. El newname, es utilizado en caso de querer copiar un miembro con nombre diferente al original en la librería de salida. 122 JCL y Utilerías 6.4. IEBGENER 123 JCL y Utilerías IEBGENER- Definición El IEBGENER es una utilería orientada al tratamiento de archivos secuenciales, pero también puede ser usada para archivos particionados. • • Las funciones principales que tiene asociadas esta utilería son: Crear una copia de un archivo secuencial o crear una copia de un miembro en un archivo particionado Crear un archivo particionado o un miembro a partir de un Cambiar el blocaje de un archivo secuencial 124 JCL y Utilerías . DD DSN=. SYSUT2 define al archivo de salida que puede ser un secuencial. ya que para esta utilería no tiene sentencias de control. particionado o un elemento de un archivo particionado.IEBGENER . 125 JCL y Utilerías • • .Codificación //stepname //SYSPRINT //SYSUT1 //SYSUT2 //SYSIN /* EXEC PGM=IEBGENER DD SYSOUT=* DD DSN=... DD DUMMY • • • Debe codificarse después de la sentencia EXEC como PGM=IEBGENER SYSUT1 define al archivo de entrada que puede ser secuencial o particionado. En SYSPRINT se encuentran los mensajes de ejecución programa SYSIN es DUMMY.. RLSE).SBAS.10).ORIGINAL.RECFM=FB.DISP=SHR DSN=APHA.VOL=SER=SYSWK1. DCB=(LRECL=137.COPIA(member).SBAS.UNIT=3390.SBAS.SBAS.DELETE).CATLG.DISP=OLD 126 JCL y Utilerías .BLKSIZE=1370) DD DUMMY • Cuando se trata de copiar un member de un archivo particionado a otro.IEBGENER .COPIA. la sintaxis de SYSUT1 y SYSUT2 cambia: //SYSUT1 //SYSUT2 DD DD DSN=APHA. DISP=(NEW.DISP=SHR DD DSN=APHA.Copia de archivos secuenciales //stepname //SYSPRINT //SYSUT1 //SYSUT2 // // // //SYSIN /* EXEC PGM=IEBGENER DD SYSOUT=* DD DSN=APHA. SPACE=(CYL.ORIGINAL(member).(10. Generational Data Group (GDG) 127 JCL y Utilerías .7. 128 JCL y Utilerías . cronológicamente o funcionalmente.Generational Data Group (GDG) – Definición • Un Generational Data Group(GDG). es un grupo de archivos relacionados • Cada archivo que depende de un GDG es llamado generación. -1. etc.G0003V00 SALDOS.-4. se deberá hacer referencia a las versiones anteriores con –n. El máximo de generaciones permitidas es de 9999.CTAS. y a la última generación se le asignará el valor 0. con un límite de 3 versiones: Nombre lógico SALDOS. • 129 JCL y Utilerías .Generational Data Group (GDG) – Definición • Ejemplo de un GDG. es decir.G0001V00 Referencia Última generación Penúltima generación Ante-penúltima generación • Dependiendo del numero de versiones que sean definidas para el GDG.G0002V00 SALDOS.CTAS(-1) SALDOS.CTAS(-2) Nombre Físico SALDOS.-2.CTAS.CTAS(0) SALDOS.CTAS.-3. name.gdg) LIMIT(n) [EMPTY/NOEMPTY] [SCRATCH/NOSCRATCH]) • • • • • NAME. Cuando llega al límite de generaciones. Asigna el número máximo de generaciones (n). todas son descatalogadas. Al llegar al límite de generaciones. se descataloga la más antigua. Define el nombre del GDG.Generational Data Group (GDG) – Creación de un GDG //GDG EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * DEFINE GDG (NAME(apl. NOEMPTY. Indica que al descatalogar una generación sea o no borrada definitivamente del volumen. 130 JCL y Utilerías . LIMIT. SCRATCH ó NOSCRATCH. EMPTY. SPACE=(TRK. es posible utilizar un archivo DUMMY.(5.name.CATLG.DELETE).UNIT=3390. Depende de la instalación la creación de la primera generación.gdg(+1).5)) DD * • • Para crear la primera generación vacía.Generational Data Group (GDG) – Adición de la primera generación //CREAGDG //SYSPRINT //GDGDD1 // // //SYSIN EXEC PGM=IEFBR14 DD SYSOUT=* DD DSN=apl. 131 JCL y Utilerías . DISP=(NEW. gdg GDG 132 JCL y Utilerías .name.Generational Data Group (GDG) – Borrado de un GDG //BORRAGDG EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * DELETE apl. Prácticas 133 JCL y Utilerías . Acceder a la librería ACCEN. 3. Codificar las instrucciones de la sentencia JOB necesarias para la ejecución del miembro JCL1. hasta que la ejecución del job resulte exitosa. En caso de errores efectuar las correcciones necesarias. Instrucciones. 134 JCL y Utilerías . 1. Sentencia JOB Objetivo.Práctica 1.JCLLIB y editar el miembro JCL1 2. Ejecutar el job. Declarar los parámetros necesarios para la definición de un JOB.Z. de acuerdo con las siguientes indicaciones: El nombre del jcl deberá ser : JCL1 Cuenta asociada : ACCENT Usuario el mismo de la cuenta asociada Clase de ejecución y mensajes : X Memoria : 1024K. Z. El archivo que contiene los datos de entrada para el programa es: ACCEN.PBM. 1.JCLLIB. Definición de DD Objetivo.COBOL. 2. En caso de errores efectuar las correcciones necesarias.INTTEST 4. 3. Ejecutar el job. Definir los archivos de entrada y salida necesarios para la ejecución de un programa. Instrucciones.Z. un jcl con el nombre de JCL2. el cual se encuentra en la librería ACCEN.Práctica 2. Generar en la librería ACCEN. hasta que la ejecución del job resulte exitosa 135 JCL y Utilerías . Codificar las instrucciones necesarias para ejecutar el programa PGMTEST. INTTEST 4. Generar en la librería ACCEN. un jcl con el nombre de PROCCAT.Z. Ejecutar el job. Generar en la librería ACCEN. el cual se encuentra en la librería ACCEN. 2. el cual contenga las instrucciones necesarias para ejecutar el procedimiento anterior. El archivo que contiene los datos de entrada para el programa es: ACCEN. Codificar las instrucciones necesarias para ejecutar el programa PGMTEST a través de un procedimiento catalogado. Generar un proc y el JCL de ejecución correspondiente Instrucciones.Práctica 3.PBM. 1.Z.JCLLIB.Z. Procedimientos catalogados Objetivo.COBOL 3. un miembro nuevo con el nombre de JCL3. En caso de errores efectuar las correcciones necesarias. 136 JCL y Utilerías . 5.JCLLIB. hasta que la ejecución del job resulte exitosa. COBOL. Codificar las instrucciones necesarias para generar el proceso in-stream PROCIN que ejecute el programa PGMTEST.Z. El archivo que contiene los datos de entrada para el programa es: ACCEN. 3.Z. En caso de errores efectuar las correcciones necesarias.INTTEST 4.JCLLIB. Ejecutar el job. Generar un proceso in-stream. Instrucciones. 1. Procedimientos in-stream Objetivo. Generar en la librería ACCEN.PBM. hasta que la ejecución del job resulte exitosa 137 JCL y Utilerías .Práctica 4. el cual se encuentra en la librería ACCEN. un jcl con el nombre de JCL4. 2. Seleccionar sólo aquellos registros que tengan fecha de inicio 15/07/01. Instrucciones. De acuerdo con la estructura del archivo de salida. nombre. Partiendo del miembro JCL4. De grupo y fecha de inicio. éste será usado como archivo de entrada para ésta práctica para lo cual se requiere de adicionar los siguientes pasos: Selección de la información Ordenar por núm. fecha terminación. de grupo. Sort Objetivo. 138 JCL y Utilerías . generado por el programa PGMTEST en las prácticas anteriores. generar uno nuevo con el nombre de JCL5. fecha de inicio.Práctica 5. 1. Generar un jcl en el cual se utilicen las principales funciones de sort. 2. Dejar en el archivo de salida sólo las columnas pertenecientes al núm. importes de cuota mensual e inscripción. Ejecutar el job. Número de Grupo Nombre del Curso Fecha de inicio Fecha de terminación Nombre Inicial del nombre Primer apellido Número de alumno Cuota mensual Cuota de inscripción Filler PIC X(04) PIC X(25) PIC X(08) PIC X(08) PIC X(15) PIC X(01) PIC X(15) PIC X(10) PIC 9(04)V99 PIC 9(04)V99 PIC X(36) Estructura del Archivo de entrada inicial 139 JCL y Utilerías . Utilizar como campo de ordenamiento el número de grupo. En caso de errores efectuar las correcciones necesarias. fecha de baja e importes. realizar la suma de los campos de importe seleccionando sólo las columnas de grupo. Sort (Cont. fecha de ingreso.Práctica 5.) Con el archivo obtenido. hasta que la ejecución del job resulte exitosa. Codificar el la librería ACCEN. un nuevo miembro llamado JCL6. 1.Z.JCLLIB. el cual contenga lo siguiente: Generación de la estructura de un GDG con las siguientes características: Límite de versiones: 3 Descatalogue la generación más antigua en caso de llegar al límite de versiones No borre las generaciones descatalogadas Crear la primera generación en vacío con ayuda del programa IEFBR14. Instrucciones. Generational Data Group Objetivo.Práctica 6. Copiar el contenido del archivo de salida generado en el programa PGMTEST del JCL2 a la siguiente generación (2) 140 JCL y Utilerías . Generar un jcl en el cual se muestre el manejo de GDG´s. ) Borrar del archivo de salida generado por el programa PGMTEST en el JCL2 los últimos tres renglones. Generational Data Group (Cont. Ejecutar el job a partir de este paso para crear la siguiente generación (3). Copiar el contenido de la última generación (3) a la siguiente generación (4). Ejecutar el job a partir de este paso Copiar el contenido de la versión más antigua a la siguiente versión (5).Práctica 6. 141 JCL y Utilerías .