Controlar la existencia de un fichero en un JCL

La existencia de un fichero se puede controlar mediante el comando LISTCAT de la utilidad IDCAMS. Esta devolverá código de retorno 4 si el fichero que se le pasa como parámetro no existe en el catálogo. Ejemplo: Tenemos un JOB que recibe un fichero de entrada. En caso de que dicho fichero no exista, queremos…

Cálculos con fechas en COBOL

El COBOL de IBM para z/OS incluye dos funciones que simplifican mucho los cálculos con fechas, gracias a que convierten una fecha en formato AAAAMMDD en su equivalente numérico y a la inversa. Ello nos permite hacer sumas o restas con fechas fácilmente, sin necesidad de tener en cuenta el número de días de cada…

Conversión de fichero de longitud variable a fija y viceversa

La conversión de un fichero de longitud variable a fija y viceversa en un Sort se hace mediante las opciones VTOF y FTOV del parámetro OUTFIL del Sort. Recordemos que el parámetro OUTFIL permite generar de 1 a n ficheros de salida. Cada uno de estos puede ser construido de forma independiente mediante instrucciones BUILD…

Introducción al parámetro DISP de la DD de los JCL

DISP es un parámetro de la instrucción DD (Data Definition) de los JCL. Sirve para indicarle al sistema el estado actual de un fichero y las acciones a realizar sobre el mismo si el paso termina correctamente y en caso de terminación anormal (abend).  Su formato es: DISP=(Estado, Acción normal, Acción anormal). Valores para el…

Descarga de una tabla con DSNTIAUL

La utilidad DB2 DSNTIAUL permite realizar una descarga de tabla a fichero fácilmente. Tiene menos restricciones de seguridad que la utilidad UNLOAD, por lo que es ideal para hacer descargas en entornos DB2 de prueba. En su forma más sencilla se ejecutaría con un JCL como el siguiente: //DESCARGA EXEC PGM=IKJEFT01,DYNAMNBR=20 //STEPLIB DD DSN=PRE.SDSNLOAD,DISP=SHR //…

SYMNAMES: Nombres simbólicos en un Sort

En este artículo vamos a introducir el uso de nombres simbólicos (SYMNAMES) en un SORT para hacer referencia a campos y constantes. Se trata de una facilidad que hace más legibles  los Sort y facilita su mantenimiento. Por ejemplo, supongamos que tenemos un fichero con la siguiente estructura: Campo Pos. Inicio Longitud Formato COBOL COD_FACTURA…

Uso de variables en un JCL

Para definir una variable en un JCL y asignarle valor se utiliza el comando SET: // SET PROGRAMA=CARGACLI // SET FICHENT=FF.CLIENTES.ENT // SET FICHSAL=FF.CLIENTES.SAL // SET NUEVO=’DISP=(NEW,CATLG,DELETE)’ Las variables así definidas se pueden usar en cualquiera de los siguientes pasos del JCL añadiendo un ‘&’ a su nombre: //CLIENTES  EXEC PGM=&PROGRAMA //SYSOUT    DD SYSOUT=*…

Comprobar si un fichero está vacío con ICETOOL

Al diseñar un JCL, muchas veces interesa que ciertos pasos no se ejecuten si un determinado fichero está vacío, algo que podemos comprobar fácilmente mediante el operador COUNT de ICETOOL: //—————————– //PASO1 EXEC PGM=ICETOOL //IN DD DSN=FICHERO,DISP=SHR //TOOLMSG DD SYSOUT=* //DFSMSG DD SYSOUT=* //TOOLIN DD DATA COUNT FROM(IN) EMPTY /* //—————————– //INICOND IF PASO1.RC=0  THEN…

Condicionar pasos de un JCL: parámetro COND

En este artículo vamos a examinar la forma “clásica” de condicionar la ejecución de un paso de JCL: el parámetro COND. Al incluir COND en un paso, podemos comprobar el código de retorno de uno o varios pasos anteriores mediante expresiones relacionales. Si alguna de las expresiones es verdadera, entonces el paso NO se ejecuta…

Condicionar pasos de un JCL: estructura IF/THEN/ELSE/ENDIF

Para condicionar la ejecución de un paso de un JCL al resultado de los pasos anteriores tenemos dos opciones: La estructura IF/THEN/ELSE/ENDIF El parámetro COND En este artículo vamos a analizar la primera de ellas, que es la más sencilla y la recomendada por IBM en su manual oficial. Su sintaxis es la siguiente: //IF…