Bienvenidos a Iseries Venezuela

Las mejores prácticas, recursos, tips, enlaces, videos y artículos para informáticos relacionados con el Iseries y el As/400 lenguajes de programación RPG, ILE RPG y SQL.

The best practices, resources, tips, links, videoes and articles for computer related to the Iseries and the As/400 languages of programming RPG, ILE RPG and SQL.

Thursday, October 21, 2010

Colas de Datos


    











Una cola de datos es similar a un archivo de base de datos sobre el cual se puede escribir o leer un registro. Cada dato de entrada en la cola es similar a un registro. Otro programa o muchos programas pueden leer entradas anteriores grabadas en la cola, similar a la lectura de registros en un archivo.

Una entrada a la cola de datos no tiene descripción externa (dds) es un string de bytes.  Las colas de dato son diseñadas para facilitar la comunicación entre programas. Supongamos que un cliente realiza un pago con la tarjeta de crédito y el banco debe aprobar el pago. Al pasar la tarjeta de crédito por el punto de venta, la ráfaga (string de datos de la tarjeta) es enviada a una data queue que es leída a su vez por un programa autorizador encargado de “desglosar” la información recibida en el string y determinar si el cliente está o no autorizado a realizar la compra con ese monto.

Puedes tener un programa enviando entradas a la cola de datos y docenas de programa activos simultáneamente que leen la entrada tan rápido como es posible. Como cada entrada en la cola es removida de la cola una vez que ha sido leída, no tienes que preocuparte de que otro programa lea la misma información. Continuando con el ejemplo del pago con la tarjeta de crédito, una vez que uno de los procesos autorizadores captura la data de la tarjeta de crédito de un cliente en un punto de venta, cualquier otro proceso autorizador no podrá capturar los datos de ese cliente sino que capturará los datos de otro cliente que haya sido grabado en la cola para hacer el mismo proceso de verificación del consumo.

El as400 tiene dos API, encargadas de grabar el string de datos en la cola de datos y de leerlos. Una vez que el string de datos es leído la data es “desalojada” de la cola en espera de la grabación de la próxima ráfaga de datos.

Las Api son: QSNDDTAQ para grabar data en la cola  y QRCVDTAQ para recibir o leer la data grabada en la cola.

Un ejemplo del código para el programa que graba el registro en la cola:

       CALL 'QSNDDTAQ'             90
       PARM 'DTQ_PMC' P1DTAQ 10  (nombre de la cola)
       PARM '*LIBL'   P1DLIB 10  (librería de la cola)
       PARM 8         P1LEN   50 (longitud de la data)
       PARM           P1RC       (data)

Estos programas (emisor y receptor de data) pueden iniciarse asociados al inicio de un subsistema del Iseries y dejarlo ejecutándose permanentemente en un lazo DOWhile con una condición que nunca se cumplirá. Para finalizar los programa se “tumba” el subsistema en el que se están ejecutando. Como generalmente las colas de datos se asocian a procesos nocturnos que requieren un tiempo de mantenimiento , y de arranque en la madrugada, puede resultar necesario “atar” la ejecución de estos programas receptores de data al inicio y finalización de un subsistema en el Iseries.

  CALL 'QRCVDTAQ'             9192
  PARM 'DTQ_PMC' P1DTAQ 10    (nombre de la cola)   
  PARM '*LIBL'   P1DLIB 10    (Liberia de la cola ) 
  PARM           P1LEN   50   (longitud de la data) 
  PARM           P1RC         (data) 
  PARM -1        P1WAIT  50   (Tiempo de espera para revisar la cola. Cuando es negativo, se espera un tiempo infinito y cuando es mayor a cero se refiere a los segundos de espera.)

Para crear una cola de datos el comando es:

CRTDTAQ  si quieres hacer pruebas del funcionamiento de la cola de datos, puedes escribir el programa que graba y luego el comando DMPOBJ al ejecutar el programa que lee la cola de datos, otro DMPOBJ arroja la data que queda en la cola. Con un programa CLP puedes ejecutar estos comandos y verificar lo que estas grabando y leyendo.

Los datos de la cola pueden ser eliminados con el comando QCLRDTAQ
Las colas de datos pueden tener una clave de ordenamiento permitiendo que la data vaya entrando en un orden FIFO o LIFO, dependiendo de los requerimientos funcionales. Estos parámetros de ordenamiento son opcionales.

Para mayor información de este tema pueden ir al siguiente enlace de IBM



Autor: Ing. Liliana Suárez.


Si te pareció interesante el artículo reenvíalo a un amigo, haciendo click en el sobrecito que está al final del artículo. El conocimiento es valioso, compártelo.

1 comment:

Francesc_J said...

Hola Liliana.

Te escribo desde Barcelona para decirte que he ido a parar a tu blog por casualidad buscando información sobre DTAQ. Es muy interesante y se pueden aprender bastantes cosas sobre el ISeries. Lo he añadido a mis favoritos.

Francesc Junyent
Barcelona