Especifique DD DUMMY en el JCL de reemplazo para los que no se reemplazan.

//STEP1.IN1	DD DUMMY
// 		DD DSN=MYDATA.URMI.IN2,DISP=SHR
//		DD DUMMY

El siguiente fragmento de código muestra la referencia de cada versión de GDG:

Step1 input: (0)
Step1 output: (+1)
Step2 input: (+1)
Step2 output: (+2)

Cuando el archivo se utiliza como entrada en IDCAMS, el trabajo se completa con una advertencia (código de retorno 4) si el archivo está vacío.

Especifique RESTART = STEP2 en la instrucción JOB. E incluya la construcción IF-THEN-ELSE como se muestra a continuación

//URMIIF JOB 1, CLASS=6, MSGCLASS=0, NOTIFY = &SYSUID,RESTART=STEP2
//*
//STEP1   EXEC
//STEP2   EXEC
//IF1     IF (STEP2.RC = 0 & STEP2.RC <> 0) THEN
//STEP3      EXEC
//STEP4      EXEC
//ENDIF

Los datos se pueden pasar a un programa COBOL a través de archivos, parámetro PARM y declaración SYSIN DD.

La parte variable del JCL se puede especificar utilizando parámetros simbólicos en el TRABAJO y las partes estáticas se pueden especificar en el PROC. Por ejemplo, si el nombre del archivo cambia para cada TRABAJO que usa PROC, entonces la parte variable del nombre del archivo se puede codificar en JCL usando un parámetro simbólico.

//IN1 DD DSN = &ID.URMI.IN1, DISP = SHR  //*Coded in PROC
ID=MYDATA1 is coded in JOB1, ID = MYDATA2 is coded in JOB2 and so on

Utilice IEBGENER y pase el archivo existente en SYSUT1. Pase el nuevo archivo en SYSUT2 y mencione DCB = *. SYSUT1 para obtener el mismo DCB que el del conjunto de datos SYSUT1.

Utilizando los parámetros seriales UNIT y VOL en la declaración DD del conjunto de datos.

Las declaraciones de DD ficticias, las especificaciones de la tarjeta de datos, PROC, JOB, declaraciones PROC no se pueden codificar dentro de un miembro INCLUDE. Una instrucción INLCUDE se puede codificar dentro de un miembro INCLUDE y se pueden realizar más anidamientos hasta en 15 niveles.

Código COND = SOLO en PASO 2.

Usando el parámetro RD en la instrucción JOB / EXEC. Los códigos de finalización anormal para los que es necesario realizar RESTART se pueden mencionar en el miembro SCHEDxx de la biblioteca parmlib del sistema IBM.

Usando IEBEDIT en un JCL, se pueden ejecutar pasos seleccionados de otro JCL. En el JCL anterior, el JCL de entrada con 10 pasos está presente en MYDATA.URMI.JOBS (INPUTJOB). STEP3 y STEP7 se especifican en SYSIN de IEBEDIT, para que se ejecuten esos dos pasos.

//STEP001  EXEC PGM=IEBEDIT                                   
//SYSUT1   DD  DSN=MYDATA.URMI.JOBS(INPUTJOB),DISP=SHR    
//SYSUT2   DD  SYSOUT=(*,INTRDR)                              
//SYSPRINT DD  SYSOUT=*                                       
//SYSIN    DD  *                                              
  EDIT TYPE=INCLUDE,STEPNAME=(STEP3,STEP7)                        
