COMMAREA ou estruturas de dados do canal

CICS® Transaction Server for z/OS® programas podem ser vinculados usando uma estrutura de dados COMMAREA ou uma estrutura de dados de canal como entrada, que retornam a mesma estrutura de dados da saída. O nó CICSRequest suporta a interação com CICS por meio de COMMAREA ou estruturas de dados do canal.

Os canais são uma alternativa moderna às COMMAREAs, fornecendo auxílio do tamanho máximo da COMMAREA de 32766 bytes e permitindo maior flexibilidade nas estruturas de dados de entrada/saída.

COMMAREAs

Se estiver usando uma COMMAREA como a estrutura de dados de entrada para comunicação com CICS, o nó CICSRequest assumirá uma parte do Corpo de Entrada, conforme definido nas propriedades de Solicitação do nó CICSRequest e o enviará para CICS como a COMMAREA.

O COMMAREA retornando é então colocado na árvore de Saída e substitui o Corpo Existente no local que é definido nas propriedades de Resultado do nó CICSRequest . A COMMAREA pode então ser configurada para análise usando as propriedades de Parsing Message Message Parsing do CICSRequest .

Ao definir uma estrutura de dados COMMAREA como entrada, você deve garantir que o valor da propriedade CICSRequest Comprimento length seja grande o suficiente para conter os dados da solicitação de entrada, ou os dados de resposta de saída, mas que ele não exceda o valor máximo de 32767 bytes. Se o valor Comprimento de Commarea não for grande o suficiente para ser usado para os dados de resposta ou para os dados da solicitação, ocorrerá uma fuga de memória no CICS. O tamanho da COMMAREA não pode ser mudado pelo programa CICS . Se os dados do pedido serializados forem maiores que o Comprimento da Commarea, os dados serão truncados no Comprimento da Commarea. É possível obter o valor de Comprimento de Commarea do administrador ou desenvolvedor do CICS .

O valor padrão para o nó CICSRequestestrutura de dados propriedade básica é Commarea.

Se está usando a conexão direta de duas camadas, o CICS examina a propriedade file.encoding da JVM para determinar a página de códigos da COMMAREA. Isso pode causar erros de conversão de página de códigos no programa " CICS ". Se a propriedade não estiver configurada, um valor padrão de 437 será usado. Para obter mais informações, consulte a documentação do CICS sobre páginas de código.

Para obter mais informações sobre como usar uma estrutura de dados COMMAREA como entrada, consulte Definindo uma estrutura de dados CICS Transaction Server for z/OS, Desenvolvendo um fluxo de mensagens com um nó CICSRequeste Construindo uma mensagem para o nó CICSRequest.

Canais

Os canais do CICS contêm várias estruturas chamadas contêineres. Os contêineres retêm as informações de negócios que são acessados pelo programa CICS de destino Cada contêiner pode conter até 2 GB de dados, enquanto os canais podem ter quantos contêineres for necessário, o que oferece flexibilidade em termos de tamanho e layout de dados. Cada contêiner tem um nome alfanumérico com no máximo 16 caracteres, que é exclusivo no canal e é usado como mecanismo para recuperar o conteúdo do contêiner do canal.

Há dois tipos de contêiner; character ou binary. O tipo de contêiner pode afetar a conversão de dados entre IBM® App Connect Enterprise e CICS; no entanto, o tipo de contêiner não tem qualquer impacto no formato das informações que podem ser inseridas no contêiner.
Contêineres de caracteres
Contêineres de caracteres têm maior probabilidade de serem sequências individuais ou itens de dados discretos, mas podem também ser estruturas mapeadas; entretanto, é importante lembrar-se de que a conversão de dados é aplicada aos dados do contêiner. Quando um contêiner de caracteres é construído, as informações do ID do conjunto de caracteres codificados de origem (CCSID) sobre o contêiner são enviadas para o CICS como metadados. O programa CICS usa a chamada GET CONTAINER da interface de programação de aplicativos (API) para converter os metadados para o CCSID padrão da região, a menos que outro CCSID seja fornecido. O programa ` CICS `, então, coloca o contêiner de volta no canal, e os dados são convertidos, ficando prontos para serem recuperados e utilizados pelo aplicativo ` IBM App Connect Enterprise `.
Contêineres binários
Contêineres binários podem ser mapeados usando uma estrutura de copybook COBOL ou podem ter valores discretos. A conversão de dados não é aplicada aos dados em um contêiner binário, portanto, os dados em um contêiner binário são enviados para CICS e recuperados de CICS somente na forma original.

Ao contrário das estruturas COMMAREA, o tamanho do canal de resposta não precisa ser semelhante à solicitação, enquanto as COMMAREAs devem permitir o tamanho da resposta na solicitação.

Canais e contêineres no CICS

