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…
Cruce de ficheros con Joinkeys avanzado
En un artículo anterior vimos un ejemplo de Joinkeys en su forma más básica. A continuación vamos a introducir el resto de posibilidades que ofrece esta aplicación que se ejecuta dentro de la utilidad sort del mainframe (tanto DFSORT como su clon Syncsort) JNF1CNTL Y JNF2CNTL: DD para incluir sentencias de control (INCLUDE, OMIT, INREC…
Clases de datos en COBOL
Cobol nos ofrece una serie de clases de datos predefinidas que podemos utilizar en expresiones lógicas llamadas condiciones de clase. La utilidad de estas condiciones es comprobar si todos los caracteres EBCDIC de una variable alfanumérica pertenecen a una determinada clase. Las clases predefinidas son: NUMERIC, ALPHABETIC, ALPHABETIC-LOWER (minúsculas) y ALPHABETIC-UPPER (mayúsculas). IF VARIABLE-A IS…