/*

Cuando se define con DISP = (NEW, KEEP) en el momento de la creación. En el caso de un GDG, la generación menos reciente no se cataloga si la base de GDG se ha definido con el parámetro NOEMPTY cuando se alcanza el LÍMITE. Todas las generaciones no están catalogadas cuando se codifican con EMPTY.

La base de GDG se puede crear usando la utilidad IDCAMS. VACÍO descataloga todas las generaciones cuando se alcanza el LÍMITE. SCRATCH elimina físicamente la generación, cuando no está catalogada. (LIMIT especifica el número máximo de versiones que la base de GDG puede contener).

En el programa SORT / ICETOOL, se puede usar SKIPREC = n, que omite los primeros n registros y luego copia el resto en el archivo de salida.

//JSTEP020 EXEC PGM=ICETOOL                                          
//TOOLMSG  DD SYSOUT = *                                               
//DFSMSG   DD SYSOUT = *                                               
//IN1      DD DSN = MYDATA.URMI.SKIPREC,DISP=SHR    
//OUT1	   DD SYSOUT = *
//TOOLIN   DD *                                                      
  COPY FROM(IN1) TO(OUT1) USING(CTL1)                                  
/*
//CTL1CNTL DD *                        
  SORT FIELDS = COPY
  SKIPREC = 1000               
/*

STARTREC y ENDREC restringen la LECTURA del archivo de entrada en el número de registro especificado.

//URMISPLT EXEC PGM = SORT 
//SORTIN   DD DSN=MYDATA.URMI.FILEIN,DISP=SHR 
//SORTOF01 DD DSN = MYDATA.URMI.FILEOUT1, 
//            DISP = (NEW,CATLG,DELETE),
//            RECFM = FB, LRECL = 50 
//SORTOF02 DD DSN = MYDATA.URMI.FILEOUT2,
//            DISP = (NEW, CATLG, DELETE),
//            RECFM = FB, LRECL = 50 
//SORTOF03 DD DSN = MYDATA.URMI.FILEOUT3, 
//            DISP = (NEW, CATLG, DELETE),
//            RECFM = FB, LRECL = 50 
//SYSPRINT DD SYSOUT = * 
//SYSOUT   DD SYSOUT = * 
//SYSUDUMP DD SYSOUT = * 
//SYSIN DD *      
  SORT FIELDS = COPY 
  OUTFIL FILES = 01,ENDREC=100  //*assuming input file has 300 records.
  OUTFIL FILES = 02, STARTREC = 101, ENDREC = 200 
  OUTFIL FILES = 03, STARTREC = 201 
//*

Puede ocurrir un error de tiempo de espera del trabajo cuando el programa toma más tiempo que el límite de tiempo para la clase especificada. Esto se denomina fin anormal de S322. Este error se encuentra cuando hay algunos errores de bucle en el programa y no se completa.
Si los datos procesados ​​en el programa son realmente enormes y necesitan más tiempo que el límite de la clase, entonces el parámetro TIEMPO se puede codificar como TIEMPO = 1440 para obtener un tiempo infinito hasta la finalización del trabajo.

El parámetro ESPACIO del conjunto de datos de copia de imagen se puede aumentar en función del volumen de la tabla y el trabajo se puede reiniciar desde el paso 2.

NOTIFICAR = el ID de usuario de la persona (no el remitente) se puede especificar en la declaración JOB para que el usuario reciba una notificación con el código de retorno al finalizar el trabajo. Pero el registro de trabajos está presente en el spool solo con el ID de usuario del remitente.

La opción FTOV en SORT ayuda a convertir FB a archivo VB.

//URMIFTOV EXEC PGM = SORT 
//SORTIN   DD *
  123*******
  4560000000
  123****123
  789
//SORTOF01 DD DSN = MYDATA.URMI.FILEOUT1, 
//            DISP = (NEW, CATLG, DELETE),
//            RECFM = VB, LRECL = 54
//SORTOF02 DD DSN = MYDATA.URMI.FILEOUT2,
//            DISP = (NEW, CATLG, DELETE),
//            RECFM = VB, LRECL = 54 
//SORTOF03 DD DSN = MYDATA.URMI.FILEOUT3, 
//            DISP = (NEW, CATLG, DELETE),
//            RECFM = VB, LRECL = 54 
//SYSPRINT DD SYSOUT = * 
//SYSOUT   DD SYSOUT = * 
//SYSUDUMP DD SYSOUT = * 
//SYSIN DD *      
  SORT FIELDS=COPY 
  OUTFIL FNAMES = SORTOF01, FTOV, VLTRIM = C'*' //*removes trailing '*'
  OUTFIL FNAMES = SORTOF02, FTOV, VLTRIM = X'40'//*removes trailing space
  OUTFIL FNAMES = SORTOF03, FTOV, VLTRIM = X'00'//*removes trailing zeros
//*

JCL significa Job Control Language, que proporciona las especificaciones necesarias para procesar un trabajo. Es un conjunto de declaraciones de control que proporciona las especificaciones necesarias para procesar un trabajo. Es una interfaz entre programas y sistema operativo MVS.

MVS significa Almacenamiento virtual múltiple, que es el sistema operativo para los sistemas mainframe de IBM.

Los identificadores son dos barras inclinadas (//) a partir de la columna número 1. Todas las declaraciones JCL comienzan con identificadores excepto por dos excepciones: para una declaración delimitador, / * que comienza en la columna 1 y para una declaración de comentario, // * que comienza en la columna 1.

Entrada -> Conversión -> Ejecución -> Salida -> Copia impresa -> Purgar

El JCL junto con el PROC se convierte en un texto interpretado para ser entendido por JES y almacenado en un conjunto de datos, al que llamamos SPOOL.

Cuando el trabajo alcanza su máxima prioridad, se toma para su ejecución desde la cola de trabajos. El JCL se lee del SPOOL, el programa se ejecuta y la salida se redirige al destino de salida correspondiente como se especifica en el JCL.

Especifica la información requerida para el SPOOLing del trabajo, como la identificación del trabajo, la prioridad de ejecución, la identificación del usuario que se notificará al finalizar el trabajo.

JCL termina con una declaración nula que es opcional. Sólo para un código de declaración nulo // a partir de la columna 1. No se ejecutarán todas las líneas posteriores a esta.

Según la duración del tiempo y la cantidad de recursos requeridos por el trabajo, las empresas asignan diferentes clases de trabajo. Estos se pueden visualizar como programadores individuales utilizados por el sistema operativo para recibir los trabajos. Colocar los trabajos en el programador correcto ayudará a que se ejecuten fácilmente. Algunas empresas tienen diferentes clases para trabajos en entornos de prueba y producción. Los valores válidos para el parámetro CLASS son los caracteres de la A a la Z y los números de 0 a 9 (de longitud 1). A continuación se muestra la sintaxis: CLASS = 0 a 9 | De la A a la Z

El sistema envía el mensaje de éxito o falla (Código de condición máxima) al usuario especificado en este parámetro. Sintaxis - NOTIFY = "userid | & SYSUID"

TYPRUN = SCAN comprueba los errores de sintaxis del JCL sin ejecutarlo.

El parámetro DSN se refiere al nombre del conjunto de datos físicos de un conjunto de datos existente o recién creado. El valor de DSN puede estar compuesto por subnombres de 1 a 8 caracteres cada uno, separados por puntos y con una longitud total de 44 caracteres (alfanuméricos).

El parámetro DISP se utiliza para describir el estado del conjunto de datos, la disposición al final del paso del trabajo en la finalización normal y anormal. DISP no se requiere en una declaración DD solo cuando el conjunto de datos se crea y se elimina en el mismo paso del trabajo (como los conjuntos de datos temporales). Sintaxis - DISP = (estado, disposición normal, disposición anormal)

El parámetro SPACE especifica el espacio requerido para el conjunto de datos en el DASD (Disco de almacenamiento de acceso directo). Sintaxis - SPACE = (spcunits, (pri, sec, dir), RLSE)

El parámetro Bloque de control de datos (DCB) detalla las características físicas de un conjunto de datos. Este parámetro es necesario para los conjuntos de datos que se crean recientemente en el paso del trabajo. LRECL es la longitud de cada registro que se mantiene dentro del conjunto de datos. RECFM es el formato de registro del conjunto de datos.

Un conjunto de datos temporal es el que se crea y elimina dentro de un trabajo y se declara como DSN = && TEMP. No mencione los parámetros DSN con esto.

Código SYSOUT = *, luego los datos se dirigirán al spool.

IEFBR14 no es una utilidad de operación. Se utiliza para devolver el control al usuario y finalizar. Por lo general, se usa para crear un conjunto de datos vacío o eliminar un conjunto de datos existente.

DISP = (NUEVO, APROBADO). PASS es válido solo para disposición normal. Se utiliza cuando el conjunto de datos se va a pasar y procesar en el siguiente paso de trabajo en un JCL.

La utilidad IKJEFT01 se utiliza para ejecutar un programa COBOL-DB2.

DSN (nombre del conjunto de datos) se utiliza para declarar el nombre del conjunto de datos en una declaración DD.

La declaración PEND se utiliza para finalizar el procedimiento in-stream.

Para referirnos a la última generación de un GDG, usamos la referencia como (+0).

COND = (12, LT, STEP1), leerá la condición como 12 menos que 8, lo cual es falso, por lo que se ejecutará este paso.

En el paso SORT, mencione el nombre del conjunto de datos SYSIN & SYSOUT y en el código de la tarjeta de clasificación SORT FIELDS = COPY para copiar los datos del archivo de entrada al archivo de salida.

Esta afirmación es cierta.

La utilidad SORT se utiliza para clasificar un archivo en un orden particular según la tarjeta de clasificación.

IEBUPDTE se utiliza para actualizar PDS.

El parámetro SPACE especifica el espacio requerido para el conjunto de datos en el DASD (Disco de almacenamiento de acceso directo). Sintaxis - SPACE = (spcunits, (pri, sec, dir), RLSE)

Esta afirmación es verdadera.