No diagrama de exemplo a seguir, o canal CICS possui dois contêineres; CustomerName e Order.
O diagrama mostra um canal de exemplo no CICS que tem dois containers. O primeiro é
chamado CustomerName e é um contêiner de caracteres com um valor Joe Bloggs. O segundo é um contêiner binário chamado Order (Ordem) e contém uma estrutura complexa representada por um livro de cópias COBOL.
CustomerName é um contêiner de caracteres (CHAR) que contém uma única sequência de caracteres; Joe Bloggs. Como CustomerName é um contêiner de caracteres, a conversão de dados pode ser aplicada aos dados do contêiner. Order é um contêiner binário (BIN) que pode ser criado usando uma estrutura de copybook COBOL ou arquivo de cabeçalho C, que você pode então importar para preencher seu conjunto de mensagens com definições de mensagem. O exemplo de copybook a seguir descreve o layout binário dos dados que o CICS programa espera receber:
01 ORDER_STRUCTURE.
          03 QTY                  COMP-1.
          03 ITEM                 PIC X(10).
          03 PRICE                PIC S9(9).
O programa CICS de destino pode recuperar esses dois contêineres do canal, fornecendo o nome do contêiner ao usar a API GET CONTAINER . Quando os dados são fornecidos ao programa CICS , o programa processa os dados como ele escolher. Por exemplo, o programa pode colocar outros contêineres no canal para fornecer uma resposta ao contêiner chamada, usando a API PUT CONTAINER.

Canais e contêineres no ` IBM App Connect Enterprise `

No ` IBM App Connect Enterprise `, um canal ` CICS ` é representado como uma estrutura de coleção de mensagens. Uma coleta de mensagens pode manter mensagens filhas, cada uma tratada como um container pelo nó CICSRequest . Uma estrutura de coleta de mensagens é usada como entrada e saída para o nó CICSRequest ao usar uma estrutura de dados do canal. Para obter mais informações sobre coleções de mensagens, consulte Coleções de mensagense para obter informações sobre a criação de uma coleção de mensagens, consulte Criando uma coleção de mensagens usando ESQL

O nome da coleção de mensagens é usado para nomear o canal. O nome da mensagem filha na coleção de mensagens é usado como nome do contêiner no canal e deve ser exclusivo. Se o nome da mensagem filha na coleção de mensagens não for exclusivo, a solicitação será rejeitada no CICS

A tabela a seguir mostra o canal e o contêiner para mapeamento de coleção de mensagens e mensagem filha:
CICS IBM App Connect Enterprise
Nome do canal Nome da coleção de mensagens
Nome do contêiner (deve ser exclusivo para o canal pai) Nome da mensagem filha (deve ser exclusivo para a coleção de mensagens)

Atributos de valor de nome

IBM App Connect Enterprise permite adicionar atributos nome-valor a uma coleção de mensagens para criar um contêiner. Uma coleção de mensagens pode ter zero ou mais atributos. O nome de um atributo deve ser exclusivo em uma coleção de mensagens. Um atributo padrão para a coleta de mensagens é um atributo chamado CollectionName.

É possível incluir atributos de nome-valor em uma coleção de mensagem para criar contêineres CICS . Os atributos de nome/valor na coleção de mensagens, a não ser CollectionName, podem ser usados no lugar de pastas de mensagens completas para dados simples. Por exemplo, um atributo string value-value pode ser configurado na coleção de mensagens e usado diretamente pelo nó CICSRequest sem precisar criar um conjunto de mensagens para o elemento.

Os atributos de nome/valor podem ser produzidos a partir de contêineres na saída, bem como aceitos para entrada. Para obter informações sobre como criar um atributo em vez de uma pasta de mensagem de um contêiner, consulte Nó CICSRequest.

No diagrama de exemplo a seguir, o canal CICS é representado por uma coleção de mensagens chamada Collection. Collection contém dois contêineres que são representados por mensagens filhas denominadas CustomerName e Order. CollectionName e CustomerName são ambos atributos de nome-valor, no entanto, o atributo CollectionName não é tratado como um contêiner pelo nó CICSRequest e, portanto, não é enviado para CICS.
O diagrama mostra um canal CICS que é representado por uma coleta de mensagens denominada Collection. A coleção contém dois contêineres que são representados por mensagens filhas chamadas CustomerName e Order.

Se o atributo CustomerName deve ser tratado como um container de caracteres pelo nó CICSRequest , o LocalEnvironment deve refletir isso.

LocalEnvironment

Cada mensagem filha em uma coleção de mensagens é tratada como tendo um tipo padrão de binário, que determina se os dados são convertidos para o CCSID na região CICS . Entretanto, você pode substituir dinamicamente esse valor para caractere, por mensagem, no ambiente local. Por exemplo, você pode configurar o seguinte valor em LocalEnvironment.Destination.CICS.RequestChannel.Containers:
SET OutputLocalEnvironment.Destination.CICS.RequestChannel.Containers.<myContainerName> = CHARACTER;

