Hace unas semanas comenzamos a ver cuáles eran los pasos a seguir para generar objetos DCL mediante la Herramienta DCLGEN (ver post Herramienta DCLGEN para generar Includes de Ficheros - 1). Hoy trataremos de ver qué es lo que tenemos que hacer para utilizar dichos objetos desde nuestros programas Cobol.
Tal y como estuvimos viendo, siguiendo el procedimiento indicado, la herramienta DCLGEN nos generaba un objeto en una librería de nuestra elección. Al final del anterior post llegamos a mostrar un ejemplo de cómo era el contenido de un objeto DCL que habíamos generado con el nombre SEQUIPOS.
Como se podía observar en dicho ejemplo, el código de un objeto DCL está dividido en 3 partes:
A) Estructura de la Tabla DB2.
En esta primera parte nos aparece el nombre de la tabla DB2 y de las
columnas que la componen. Estos son los nombres de columna que tendremos
que usar en las sentencias SQL que usemos en nuestro programa Cobol.
B) Estructura de Variable Host.
En esta segunda parte nos aparece la definición de todas las variables
Host que podríamos utilizar en el programa Cobol. Básicamente, el DCLGEN
habrá creado una variable Host equivalente a cada una de las columnas
de la tabla DB2. La idea es que podamos usar cada una de estas variables
de la agrupación DCLEQUIPOS para recoger la información de la columna
de nombre análogo de la tabla DB2.
C) Estructura de Variables Indicador.
En la tercera y última parte se habrán creado las Variables de
Indicador Nulo asociadas a cada una de las variables Host que lo
requieran. Se da de alta un array INDSTRUC cuyo tamaño será igual al
número de columnas de la tabla DB2 (en el ejemplo, se crea un INDSTRUC
de 5 ocurrencias debido a que la tabla EQUIPOS tiene 5 columnas).
Para que toda la estructura de datos creada está disponible desde Cobol, en el programa tendremos que incluir la correspondiente sentencia INCLUDE haciendo referencia al objeto DCL.
En nuestro ejemplo, en la WORKING-STORAGE SECTION tendríamos que
incluir tanto las del área de comunicaciones estándar SQLCA como las de
nuestro objeto SEQUIPOS.
* INCLUDES DE LOS OBJETOS DCL
EXEC SQL
INCLUDE SQLCA
END-EXEC.
*
EXEC SQL
INCLUDE SEQUIPOS
END-EXEC.
Con
la definición anterior, un ejemplo de cómo se codificaría, en un
programa Cobol, una declaración SELECT contra la tabla EQUIPOS empleando
el objeto DCL sería la siguiente. En primer lugar, ponemos la
definición del Cursor de la tabla (que estaría en la WORKING-STORAGE
SECTION) y, a continuación, la sentencia FETCH que carga la información
en las variables Host (ubicada en la PROCEDURE DIVISION).
* CURSOR PARA POSICIONARSE EN LA TABLA EQUIPOS
EXEC SQL DECLARE EQUIPOS-C CURSOR FOR
SELECT *
FROM EQUIPOS
WHERE EQUINO = :ENO
ORDER BY EQUINAME
END-EXEC.
...
...
...
* OBTENCION DE COLUMNAS DE REGISTRO DE LA TABLA EQUIPOS
EXEC SQL
FETCH EQUIPOS-C
INTO
:EQUINO,
:EQUINAME,
:ENTNO,
:EMPREQUI,
:CITYNAME
END-EXEC.
Como
vemos, en el FETCH se está haciendo referencia a las variables Host que
aparecen en el objeto DCL definidas bajo la agrupación DCLEQUIPOS (en
el DECLARE CURSOR que aparece justo encima, por contra, se hace
referencia a los nombres de las columnas de la tabla DB2). Una vez recuperadas, ahora ya podremos trabajar normalmente con estas variables Host en el código de nuestro programa Cobol. Por ejemplo, podríamos hacer un DISPLAY así.
DISPLAY EQUINO EQUINAME ENTNO EMPREQUI CITYNAME
Como se puede observar, el
empleo de la herramienta DCLGEN nos ahorra mucho trabajo a la hora de
definir, en nuestros programas Cobol, las estructuras de las tablas DB2 y
las estructuras de sus variables Host asociadas. Esto mismo se
podría declarar de forma manual, pero es indudable que haciéndolo
mediante la herramienta nos ahorraremos quebraderos de cabeza.
Siguiendo
los pasos que se han ido indicando en el post, no deberíamos tener
ningún problema con la generación de los objetos DCL a través de la
herramienta DCLGEN. Quizás os parezca un poco complicado la primera vez,
pero os podemos asegurar que enseguida dominaréis el procedimiento y
que agradeceréis el tiempo economizado.
En principio,
con todo lo comentado, por nuestra parte quedaría completado el tema de
la herramienta DCLGEN. De todas formas, no dudéis en consultarnos
cualquier duda que os surja respecto a ella, si lo consideráis oportuno.
Saludos.
No hay comentarios:
Publicar un comentario