Es posible enlazar a programas CICS Transaction Server for z/OS utilizando una estructura de datos COMMAREA o una estructura de datos de canal como entrada, que devuelven la misma estructura de datos como salida. El nodo CICSRequest da soporte a la interacción con CICS a través de las estructuras de datos de canal o COMMAREA.
Si utiliza un COMMAREA como estructura de datos de entrada para comunicarse con CICS, el nodo CICSRequest toma una parte del cuerpo de entrada, tal como se define en las propiedades de solicitud del nodo CICSRequest y lo envía a CICS como el COMMAREA.
El COMMAREA devuelto se coloca a continuación en el árbol de salida y sustituye el cuerpo existente en la ubicación que se define en las propiedades de resultado del nodo CICSRequest. El área de comunicación (COMMAREA) puede configurarse para el análisis utilizando las propiedades de análisis de mensajes de respuesta del nodo CICSRequest.
Al definir una estructura de datos COMMAREA como entrada, debe asegurarse de que el valor de la propiedad Longitud del área de comunicación del nodo CICSRequest sea lo suficientemente grande como para contener los datos de solicitud de entrada, o los datos de respuesta de salida, pero que no exceda el valor máximo de 32767 bytes. Si el valor de Longitud del commarea no es lo suficientemente grande como para utilizarlo para los datos de respuesta, o los datos de solicitud, se produce una fuga de memoria en CICS. El tamaño del COMMAREA no puede ser cambiado por el programa de CICS. Si el tamaño de los datos de solicitud serializados es superior a la Longitud de commarea, los datos se truncan a la Longitud del área de comunicación. Puede obtener el valor de la Longitud de commarea del administrador o desarrollador de CICS.
El valor predeterminado para la propiedad básica estructura de datos del nodo CICSRequest es Commarea.
Para obtener más información acerca de cómo utilizar una estructura de datos COMMAREA como entrada, consulte Definición de una estructura de datos de CICS Transaction Server for z/OS, Desarrollo de un flujo de mensajes con un nodo CICSRequesty Creación de un mensaje para el nodo CICSRequest.
Los canales CICS contienen varias estructuras denominadas contenedores. Los contenedores contienen la información empresarial a la que accede el programa CICS de destino. Cada contenedor puede albergar hasta 2 GB de datos y los canales pueden contener tantos contenedores como sea necesario, proporcionando flexibilidad en términos en términos de tamaño y disposición de los datos. Cada contenedor tiene un nombre de contenedor alfanumérico de 16 caracteres como máximo, que es exclusivo en el canal y se utiliza como mecanismo para recuperar el contenido del contenedor desde el canal.
A diferencia de las estructuras COMMAREA, no es necesario que el tamaño del canal respuesta se parezca a la solicitud, mientras que las COMMAREAs deben tener en cuenta el tamaño de la respuesta en la solicitud.
Canales y contenedores en CICS
En el diagrama siguiente ejemplo, el canal tiene dos contenedores de CICS ; CustomerName y Order.
01 ORDER_STRUCTURE.
03 QTY COMP-1.
03 ITEM PIC X(10).
03 PRICE PIC S9(9).
El programa de destino CICS puede
recuperar ambos contenedores del canal proporcionando el
nombre del contenedor cuando se utiliza la API GET CONTAINER. Cuando los datos se proporcionan al
programa CICS, el programa procesa elija lo que elija. Por ejemplo, el programa puede colocar
otros contenedores en el canal para proporcionar una respuesta al contenedor denominado utilizando la API PUT CONTAINER.Canales y contenedores en WebSphere Message Broker
En WebSphere Message Broker, un canal CICS está representado como una estructura de colección de mensajes. Una colección de mensajes puede contener mensajes hijo, cada uno tratado como un contenedor por el nodo CICSRequest. Una estructura de colección de mensajes se utiliza como entrada y salida en el nodo CICSRequest cuando se utiliza una estructura de datos de canal. Para obtener más información acerca de colecciones de mensajes, consulte Colecciones de mensajes y para obtener información sobre cómo crear una colección de mensajes, consulte Crear una colección de mensajes utilizando ESQL.
El nombre de la colección de mensajes se utiliza para el nombre del canal. El nombre del mensaje hijo de la colección de mensajes se utiliza como el nombre del contenedor en el canal y debe ser exclusivo. Si el nombre de mensaje hijo de la colección de mensajes no es exclusivo, la solicitud se rechaza en CICS.
CICS | WebSphere Message Broker |
---|---|
Nombre de canal | Nombre de la colección de mensajes |
Nombre de contenedor (debe ser exclusivo para el canal primario) | Nombre de mensajes hijo (debe ser exclusivo a la colección de mensajes) |
Atributos nombre-valor
WebSphere Message Broker da soporte a agregar atributos nombre-valor a una colección de mensajes para crear un contenedor. Una colección de mensajes puede tener cero o más atributos. El nombre de un atributo debe ser único dentro de una colección de mensajes. Un atributo estándar para la colección de mensajes es un atributo denominado CollectionName.
Puede agregar atributos nombre-valor a una colección de mensajes para crear los contenedores de CICS. Los atributos nombre-valor en la colección de mensajes, aparte de CollectionName, se pueden utilizar en lugar de mensajes-carpetas completos para datos simples. Por ejemplo, un atributo de serie nombre-valor se puede establecer en la colección de mensajes y utilizarse directamente en el nodo CICSRequest sin necesidad de crear un conjunto de mensajes para el elemento.
Los atributos nombre-valor se pueden generar a partir de los contenedores en la salida, así como aceptarse en la entrada. Para obtener información sobre la creación de un atributo en lugar de una carpeta de mensajes de un contenedor, consulte Nodo CICSRequest.
En el diagrama siguiente ejemplo, el CICS canal se representa mediante una colección de mensajes denominado Collection. Colección contiene dos contenedores que se representan mediante mensajes hijo denominado CustomerName y Order. CollectionName y CustomerName son ambos atributos nombre-valor, aunque el atributo CollectionName no es tratado como un contenedor por el nodo CICSRequest, y, por consiguiente, no se envía a CICS.
Si el atributo CustomerName va a tratarse como un contenedor carácter por el nodo CICSRequest, el entorno local debe reflejarlo.
LocalEnvironment
SET OutputLocalEnvironment.Destination.CICS.RequestChannel.Containers.<myContainerName> = CHARACTER;
Cuando una colección de mensajes se emite desde el nodo CICSRequest después de la solicitud, el entorno local contiene la información de tipo devuelto para los contenedores. Por ejemplo, cuando el canal respuesta vuelve de CICS, el entorno local muestra los tipos de los contenedores que tienen volver en la ubicación siguiente: LocalEnvironment.CICS.ResponseChannel.Containers.<myContainerName> CHARACTER =
SET OutputLocalEnvironment.Destination.CICS.RequestChannel.ChannelName = <myNewChannelName>;
SET OutputLocalEnvironment.Destination.CICS.RequestChannel.SingleMessageContainerName = <mySingleMessageContainerName>;
Puesto que una colección de mensajes permite que cada contenedor en el canal sea modelado como un mensaje independiente, cada mensaje tiene su propia estructura y las opciones de análisis. Por ejemplo, un contenedor podría ser XML y otro puede estar basado en copybook, que puede representarse mediante mensajes XMLNSC y MRM dentro de una colección de mensajes.
Cada mensaje hijo de la colección de mensajes contiene un dominio de mensajes, conjunto, tipo, formato, CCSID, e información de codificación en la carpeta Propiedades que está asociada con el mensaje hijo, que se serializa en una secuencia de bytes y se envía a CICS. Cada carpeta de mensajes hijo dentro de la colección de mensajes que se envía a CICS se serializa en el nivel del último hijo del dominio de propiedad de mensaje. No todos los contenedores de CICS necesitan un conjunto de mensajes para representarlos.
En el ejemplo anterior, el contenedor Orden se puede representar como MRM, y un conjunto de mensajes se pueden crear desde el copybook ORDER_STRUCTURE para representarlo. El canal de devolución se convierte en una colección de mensajes, donde cada mensaje hijo de la colección de mensajes representa un contenedor desde el canal. Los mensajes hijo de la colección de mensajes se correlacionan con una lista de dominio de mensajes, conjunto, tipo, formato, CCSID y codificación información utilizando el nombre del mensaje hijo, sin embargo, el CCSID y la codificación información se omiten los mensajes de caracteres. Si no puede encontrarse una correlación en el mensaje, puede proporcionarse una correlación por omisión.
Puesto que no es posible saber cuántos contenedores están en la respuesta, siempre se genera como salida una colección de mensajes.
Puede utilizar las propiedades Análisis de mensaje de respuesta del nodo CICSRequest para correlacionar un contenedor que regresa a un dominio de mensajes, conjunto, tipo, formato, CCSID, y la información de codificación. En particular, la propiedad Ubicación de datos de resultado se puede utilizar para reducir el árbol de resultado a una carpeta de mensajes único o a un único campo o subárbol para la salida. Para obtener información acerca de la propiedad Ubicación de datos de resultado, consulte Nodo CICSRequest.
Dado que el canal se representa mediante una colección de mensajes en WebSphere Message Broker, puede crear el nombre de canal estableciendo el nombre de la colección de mensajes. Los nombres de la colección de mensajes se establecen utilizando el atributo CollectionName. Para obtener más información acerca de cómo crear una colección de mensajes y establecer el nombre de la colección de mensajes, consulte Crear una colección de mensajes utilizando ESQL.
Dado que un contenedor se representa mediante un mensaje hijo en WebSphere Message Broker, puede crear un nombre de contenedor estableciendo el nombre de mensajes hijo. Para obtener más información acerca de cómo crear una colección de mensajes y establecer el nombre del mensaje hijo, consulte Crear una colección de mensajes utilizando ESQL.
Se proporciona un ejemplo que muestra cómo llamar a un programa CICS basado en canal creando y rellenar una colección de mensajes para el nodo CICSRequest, y cómo procesar la colección después de la llamada. Para obtener más información, consulte CICS Transaction Server for z/OS Channel Connectivity.