Quando uma coleta de mensagens é emitida a partir do nó CICSRequest seguindo a solicitação, o LocalEnvironment contém as informações do tipo retornado para os contêineres. Por exemplo, quando o canal de resposta voltar do CICS, o LocalEnvironment mostrará os tipos dos contêineres que voltaram no local a seguir: LocalEnvironment.CICS.ResponseChannel.Containers.<myContainerName> = CHARACTER

O nome do canal, que tem um limite alfanumérico de 16 caracteres, pode ser substituído da seguinte forma:
SET OutputLocalEnvironment.Destination.CICS.RequestChannel.ChannelName = <myNewChannelName>;
Se um único contêiner for necessário para entrada somente, uma coleção de mensagens não precisa ser construída. Em vez disso, uma mensagem comum pode ser usada; entretanto, deve-se configurar o ChannelName alfanumérico com no máximo 16 caracteres no LocalEnvironment. O SingleMessageContainerName alfanumérico de no máximo 16 caracteres que precisa ser criado deve também ser fornecido no seguinte local:
SET OutputLocalEnvironment.Destination.CICS.RequestChannel.SingleMessageContainerName = <mySingleMessageContainerName>;

Como uma coleção de mensagens permite que cada contêiner no canal seja modelado como uma mensagem separada, cada mensagem tem sua própria estrutura e opções de análise. Por exemplo, um contêiner pode ser XML e outro poderá ser baseado em um copybook, que pode ser representado usando as mensagens XMLNSC e MRM em uma coleção de mensagens.

Cada mensagem filha na coleção de mensagens contém informações de domínio de mensagens, conjunto, tipo, formato, CCSID e codificação na pasta Propriedades que está associado à mensagem filha, que é serializada em um fluxo de bytes e enviada para CICS. Cada pasta de mensagem filha na coleção de mensagens que está sendo enviada ao CICS é serializada no nível do último filho do domínio de propriedade de mensagem. Nem todos os contêineres CICS requerem um conjunto de mensagens para representá-los.

No exemplo anterior, o contêiner Order pode ser representado como MRM, enquanto um conjunto de mensagens pode ser criado do copybook ORDER_STRUCTURE para representá-lo. O canal de retorno é convertido em uma coleção de mensagens, onde cada mensagem filha na coleção de mensagens representa um contêiner do canal. As mensagens filhas na coleção de mensagens são mapeadas para uma lista de informações de domínio, conjunto, tipo, formato, CCSID e codificação de mensagem usando o nome da mensagem filha; entretanto, as informações de CCSID e codificação são ignoradas para mensagens de caractere. Se um mapeamento não puder ser encontrado na mensagem, um mapeamento padrão poderá ser fornecido.

Como não é possível saber quantos contêineres estão na resposta, uma coleção de mensagens é sempre produzida como saída.

Você pode usar as propriedades de Análise de Mensagem de Resposta do nó CICSRequest para mapear um contêiner retornando para um domínio de mensagem, conjunto, tipo, formato, CCSID e informações de codificação. Particularmente, a propriedade Local de dados de resultados pode ser usada para reduzir a árvore de resultados para uma única pasta de mensagem ou para um único campo ou subárvore para saída. Para obter informações sobre a propriedade Local dos Dados do Resultado , consulte Nó CICSRequest

Os detalhes a seguir devem ser especificados para que a mensagem chegue no terminal de entrada do nó CICSRequest e seja processada em uma série de contêineres, e para aqueles containers no canal de resposta a serem colocados de volta na mensagem como ele deixa o nó:
  • Deve ser dado ao canal um nome alfanumérico de no máximo 16 caracteres.

    Como o canal é representado por uma coleção de mensagens em IBM App Connect Enterprise, você pode definir o nome do canal configurando o nome da coleção de mensagens. Os nomes de coleção de mensagens são configurados usando o atributo CollectionName. Para obter mais informações sobre como criar uma coleção de mensagem e configurar o nome da coleção de mensagem, consulte Criando uma coleção de mensagens usando ESQL

  • Os detalhes a seguir devem ser especificados para cada contêiner no canal:
    • Um nome com no máximo 16 caracteres alfanuméricos.

      Como um contêiner é representado por uma mensagem secundária no ` IBM App Connect Enterprise `, é possível criar um nome de contêiner definindo o nome da mensagem secundária. Para obter mais informações sobre como criar uma coleção de mensagens e configurar o nome da mensagem filha, consulte Criando uma coleção de mensagem usando ESQL

    • Um tipo de contêiner; por exemplo, binary ou character.
    • Um diretório a ser usado para colocar dados de resposta.