CICS - Guia Rápido
CICS é um sistema DB / DC que é usado em aplicativos online. O CICS foi desenvolvido porque o sistema operacional em lote pode executar apenas programas em lote. Os programas CICS podem ser escritos em COBOL, C, C ++, Java, etc. Hoje em dia, os usuários querem informações em segundos e em tempo real. Para fornecer esse serviço rápido, precisamos de um sistema que possa processar informações online. O CICS permite que os usuários se comuniquem com o sistema backend para obter as informações desejadas. Exemplos de programas online incluem sistema de banco online, reserva de voo, etc. A imagem a seguir mostra os componentes do CICS e como eles estão inter-relacionados -
Funções do CICS
As principais funções desempenhadas pelo CICS em um aplicativo são as seguintes -
O CICS gerencia solicitações de usuários simultâneos em um aplicativo.
Embora vários usuários estejam trabalhando no sistema CICS, ele dá a sensação de que ele é o único usuário.
O CICS fornece acesso a arquivos de dados para leitura ou atualização em um aplicativo.
Recursos do CICS
Os recursos do CICS são os seguintes -
O CICS é um sistema operacional em si mesmo, pois gerencia seu próprio armazenamento de processador, tem seu próprio gerenciador de tarefas que lida com a execução de vários programas e fornece suas próprias funções de gerenciamento de arquivo.
O CICS fornece ambiente online em sistema operacional em lote. Os trabalhos enviados são executados imediatamente.
CICS é uma interface de processamento de transação generalizada.
É possível ter duas ou mais regiões CICS ao mesmo tempo, pois o CICS é executado como uma tarefa em lote no sistema operacional no backend.
O próprio CICS atua como um sistema operacional. Seu trabalho é fornecer um ambiente para execução online de programas aplicativos. O CICS é executado em uma região ou partição ou espaço de endereço. O CICS lida com o planejamento de programas em execução nele. O CICS é executado como uma tarefa em lote e podemos visualizá-lo no spool emitindo o comando PREFIX CICS *. Existem cinco serviços principais fornecidos pelo CICS. Todos esses serviços juntos executam uma tarefa.
Ambiente CICS
A seguir estão os serviços que iremos discutir em detalhes, passo a passo -
- Serviços do Sistema
- Serviços de comunicação de dados
- Serviços de manipulação de dados
- Serviços de programação de aplicativos
- Serviços de Monitoramento
- Serviços do Sistema
O CICS mantém funções de controle para gerenciar a alocação ou desalocação de recursos dentro do sistema, que são as seguintes -
Task Control- O controle de tarefas fornece recursos de agendamento de tarefas e multitarefa. Ele cuida do status de todas as tarefas do CICS. O Controle de Tarefa aloca o tempo do processador entre tarefas CICS simultâneas. Isso é chamadomultitasking. O CICS tenta priorizar o tempo de resposta para a tarefa mais importante.
Program Control- O controle de programa gerencia o carregamento e a liberação de programas aplicativos. Assim que uma tarefa é iniciada, é necessário associá-la ao programa aplicativo apropriado. Embora muitas tarefas possam precisar usar o mesmo programa de aplicativo, o CICS carrega apenas uma cópia do código na memória. Cada tarefa segue seu caminho por meio desse código de forma independente, de modo que muitos usuários podem estar executando transações que usam simultaneamente a mesma cópia física de um programa de aplicativo.
Storage Control- Controle de armazenamento gerencia a aquisição e liberação do armazenamento principal. O controle de armazenamento adquire, controla e libera armazenamento dinâmico. O armazenamento dinâmico é usado para áreas de entrada / saída, programas, etc.
Interval Control - O Interval Control oferece serviços de cronômetro.
Serviços de comunicação de dados
Os serviços de comunicação de dados fazem interface com métodos de acesso de telecomunicações, como BTAM, VTAM e TCAM, para lidar com solicitações de comunicação de dados de programas aplicativos.
O CICS libera os programas de aplicativos do fardo de lidar com problemas de hardware de terminal por meio do uso do Basic Mapping Support (BMS).
O CICS fornece Multi Region Operation (MRO) por meio do qual mais de uma região CICS no mesmo sistema pode se comunicar.
O CICS fornece Inter System Communication (ISC) por meio do qual uma região CICS em um sistema pode se comunicar com a região CICS em outro sistema.
Serviços de manipulação de dados
Interface de Data Handling Services com métodos de acesso a dados, como BDAM, VSAM, etc.
O CICS facilita o atendimento de solicitações de manipulação de dados de programas aplicativos. O CICS fornece aos programadores de aplicativos um conjunto de comandos para lidar com conjunto de dados e acesso ao banco de dados e operações relacionadas.
O Data Handling Services faz interface com métodos de acesso ao banco de dados, como IMS / DB, DB2, etc. e facilita o atendimento de solicitações de banco de dados de programas aplicativos.
O CICS facilita o gerenciamento da integridade dos dados pelo controle de atualizações simultâneas de registros, proteção de dados como ABENDs de tarefa e proteção de dados em falhas do sistema.
Serviços de programação de aplicativos
Interface de serviços de programação de aplicativos com programas aplicativos. Os serviços de programação de aplicativos do CICS fornecem recursos como tradução de nível de comando, CEDF (o recurso de depuração) e CECI (o recurso de interpretador de comando). Estaremos discutindo mais detalhadamente nos próximos módulos.
Serviços de Monitoramento
Os Serviços de Monitoramento monitoram vários eventos no espaço de endereço do CICS. Ele fornece uma série de informações estatísticas que podem ser usadas para ajuste do sistema.
Devemos ter conhecimento dos termos básicos usados no CICS para obter um melhor entendimento de como ele funciona. Os programas aplicativos usam o CICS para comunicação com terminais e subsistemas remotos e locais.
Terminal IBM 3270
O Sistema de exibição de informações 3270 é uma família de terminais de exibição e impressora. Terminais 3270 estavam sendo usados para se conectar ao mainframe por meio de controladores IBM. Hoje, o software de emulação 3270 está disponível, o que significa que até PCs normais podem ser usados como terminais 3270. Os terminais 3270 são terminais burros e não realizam nenhum processamento por si próprios. Todo o processamento deve ser feito pelo programa de aplicação. Os terminais IBM consistem nos seguintes componentes -
Monitor CRT
O monitor CRT exibe a saída ou os campos de entrada do programa aplicativo. Uma captura de tela de um modelo 3278 do monitor CRT é mostrada abaixo. Possui as seguintes características -
É capaz de exibir 1920 caracteres.
Cada uma dessas posições de 1920 caracteres pode ser endereçada individualmente.
Um programa de aplicação COBOL pode enviar dados para todas as posições na tela.
As características de exibição como intensidade, protegida, não protegida do campo podem ser definidas usando o BMS, que iremos discutir em detalhes nos próximos módulos.
Teclado
As teclas do teclado IBM são divididas nas duas categorias a seguir -
Non-AID Keys- Todas as outras teclas para alfabetos, numéricos, pontuação, etc. são teclas não auxiliares. Quando o usuário digita texto ou números usando teclas não auxiliares, o CICS nem mesmo saberá se o usuário está digitando algo ou não.
AID Keys- As chaves AID são conhecidas como Chaves Identificadoras de Atenção. O CICS pode detectar apenas chaves AID. Depois de digitar todas as entradas, apenas quando o usuário pressiona uma das teclas AID, o CICS assume o controle. Teclas AID: ENTER, PF1 a PF24, PA1 a PA3, CLEAR. As chaves AID são divididas em duas categorias -
PF Keys- As teclas PF são conhecidas como teclas de função. As chaves PF permitem a transferência de dados do terminal para o CICS. As teclas PF são ENTER e PF1 a PF24.
PA Keys- As teclas PA são conhecidas como teclas de acesso ao programa. As chaves PA não permitem a transferência de dados entre o terminal e o CICS. As chaves PA são PA1 a PA3 e CLEAR.
Transação
Um programa CICS é chamado por meio de uma transação. Uma transação CICS é uma coleção de programas relacionados logicamente em um aplicativo. Todo o aplicativo pode ser logicamente dividido em várias transações.
Os identificadores de transação com 1 a 4 caracteres são usados para identificar as transações que os usuários desejam fazer.
Um programador vincula um programa ao identificador de transação que é usado para chamar todos os programas aplicativos para aquela transação específica.
Tarefa
Uma tarefa é uma unidade de trabalho específica de um usuário.
Os usuários chamam um aplicativo usando um dos identificadores de transação. O CICS procura o identificador de transação para descobrir qual programa chamar primeiro para fazer o trabalho solicitado. Ele cria uma tarefa para fazer o trabalho e transfere o controle para o programa mencionado.
Uma transação pode ser concluída por meio de várias tarefas.
Uma tarefa pode receber dados e enviar dados para o terminal que a iniciou. Ele pode ler e gravar arquivos e também iniciar outras tarefas.
Tarefa vs. Transação
A diferença entre uma transação e uma tarefa é que vários usuários podem invocar uma transação, mas cada usuário inicia sua própria tarefa.
LUW
LUW significa Unidade Lógica de Trabalho. LUW afirma que um trabalho deve ser feito completamente ou não deve ser feito. Uma tarefa pode conter várias unidades lógicas de trabalho no CICS. Discutiremos mais sobre isso nos próximos módulos.
Inscrição
Um aplicativo é uma série de programas agrupados logicamente para formar várias transações que são usadas para concluir uma tarefa específica para o usuário final.
Os cinco componentes do sistema CICS descritos anteriormente são um agrupamento conveniente de programas do sistema CICS, cada um dos quais desempenha suas próprias funções especializadas. O núcleo do CICS é conhecido como CICS Nucleus, que consiste em programas e tabelas de controle CICS fornecidos pela IBM.
Programas de controle
O núcleo do CICS é construído pelos programas de controle e tabelas de controle correspondentes. Ele oferece vantagens exclusivas. Isso torna o sistema CICS altamente flexível e, portanto, fácil de manter. A seguir estão os programas de controle importantes do CICS -
TCP
O TCP é conhecido como Terminal Control Program.
TCP é usado para receber mensagens do terminal.
Ele mantém os requisitos de comunicação de hardware.
Ele solicita que o CICS inicie as tarefas.
KCP
KCP é conhecido como Programa de Controle de Tarefas.
KCP é usado para controlar simultaneamente a execução de tarefas e suas propriedades relacionadas.
Ele lida com todos os problemas relacionados à multitarefa.
PCP
O PCP é conhecido como Programa de controle de programa.
O PCP é usado para localizar e carregar programas para execução.
Ele transfere o controle entre os programas e, no final, retorna o controle de volta para o CICS.
FCP
O FCP é conhecido como Programa de Controle de Arquivos.
O FCP é usado para fornecer aos programas aplicativos serviços como ler, inserir, atualizar ou excluir registros em um arquivo.
Ele mantém controle exclusivo sobre os registros a fim de manter a integridade dos dados durante as atualizações dos registros.
SCP
O SCP é conhecido como Programa de Controle de Armazenamento. É usado para controlar a alocação e desalocação de armazenamento em uma região CICS.
Tabelas de controle
O CICS consiste em programas e tabelas de controle CICS fornecidos pela IBM. Essas tabelas precisam ser atualizadas de acordo com as informações do aplicativo para a execução bem-sucedida de programas aplicativos CICS. A seguir estão as tabelas de controle importantes -
TCT
A TCT é conhecida como Tabela de controle de terminal.
Quando efetuamos login em um terminal CICS, uma entrada é feita na tabela TCT.
O TCT contém os IDs do terminal que estão conectados à região CICS atual.
O programa de controle do terminal junto com a tabela de controle do terminal reconhece os dados de entrada do terminal.
PCT
PCT é conhecido como Tabela de controle de programa.
Ele contém os IDs de transação (TRANSID) e os nomes de programa ou IDs de programa correspondentes.
TRANSID é único na tabela PCT.
PPT
PPT é conhecido como Tabela de Programa de Processamento. PPT contém o nome do programa ou nome do conjunto de mapas, contador de uso da tarefa, idioma, tamanho, endereço de armazenamento principal, endereço da biblioteca de carga, etc.
O nome do programa ou mapset é único em uma tabela PPT.
O CICS recebe a transação e um nome de programa correspondente é alocado para a transação do PCT. Ele verifica se o programa está carregado ou não. Se for carregado, o contador de uso de tarefa será aumentado em 1. Se o programa não for carregado, o programa será carregado primeiro e o contador de uso de tarefa será definido como 1. Ele obtém o endereço da biblioteca de carregamento da tabela PPT.
FCT
A FCT é conhecida como Tabela de Controle de Arquivos.
Ele contém nomes de arquivos, tipo de arquivo, duração do registro, etc.
Todos os arquivos usados em um programa CICS devem ser declarados em FCT e são abertos e fechados pelo próprio CICS.
Transação
Quando um identificador de transação TP02 é inserido no terminal CICS, primeiro ele verifica se há um programa associado a este identificador de transação na tabela PCT. Se encontrar um, então verifica a tabela PPT para encontrar a localização do Programa para executá-lo.
Se o programa já estiver disponível na memória, ele começa a executar esse programa específico; caso contrário, ele carrega o programa do armazenamento secundário para a memória e começa a executá-lo.
Ciclo de vida da transação
O ciclo de vida da transação tem as seguintes etapas -
Passo 1
O operador do terminal inicia a transação digitando um ID de transação de 1 a 4 caracteres e pressionando a tecla ENTER.
Passo 2
O TCP verifica periodicamente todos os terminais para entrada. Quando uma mensagem é recebida, ele faz o seguinte -
Instrui o SCP a criar um TIOA.
Coloca a mensagem no TIOA.
Passa o controle para o KCP.
etapa 3
O KCP assume o controle do TCP e faz o seguinte -
Valida o id da transação e segurança.
Instrui o SCP a criar uma área de controle de tarefa.
Atribui prioridade à tarefa com base na prioridade do Terminal (definida no TCT), Prioridade do operador (definida no SNT) e Prioridade da transação (definida no PCT).
Adiciona a tarefa à fila de programas em espera.
Despacha os programas em espera por ordem de prioridade.
Passa o controle para o PCP.
Passo 4
O PCP assume o controle do KCP e faz o seguinte -
Localiza o programa e o carrega, se necessário.
Transfere o controle para o programa aplicativo.
Etapa 5
O programa aplicativo assume o controle do PCP e faz o seguinte -
Solicita que o TCP coloque a mensagem na área WORKING STORAGE do programa.
Solicita que o FCP recupere os registros dos arquivos.
Etapa 6
O FCP assume o controle do programa de aplicativo e faz o seguinte -
Solicita uma área de trabalho de arquivo do SCP.
Informa ao KCP que esta tarefa pode esperar até que a E / S seja concluída.
Etapa 7
O KCP faz o seguinte -
Despacha a próxima tarefa na fila.
Despacha novamente a tarefa antiga quando a E / S é concluída.
Transfere o controle para o FCP.
Etapa 8
O FCP devolve o controle ao programa aplicativo.
Etapa 9
O programa de aplicação faz o seguinte -
Processa os dados do arquivo.
Solicita que o TCP envie uma mensagem de E / S.
Retorna o controle ao PCP.
Etapa 10
O PCP retorna o controle ao KCP solicitando que ele finalize a tarefa.
Etapa 11
O KCP instrui o SCP a liberar todo o armazenamento alocado para a tarefa (exceto TIOA).
Etapa 12
O TCP faz o seguinte -
Envia a saída para o terminal.
Solicita que o SCP libere o TIOA.
As transações CICS são usadas para executar várias operações na região CICS. Estaremos discutindo as transações importantes do CICS fornecidas pela IBM em detalhes.
CESN
CESN é conhecido como CICS Execute Sign On.
CESN é usado para conectar-se à região CICS.
Precisamos fornecer o ID do usuário e a senha fornecidos pelo administrador do CICS para fazer logon no CICS. A captura de tela a seguir mostra a aparência da tela de login -
CEDA
CEDA é conhecido como CICS Execute Definition and Administration. É usado por Administradores de Sistema CICS para definir entradas de tabela CICS e outras atividades de administração.
CEMT
CEMT é conhecido como CICS Execute Master Terminal. É usado para consultar e atualizar o status de ambientes CICS e também para outras operações do sistema.
Usando o comando CEMT, podemos gerenciar transações, tarefas, arquivos, programas, etc.
Para obter todas as opções possíveis, digite CEMT e pressione ENTER. Ele exibirá todas as opções.
CEMT é basicamente usado para carregar um novo programa no CICS ou para carregar uma nova cópia do programa no CICS após o programa ou mapset ser alterado.
Exemplo
Pode-se substituir o status do arquivo exibido para alterá-lo. O exemplo a seguir mostra como fechar um arquivo -
CEMT ** Press ENTER & Following Screen is displayed ** STATUS: ENTER ONE OF THE FOLLOWING Inquire Perform Set ** Command to close a file ** CEMT SET FILE (file-name) CEMT I FILE (file-name)
CECI
CECI é conhecido como CICS Execute Command Interpreter. Muitos comandos CICS podem ser executados usando CECI.
CECI é usado para verificar a sintaxe do comando. Ele executa o comando, apenas se a sintaxe estiver correta.
Digite a opção CECI na tela CICS vazia depois de efetuar login. Ela fornece a lista de opções disponíveis.
Exemplo
O exemplo a seguir mostra como enviar dados de saída mapeados para o terminal. Estaremos discutindo sobre o MAPS nos próximos módulos.
CECI SEND MAP (map-name) MAPSET (mapset-name) ERASE
CEDF
O CEDF é conhecido como CICS Execute Debug Facility. Ele é usado para depurar o programa passo a passo, o que ajuda a encontrar os erros.
Digite CEDF e pressione Enter na região CICS. O terminal está no modo EDF a mensagem será exibida. Agora digite o ID da transação e pressione a tecla Enter. Após a iniciação, com cada tecla enter, uma linha é executada. Antes de executar qualquer comando CICS, ele mostra a tela na qual podemos modificar os valores antes de prosseguir.
CMAC
O CMAC é conhecido como CICS Messages for Abend Codes. É usado para localizar a explicação e os motivos dos códigos de abend do CICS.
Exemplo
O exemplo a seguir mostra como verificar os detalhes de um código Abend -
CMAC abend-code
CESF
CESF é conhecido como CICS Execute Sign Off. É usado para fazer o Sign Off da região CICS.
Exemplo
O exemplo a seguir mostra como fazer logoff da região CICS -
CESF LOGOFF
CEBR
CEBR é conhecido como CICS Execute Temporary storage Browse. É usado para exibir o conteúdo de uma fila de armazenamento temporário ou TSQ.
CEBR é usado durante a depuração para verificar se os itens da fila estão sendo gravados e recuperados corretamente. Discutiremos mais sobre TSQ nos próximos módulos.
Exemplo
O exemplo a seguir mostra como invocar o comando CEBR -
CEBR queue-id
Conceitos CICS
Cada comando pode ser obtido executando uma série de macros CICS. Discutiremos alguns recursos básicos que nos ajudarão a entender melhor os conceitos -
Multitarefa
Este recurso do sistema operacional permite que mais de uma tarefa seja executada simultaneamente. A tarefa pode ser compartilhar o mesmo programa ou usar programas diferentes. O CICS planeja a tarefa em sua própria região.
Multi-threading
Este recurso do sistema operacional permite que mais de uma tarefa seja executada simultaneamente, compartilhando o mesmo programa. Para que o multi-threading seja possível, um programa de aplicação deve ser umre-entrant program sob o sistema operacional ou um quasi-reentrant sob o CICS.
Reentrada
Um programa reentrante é aquele que não se modifica e pode reentrar por si mesmo e continuar o processamento após uma interrupção do sistema operacional.
Quase-reentrada
Um programa quase reentrante é um programa reentrante no ambiente CICS. O CICS garante a reentrada adquirindo uma área de armazenamento exclusiva para cada tarefa. Entre os comandos do CICS, o CICS tem o direito exclusivo de usar os recursos da CPU e pode executar outros comandos do CICS de outras tarefas.
Às vezes, muitos usuários usam o mesmo programa simultaneamente; este é o que chamamosmulti-threading. Por exemplo, vamos supor que 50 usuários estejam usando um programa A. Aqui, o CICS fornecerá 50 armazenamento de trabalho para esse programa, mas uma Divisão de Procedimento. E esta técnica é conhecida comoquasi-reentrancy.
Os programas CICS são escritos em linguagem COBOL em Mainframes. Estaremos discutindo sobre como escrever um programa COBOL-CICS simples, compilá-lo e, em seguida, executá-lo.
Programa CICS
Estaremos escrevendo um programa COBOL-CICS simples que exibe algumas mensagens na tela de saída do CICS. Este programa demonstra as etapas envolvidas na execução de um programa COBOL-CICS. A seguir estão as etapas para codificar um programa simples -
Passo 1
Faça login em Mainframes e abra uma sessão TSO.
Passo 2
Crie um novo PDS no qual codificaremos nosso programa.
etapa 3
Crie um novo membro dentro do PDS e codifique o seguinte programa -
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. FILE SECTION. WORKING-STORAGE SECTION. 01 WS-MESSAGE PIC X(40). 01 WS-LENGTH PIC S9(4) COMP. PROCEDURE DIVISION. A000-MAIN-PARA. MOVE 'Hello World' TO WS-MESSAGE MOVE '+12' TO WS-LENGTH EXEC CICS SEND TEXT FROM (WS-MESSAGE) LENGHT(WS-LENGTH) END-EXEC EXEC CICS RETURN END-EXEC.
Passo 4
Depois de codificar o programa, precisamos compilá-lo. Podemos compilar o programa usando o seguinte JCL -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //CICSCOB EXEC CICSCOB, //COPYLIB = ABC.XYZ.COPYLIB, //LOADLIB = ABC.XYZ.LOADLIB //LIB JCLLIB ORDER = CICSXXX.CICS.XXXPROC //CPLSTP EXEC DFHEITVL //TRN.SYSIN DD DSN = ABC.XYZ.PDS(HELLO),DISP = SHR //LKED.SYSIN DD * NAME HELLO(R) //
Etapa 5
Abra uma sessão CICS.
Etapa 6
Vamos agora instalar o programa usando o seguinte comando -
CEMT SET PROG(HELLO) NEW.
Etapa 7
Execute o programa usando o ID de transação associado. O ID da transação é fornecido pelo administrador. Ele mostrará a seguinte saída -
Compilação de programa
O fluxograma a seguir mostra as etapas usadas na compilação de um programa COBOL-CICS -
Tradutor
A função de um tradutor é verificar se há erros de sintaxe nos comandos CICS. Ele os traduz em instruções COBOL equivalentes.
Compilador
A função de um compilador é expandir os copy books COBOL. Ele compila o código após verificar se há erros de sintaxe no código-fonte.
Editor de ligação
A função de um Linkage Editor é vincular diferentes módulos de objetos para criar um único módulo de carregamento.
O BMS é conhecido como suporte de mapeamento básico. Um aplicativo consiste em telas formatadas que atuam como uma ponte entre o terminal e os programas CICS. Para que a comunicação ocorra entre o terminal e os programas CICS, usamos os serviços de entrada / saída do terminal CICS. Usamos o BMS para criar designs de tela com posições e atributos adequados. A seguir estão as funções do BMS -
O BMS atua como uma interface entre o terminal e os programas CICS.
O design e o formato da tela são separados da lógica de aplicação.
O BMS torna o hardware do aplicativo independente.
Tela formatada
A tela mostrada abaixo é uma tela de menu e pode ser projetada usando BMS. Seus pontos principais são os seguintes -
A tela pode ter um título, data e qualquer outra informação a ser exibida.
As opções 1, 2 e 3 são os campos sem nome que são os títulos da tela.
No campo Seleção, precisamos fornecer a entrada. Essa entrada é então enviada ao programa CICS para processamento adicional.
Na parte inferior da tela, as teclas de ação são exibidas.
Todos os campos e a própria tela são definidos com macros BMS. Quando todo o mapa é definido, podemos usar JCL para montá-lo.
Termos Básicos BMS
A seguir estão os termos básicos que usaremos nos próximos módulos -
Mapa
O mapa é um formato de tela única que pode ser projetado usando macros BMS. Ele pode ter nomes contendo de 1 a 7 caracteres.
Mapset
Mapset é uma coleção de mapas que são vinculados para formar um módulo de carregamento. Deve ter uma entrada PPT. Ele pode ter nomes de 1 a 7 caracteres.
Macros BMS
O mapa BMS é um programa escrito em linguagem Assembly para gerenciar telas. As três macros usadas para definir a tela são DFHMSD, DFHMDI e DFHMDF.
DFHMSD
A macro DFHMSD gera definição de Mapset. É um identificador de macro que mostra que estamos iniciando um mapset. O nome do mapset é o nome do módulo de carregamento e uma entrada na tabela PPT deve estar presente. A tabela a seguir mostra a lista de parâmetros que podem ser usados em DFHMSD -
Sr. Não Parâmetro e Descrição 1 TYPE
TYPE é usado para definir o tipo de mapa. Se TYPE =
MAP - Mapa físico é criado
DSECT - Mapa simbólico é criado
&& SYSPARM - Físico e Simbólico, ambos são criados
FINAL - Para indicar o final de uma codificação de mapset.2 MODE
MODE é usado para indicar operações de entrada / saída. IF MODE =
IN - Para um mapa de entrada apenas
OUT - Para um mapa de saída apenas
INOUT Para ambos os mapas de entrada e saída3 LANG
LANG = ASM / COBOL / PL1
Decide o idioma da estrutura DSECT, para cópia no programa aplicativo.4 STORAGE
Se ARMAZENAMENTO =
AUTO - Para adquirir uma área de mapa simbólica separada para cada conjunto de mapas
BASE - Para ter a mesma base de armazenamento para os mapas simbólicos de mais de um conjunto de mapas5 CTRL
CRTL é usado para definir as solicitações de controle do dispositivo. Se CTRL =
FREEKB - Para desbloquear o teclado
FRSET - Para redefinir o MDT para o status zero
ALARM - Para definir um alarme no tempo de exibição da tela
PRINT - Para indicar o mapset a ser enviado à impressora.6 TERM
TERM = tipo garante a independência do dispositivo, necessária se outro terminal diferente de 3270 estiver sendo usado.
7 TIOAPFX
TIOAPFX = SIM / NÃO
SIM - Para reservar o espaço do prefixo (12 bytes) para comandos BMS para acessar TIOA corretamente. Obrigatório para o nível de comando CICS.Exemplo
O exemplo a seguir mostra como codificar uma definição de mapset -
MPST01 DFHMSD TYPE = &SYSPARM, X CTRL = (FREEKB,FRSET), X LANG = COBOL, X STORAGE = AUTO, X TIOAPFX = YES, X MODE = INOUT, X TERM = 3270 DFHMSD TYPE = FINAL END
DFHMDI
A macro DFHMDI gera definições de mapa. Mostra que estamos iniciando um novo mapa. Mapname é seguido pela macro DFHMDI. Mapname é usado para enviar ou receber mapas. A tabela a seguir mostra os parâmetros que usamos dentro de uma macro DFHMDI -
Sr. Não Parâmetro e Descrição 1 SIZE
SIZE = (linha, coluna)
Este parâmetro fornece o tamanho do mapa. O BMS nos permite construir uma tela usando vários mapas, e este parâmetro torna-se importante quando estamos usando mais de um mapa em um único mapset.2 LINE
Indica o número da linha inicial do mapa.
3 COLUMN
Indica o número da coluna inicial do mapa.
4 JUSTIFY
É usado para especificar o mapa inteiro ou os campos do mapa a serem justificados à esquerda ou à direita.
5 CTRL
CRTL é usado para definir as solicitações de controle do dispositivo. Se CTRL =
FREEKB - Para desbloquear o teclado
FRSET - Para redefinir o MDT para o status zero
ALARME - Para definir um alarme no tempo de exibição da tela
PRINT - Para indicar o mapa a ser enviado para a impressora6 TIOAPFX
TIOAPFX = SIM / NÃO
SIM - Para reservar o espaço do prefixo (12 bytes) para comandos BMS para acessar TIOA corretamente. Obrigatório para o nível de comando CICS.
Exemplo
O exemplo a seguir mostra como codificar uma definição de mapa -
MAPSTD DFHMDI SIZE = (20,80), X LINE = 01, X COLUMN = 01, X CTRL = (FREEKB,FRSET)
DFHMDF
A macro DFHMDF é usada para definir nomes de campo. O nome do campo é mencionado com relação ao qual a macro DFHMDF é codificada. Este nome de campo é usado dentro do programa. Não escrevemos o nome do campo contra o campo constante que não queremos usar dentro do programa. A tabela a seguir mostra a lista de parâmetros que podem ser usados dentro de uma macro DFHMDF -
Sr. Não Parâmetro e Descrição 1 POS
Esta é a posição na tela onde o campo deve aparecer. Um campo começa com seu byte de atributo, portanto, se você codificar POS = (1,1), o byte de atributo para esse campo está na linha 1 na coluna 1 e os dados reais começam na coluna 2.
2 LENGTH
Este é o comprimento do campo, sem contar o byte de atributo.
3 INITIAL
Estes são os dados de caractere para um campo de saída. Usamos isso para especificar rótulos e títulos para a tela e mantê-los independentes do programa. Para o primeiro campo na tela do menu, por exemplo, iremos codificar: INITIAL = 'MENU'.
4 JUSTIFY
É usado para especificar o mapa inteiro ou os campos do mapa a serem justificados à esquerda ou à direita.
5 ATTRB
ATTRB = (ASKIP / PROT / UNPROT, NUM, BRT / NORM / DRK, IC, FSET) Descreve os atributos do campo.
ASKIP - Autoskip. Os dados não podem ser inseridos neste campo. O cursor pula para o próximo campo.
PROT - Campo protegido. Os dados não podem ser inseridos neste campo. Se os dados forem inseridos, isso causará o status de inibição de entrada.
UNPROT - Campo desprotegido. Os dados podem ser inseridos e isso é usado para todos os campos de entrada.
NUM - campo numérico. Somente números (0 a 9) e caracteres especiais ('.' E '-') são permitidos.
BRT - Exibição brilhante de um campo (destaque).
NORM - exibição normal.
DRK - Visor escuro.
IC - Inserir cursor. O cursor será posicionado neste campo. Caso IC seja especificado mais de uma vez, o cursor é colocado no último campo.
FSET - Conjunto de campo. O MDT é configurado para que os dados do campo sejam enviados do terminal para o computador host, independentemente de o campo ter sido realmente modificado pelo usuário.
6 PICIN
PICIN se aplica ao campo de dados que é usado como entrada como PICIN = 9 (8).
7 PICOUT
PICIN se aplica ao campo de dados que é usado como saída como PICOUT = Z (8).
Exemplo
O exemplo a seguir mostra como codificar uma definição de campo -
DFHMDF POS = (01,01), X LENGTH = 7, X INITIAL = ‘SCREEN1’, X ATTRB = (PROT,NORM) STDID DFHMDF POS = (01,70), X LENGTH = 08, X ATTRB = (PROT,NORM)
O BMS recebe os dados inseridos pelo usuário e os formata em uma área de mapa simbólica. O programa aplicativo tem acesso apenas aos dados presentes no mapa simbólico. O programa aplicativo processa os dados e a saída é enviada para o mapa simbólico. O BMS mesclará a saída dos dados simbólicos com o mapa físico.
Mapa físico
Mapa físico é um módulo de carregamento na biblioteca de carregamento que contém informações sobre como o mapa deve ser exibido.
Ele contém os detalhes sobre os atributos de todos os campos no mapa e suas posições.
Ele contém o formato de exibição do mapa para um determinado terminal.
Ele é codificado usando macros BMS. Ele é montado separadamente e o link editado na biblioteca CICS.
Mapa Simbólico
Um mapa simbólico é um livro de cópia na biblioteca. O Copy book é usado pelo programa aplicativo CICS para enviar e receber dados do terminal.
Ele contém todos os dados variáveis que são copiados para a seção WORKINGSTORAGE do programa.
Possui todos os campos nomeados. O programador do aplicativo usa esses campos para ler e gravar dados no mapa.
Skipper e Stopper Field
Para um campo nomeado desprotegido, em um mapa, se tivermos especificado um comprimento de 10, isso significa que o campo de nome pode assumir valores cujo comprimento não pode exceder 10. Mas quando você exibe este mapa usando CICS e começa a inserir valores para este campo em na tela, podemos inserir mais de 10 Caracteres, ou seja, até o final da tela e podemos entrar ainda na próxima linha. Para evitar isso, usamos o campo Skipper ou o campo stopper. Um campo Skipper geralmente seria um campo Sem nome de comprimento 1, especificado após um campo nomeado.
Skipper Field
Se colocarmos um campo skipper após o campo desprotegido nomeado, então, ao inserir o valor, quando o comprimento especificado for atingido, o cursor se posicionará automaticamente no próximo campo desprotegido. O exemplo a seguir mostra como adicionar um campo de skipper -
NUMBER DFHMDF POS = (01,01), X LENGTH = 5, X ATTRB = (UNPROT,IC) DFHMDF POS = (01,07), X LENGTH = 1, X ATTRB = (ASKIP)
Stopper Field
Se colocarmos um campo limitador após o campo desprotegido nomeado, então, ao inserir o valor, uma vez que o comprimento especificado seja atingido, o cursor irá parar seu posicionamento. O exemplo a seguir mostra como adicionar um campo de parada -
NUMBER DFHMDF POS = (01,01), X LENGTH = 5, X ATTRB = (UNPROT,IC) DFHMDF POS = (01,07), X LENGTH = 1, X ATTRB = (PROT)
Byte de atributo
O byte de atributo de qualquer campo armazena informações sobre as propriedades físicas do campo. O diagrama a seguir e a tabela explicam o significado de cada bit.
Posição do bit Descrição Configurações de bits 0 e 1 Determinado pelo conteúdo dos bits 2 a 7 2 e 3 Proteção e Mudança 00 - Alfanumérico não protegido
01 - Numérico não
protegido 10 - Parada protegida
11 - Pulo protegido4 e 5 Intensidade 00 - Normal
01 - Normal
10 - Claro
11 - Sem exibição (escuro)6 Deve ser zero sempre 7 Tag de dados modificados 0 - Campo não modificado
1 - Campo modificadoTag de dados modificados
Modified Data Tag (MDT) é o último bit no byte de atributo.
MDT é uma bandeira que contém um único bit. Ele especifica se o valor deve ser transferido para o sistema ou não.
Seu valor padrão é 1, quando o valor do campo é alterado.
Se MDT for 0, os dados não podem ser transferidos; e se MDT for 1, os dados podem ser transferidos.
Enviar mapa
O comando send map grava a saída formatada no terminal. É usado para enviar o mapa para o terminal a partir do programa aplicativo. O seguinte segmento de código mostra como enviar um mapa para o terminal -
EXEC CICS SEND MAP('map-name') MAPSET('mapset-name') [FROM(data-area)] [LENGTH(data_value)] [DATAONLY] [MAPONLY] [CURSOR] [ERASE/ERASEAUP] [FREEKB] [FRSET] END-EXEC
A tabela a seguir lista os parâmetros usados em um comando de envio de mapa junto com seu significado.
Sr. Não Parâmetro e Descrição 1 Map-name
É o nome do mapa que queremos enviar. É obrigatório.
2 Mapset-name
É o nome do conjunto de mapas que contém o mapname. O nome do mapset é necessário, a menos que seja igual ao nome do mapa.
3 FROM
É usado se decidimos usar um nome DSECT diferente, devemos usar a opção FROM (dsect-name) junto com o comando SEND MAP.
4 MAPONLY
Isso significa que nenhum dado do seu programa deve ser mesclado no mapa e apenas as informações no mapa são transmitidas.
5 DATAONLY
É o oposto lógico de MAPONLY. Nós o usamos para modificar os dados variáveis em um display que já foi criado. Apenas os dados do seu programa são enviados para a tela. As constantes no mapa não são enviadas.
6 ERASE
Isso faz com que toda a tela seja apagada antes que o que estamos enviando seja mostrado.
7 ERASEUP
Faz com que apenas campos desprotegidos sejam apagados.
8 FRSET
Redefinir sinalizador desativa a tag de dados modificada no byte de atributo para todos os campos na tela antes que o que você está enviando seja colocado lá.
9 CURSOR
Ele pode ser usado para posicionar o cursor na tela do terminal. O cursor pode ser definido movendo -1 para a parte L do campo e enviando o mapa.
10 ALARM
Faz com que o alarme sonoro soe.
11 FREEKB.
O teclado é desbloqueado se especificarmos FREEKB no mapa ou no comando SEND.
12 PRINT
Ele permite que a saída de um comando SEND seja impressa em uma impressora.
13 FORMFEED
Isso faz com que a impressora restaure o papel no início da próxima página antes que a saída seja impressa.
Receber mapa
Quando queremos receber entrada de um terminal, usamos o comando RECEIVE MAP. Os parâmetros MAP e MAPSET têm exatamente o mesmo significado que para o comando SEND MAP. O seguinte segmento de código mostra como receber um mapa -
EXEC CICS RECEIVE MAP('map-name') MAPSET('mapset-name') [INTO(data-area)] [FROM(data-area)] [LENGTH(data_value)] END-EXEC
Execução de Mapset
As etapas a seguir são necessárias para desenvolver e executar um mapset -
Step 1 - Abra uma sessão TSO.
Step 2 - Crie um novo PDS.
Step 3 - Codifique um mapset em um novo membro de acordo com o requisito.
Step 4 - Monte o mapset usando o JCL fornecido pelo administrador do CICS.
Step 5 - Abra uma sessão CICS.
Step 6 - Instale o programa usando o comando -
CEMT SET PROG (nome do mapset) NOVO
Step 7 - Digite o seguinte comando para enviar o mapa para o terminal -
CECI SEND MAP (map-name) MAPSET (mapset-name) APAGAR FREEKB
Qualquer programa de aplicativo requer uma interface para interagir com o CICS. EIB (Execute Interface Block) atua como uma interface para permitir que programas aplicativos se comuniquem com o CICS. EIB contém as informações necessárias durante a execução de um programa.
Verbos COBOL restritos
Ao codificar um programa CICS, não podemos usar os comandos que retornam o controle diretamente para o MVS. Se codificarmos esses verbos COBOL, não haverá nenhum erro de compilação, mas podemos obter resultados imprevisíveis. A seguir estão os verbos COBOL que não devem ser usados em um programa CICS -
Instruções de E / S de arquivo como Abrir, Ler, Gravar, Reescrever, Fechar, Excluir e Iniciar. Toda E / S de arquivo no CICS é manipulada pelo módulo de controle de arquivo e eles têm seu próprio conjunto de instruções como READ, WRITE, REWRITE e DELETE, que discutiremos nos próximos módulos.
A seção de arquivos e a divisão de meio ambiente não são necessárias.
As instruções COBOL que chamam funções do sistema operacional como Aceitar, Data / Hora não podem ser usadas.
Não use DISPLAY, MERGE, STOP RUN e GO BACK.
Executar Bloco de Interface
Execute Interface Block (EIB) é um bloco de controle que é carregado automaticamente pelo CICS para cada programa.
O BEI é exclusivo para uma tarefa e existe durante a tarefa. Ele contém um conjunto de informações relacionadas ao sistema correspondentes à tarefa.
Ele contém informações sobre o identificador da transação, hora, data, etc., que é usado pelo CICS durante a execução de um programa aplicativo.
Todo programa executado como parte da tarefa tem acesso ao mesmo EIB.
Os dados no EIB em tempo de execução podem ser visualizados executando o programa no modo CEDF.
Campos EIB
A tabela a seguir fornece uma lista de campos que estão presentes no EIB -
Campo EIB Cláusula PIC Descrição EIBAID X (1) Tecla de ajuda pressionada EIBCALEN S9 (4) COMP Ele contém comprimento de DFHCOMMAREA EIBDATE S9 (7) COMP-3 Ele contém a Data Atual do Sistema EIBRCODE X (6) Contém o código de retorno da última transação EIBTASKN S9 (7) COMP-3 Ele contém o número da tarefa EIBTIME S9 (7) COMP-3 Ele contém a hora atual do sistema EIBTRMID X (4) Identificador de Terminal EIBTRNID X (4) Identificador de transação Classificação de programas CICS
Os Programas CICS são classificados nas três categorias a seguir, que discutiremos um por um -
- Programas não conversacionais
- Programas de conversação
- Programas pseudo-conversacionais - discutiremos no próximo módulo
Programas Não Conversacionais
Ao executar programas não conversacionais, nenhuma intervenção humana é necessária. Todas as entradas necessárias são fornecidas quando o programa é iniciado.
Eles são semelhantes aos programas em lote executados no modo lote. Portanto, no CICS, eles raramente são desenvolvidos.
Podemos dizer que são usados apenas para exibir uma seqüência de telas em intervalos regulares de tempo.
Exemplo
O exemplo a seguir mostra um programa não conversacional que simplesmente exibirá "OLÁ MUNDO" no terminal CICS como saída -
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-MESSAGE PIC X(30). PROCEDURE DIVISION. ******************************************************** * SENDING DATA TO SCREEN * ******************************************************** MOVE 'HELLO WORLD' TO WS-MESSAGE EXEC CICS SEND TEXT FROM (WS-MESSAGE) END-EXEC ******************************************************** * TASK TERMINATES WITHOUT ANY INTERACTION FROM THE USER* ******************************************************** EXEC CICS RETURN END-EXEC.
Programa de conversação
O envio de uma mensagem para o terminal e o recebimento de uma resposta do usuário é chamado de conversation. Um aplicativo online consegue uma conversa entre o usuário e o programa aplicativo por um par de comandos SEND e RECEIVE. Os pontos principais de um programa de conversação são os seguintes -
O sistema envia uma mensagem para a tela e aguarda a resposta do usuário.
O tempo que o usuário leva para responder é conhecido como Think Time. Este tempo é consideravelmente alto, o que é uma grande desvantagem dos programas de conversação.
O usuário fornece a entrada necessária e pressiona uma tecla AID.
O aplicativo processa a entrada do usuário e envia a saída.
O programa é carregado no armazenamento principal no início e é retido até o término da tarefa.
Exemplo
O exemplo a seguir mostra um programa de conversão que obtém a entrada do usuário e, em seguida, simplesmente exibe a mesma entrada no terminal CICS como saída -
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-MESSAGE PIC X(30) VALUE SPACES. PROCEDURE DIVISION. MOVE 'ENTER MESSAGE' TO WS-MESSAGE ******************************************************** * SENDING DATA FROM PROGRAM TO SCREEN * ******************************************************** EXEC CICS SEND TEXT FROM (WS-MESSAGE) END-EXEC ******************************************************** * GETTING INPUT FROM USER * ******************************************************** EXEC CICS RECEIVE INTO(WS-MESSAGE) END-EXEC EXEC CICS SEND TEXT FROM (WS-MESSAGE) END-EXEC ******************************************************** * COMMAND TO TERMINATE THE TRANSACTION * ******************************************************** EXEC CICS RETURN END-EXEC.
A partir de agora, cobrimos os programas de não conversão e conversão. Os programas de conversão têm uma grande desvantagem, poisthink timeé consideravelmente alto. Para superar esse problema, a programação de pseudo-conversão entrou em cena. Vamos agora discutir mais sobre programas de pseudo-conversão.
Programa de Pseudo-Conversão
A seguir está a sequência de eventos que ocorrem em um programa de pseudo-conversão -
Step 1 - O sistema envia uma mensagem para a tela e encerra a transação, especificando a transação a ser iniciada quando a entrada do usuário for recebida.
Step 2- O sistema aloca os recursos usados por esta transação para outras transações em execução no sistema. Portanto, podemos utilizar os recursos em um programa de pseudo-conversão até que o usuário forneça a entrada.
Step 3- O sistema pesquisa a entrada do terminal em intervalos regulares de tempo. Quando a entrada é recebida, ela é processada e a saída é exibida.
Step 4 - O programa aplicativo é carregado no armazenamento principal quando necessário e liberado quando não está em uso.
Técnicas de Pseudo Conversão
O ponto importante a ser observado na pseudo-conversa é a passagem de dados entre todas as tarefas. Discutiremos sobre as técnicas de transmissão de dados.
COMMAREA
COMMAREA é conhecida como área de comunicação. COMMAREA é usado para passar dados entre tarefas. O exemplo a seguir mostra como passar COMMAREA onde WSCOMMAREA e WS-COMMAREA-LENGTH são declarados na Seção de Armazenamento de Trabalho -
EXEC CICS RETURN
TRANSID ('transaction-id')
COMMAREA (WS-COMMAREA)
LENGTH (WS-COMMAREA-LENGTH)
END-EXEC.
DFHCOMMAREA
DFHCOMMAREA é uma área de memória especial que é fornecida pelo CICS para cada tarefa.
É usado para passar dados de um programa para outro programa. Os programas podem existir na mesma transação ou também em transações diferentes.
É declarado na seção de ligação do programa no nível 01.
Deve ter a mesma cláusula de imagem que WS-COMMAREA.
Os dados podem ser movidos de volta de DFHCOMMAREA para WS-COMMAREA usando uma instrução MOVE.
MOVE DFHCOMMAREA TO WS-COMMAREA.
Exemplo
Depois de enviar o mapa, a tarefa termina e aguarda a resposta do usuário. Nesse estágio, os dados precisam ser salvos, pois embora a tarefa tenha terminado, a transação não foi. Quando essa transação for retomada, será necessário o status anterior da tarefa. O usuário insere a entrada. Isso agora deve ser recebido pelo comando RECEIVE MAP e então validado. O exemplo a seguir mostra como declarar COMMAREA e DFHCOMMAREA -
WORKING-STORAGE SECTION.
01 WS-COMMAREA.
05 WS-DATA PIC X(10).
LINKAGE SECTION.
01 DFHCOMMAREA.
05 LK-DATA PIC X(10).
Pseudo-código
Dada abaixo está a lógica do pseudo código que usamos na pseudo programação -
MOVE DFHCOMMAREA TO WS-COMMAREA
IF EIBCALEN = 0
STEP1: SEND MAP
STEP2: MOVE <internal-transaction-id1> to WS-COMMAREA
STEP3: ISSUE CONDITIONAL RETURN
ELSE
IF WS-COMMAREA = <internal-transaction-id1>
STEP4: RECEIVE MAP
STEP5: PROCESS DATA
STEP6: SEND OUTPUT MAP
STEP7: MOVE <internal-transaction-ID2> to WS-COMMAREA
STEP8: ISSUE CONDITIONAL RETURN
END-IF
END-IF
STEP9: REPEAT STEP3 TO STEP7 UNTIL EXIT
Exemplo
O exemplo a seguir mostra um programa de pseudo-conversão -
******************************************************************
* PROGRAM TO DEMONSTRATE PSEUDO-CONVERSATION *
******************************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-MESSAGE PIC X(30).
01 WS-COMMAREA PIC X(10) VALUE SPACES.
LINKAGE SECTION.
01 DFHCOMMAREA PIC X(10).
PROCEDURE DIVISION.
MOVE DFHCOMMAREA TO WS-COMMAREA
IF WS-COMMAREA = SPACES
******************************************************************
* TRANSACTION GETTING EXECUTED FOR THE FIRST TIME *
******************************************************************
MOVE 'HELLO' TO WS-MESSAGE
EXEC CICS SEND TEXT
FROM (WS-MESSAGE)
END-EXEC
MOVE 'FIRST' TO WS-COMMAREA
******************************************************************
* TASK ENDS AS A RESULT OF RETURN. IF AID KEY PRESSED, NEXT *
* TRANSACTION SHOULD BE TP002. DATA PASSED FROM WS-COMMAREA TO *
* DFHCOMMAREA *
******************************************************************
EXEC CICS RETURN
TRANSID('TP002')
COMMAREA(WS-COMMAREA)
END-EXEC
******************************************************************
* IF COMMAREA IS NOT EMPTY , THEN TP002 HAS BEEN EXECUTED ONCE *
* ALREADY, USER INTERACTION IS FACILITATED BY RECEIVE *
******************************************************************
ELSE
EXEC CICS RECEIVE
INTO(WS-MESSAGE)
END-EXEC
EXEC CICS SEND TEXT
FROM (WS-MESSAGE)
END-EXEC
******************************************************************
* TASK ENDS AS A RESULT OF RETURN, NO NEXT TRANSACTION SPECIFIED *
* TO BE EXECUTED *
******************************************************************
EXEC CICS RETURN
END-EXEC
END-IF.
Vantagens da pseudo conversão
A seguir estão as vantagens da pseudo conversão -
Os recursos são melhor utilizados. Os recursos são liberados assim que o programa é suspenso temporariamente.
Parece que está em modo de conversação.
Tem melhor tempo de resposta.
Declarações de Devolução
A seguir estão os dois tipos de instruções de retorno que são usadas no CICS -
Return-1
Quando a seguinte instrução de retorno incondicional é emitida, a tarefa e a transação (programa) são encerradas.
EXEC CICS RETURN
END-EXEC.
Return-2
Quando o seguinte retorno condicional, isto é, retorno com a instrução TRANSID, é emitido, o controle retorna ao CICS com o próximo transid a ser executado. A próxima transação começa quando o usuário pressiona uma tecla AID.
EXEC CICS RETURN
TRANSID ('trans-id')
[COMMAREA(WS-COMMAREA)]
END-EXEC.
Conforme discutimos nos módulos anteriores, as chaves AID são conhecidas como Chaves Identificadoras de Atenção. O CICS pode detectar apenas chaves AID. Depois de digitar todas as entradas, apenas quando o usuário pressiona uma das teclas AID, o CICS assume o controle. As teclas AID incluem ENTER, PF1 a PF24, PA1 a PA3 e CLEAR.
Validando chaves de AID
A tecla pressionada pelo usuário é verificada usando EIBAID.
EIBAID tem um byte de comprimento e contém o valor do identificador de atenção real usado no fluxo de entrada 3270.
O CICS nos fornece um conjunto pré-codificado de variáveis que podem ser usadas no programa de aplicação escrevendo a seguinte instrução -
COPIAR DFHAID
DFHAID
DFHAID é um copybook que é usado em programas aplicativos para incluir um conjunto de variáveis pré-codificado do CICS. O seguinte conteúdo está presente no copybook DFHAID -
01 DFHAID.
02 DFHNULL PIC X VALUE IS ' '.
02 DFHENTER PIC X VALUE IS ''''.
02 DFHCLEAR PIC X VALUE IS '_'.
02 DFHCLRP PIC X VALUE IS '¦'.
02 DFHPEN PIC X VALUE IS '='.
02 DFHOPID PIC X VALUE IS 'W'.
02 DFHMSRE PIC X VALUE IS 'X'.
02 DFHSTRF PIC X VALUE IS 'h'.
02 DFHTRIG PIC X VALUE IS '"'.
02 DFHPA1 PIC X VALUE IS '%'.
02 DFHPA2 PIC X VALUE IS '>'.
02 DFHPA3 PIC X VALUE IS ','.
02 DFHPF1 PIC X VALUE IS '1'.
02 DFHPF2 PIC X VALUE IS '2'.
02 DFHPF3 PIC X VALUE IS '3'.
02 DFHPF4 PIC X VALUE IS '4'.
02 DFHPF5 PIC X VALUE IS '5'.
02 DFHPF6 PIC X VALUE IS '6'.
02 DFHPF7 PIC X VALUE IS '7'.
02 DFHPF8 PIC X VALUE IS '8'.
02 DFHPF9 PIC X VALUE IS '9'.
02 DFHPF10 PIC X VALUE IS ':'.
02 DFHPF11 PIC X VALUE IS '#'.
02 DFHPF12 PIC X VALUE IS '@'.
02 DFHPF13 PIC X VALUE IS 'A'.
02 DFHPF14 PIC X VALUE IS 'B'.
02 DFHPF15 PIC X VALUE IS 'C'.
02 DFHPF16 PIC X VALUE IS 'D'.
02 DFHPF17 PIC X VALUE IS 'E'.
02 DFHPF18 PIC X VALUE IS 'F'.
02 DFHPF19 PIC X VALUE IS 'G'.
02 DFHPF20 PIC X VALUE IS 'H'.
02 DFHPF21 PIC X VALUE IS 'I'.
02 DFHPF22 PIC X VALUE IS '¢'.
02 DFHPF23 PIC X VALUE IS '.'.
02 DFHPF24 PIC X VALUE IS '<'.
Exemplo
O exemplo a seguir mostra como usar o copybook DFHAID em um programa de aplicação -
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY DFHAID.
PROCEDURE DIVISION.
A000-AIDKEY-PARA.
EVALUATE EIBAID
WHEN DFHAID
PERFORM A000-PROCES-PARA
WHEN DFHPF1
PERFORM A001-HELP-PARA
WHEN DFHPF3
PERFORM A001-EXIT-PARA
END-EVALUATE.
Posicionamento do Cursor
Existem duas maneiras de substituir a posição especificada na definição do mapa.
Uma maneira é especificar a posição da tela em relação ao número da linha e da coluna na opção CURSOR no comando send map.
Outra forma é mover -1 para a variável simbólica do mapa com o sufixo L. A seguir, envie o mapa com a opção CURSOR no SEND MAP.
Exemplo
O exemplo a seguir mostra como substituir a posição do cursor para o campo NAME -
MOVE -1 TO NAMEL
EXEC CICS SEND
MAP ('map-name')
MAPSET ('name-field')
ERASE
FREEKB
CURSOR
END-EXEC.
Modificando Atributos Dinamicamente
Ao enviar um mapa, se quisermos ter atributos diferentes para um campo diferente do especificado no mapa, podemos substituir isso definindo o campo no programa. A seguir está a explicação para substituir os atributos de um campo -
Para substituir os atributos de um campo, devemos incluir DFHATTR no programa de aplicação. É fornecido pelo CICS.
O atributo necessário pode ser escolhido na lista e movido para a variável de campo simbólica com o sufixo 'A'.
DFHATTR possui o seguinte conteúdo -
01 CICS-ATTRIBUTES.
05 ATTR-UXN PIC X(01) VALUE SPACE.
05 ATTR-UXMN PIC X(01) VALUE 'A'.
05 ATTR-UXNL PIC X(01) VALUE 'D'.
05 ATTR-UXMNL PIC X(01) VALUE 'E'.
05 ATTR-UXBL PIC X(01) VALUE 'H'.
05 ATTR-UXMBL PIC X(01) VALUE 'I'.
05 ATTR-UXD PIC X(01) VALUE '<'.
05 ATTR-UXMD PIC X(01) VALUE '('.
05 ATTR-U9N PIC X(01) VALUE '&'.
05 ATTR-U9MN PIC X(01) VALUE 'J'.
05 ATTR-U9NL PIC X(01) VALUE 'M'.
05 ATTR-U9MNL PIC X(01) VALUE 'N'.
05 ATTR-U9BL PIC X(01) VALUE 'Q'.
05 ATTR-U9MBL PIC X(01) VALUE 'R'.
05 ATTR-U9D PIC X(01) VALUE '*'.
05 ATTR-U9MD PIC X(01) VALUE ')'.
05 ATTR-PXN PIC X(01) VALUE '-'.
05 ATTR-PXMN PIC X(01) VALUE '/'.
05 ATTR-PXNL PIC X(01) VALUE 'U'.
05 ATTR-PXMNL PIC X(01) VALUE 'V'.
05 ATTR-PXBL PIC X(01) VALUE 'Y'.
05 ATTR-PXMBL PIC X(01) VALUE 'Z'.
05 ATTR-PXD PIC X(01) VALUE '%'.
05 ATTR-PSN PIC X(01) VALUE '0'.
05 ATTR-PSMN PIC X(01) VALUE '1'.
05 ATTR-PSNL PIC X(01) VALUE '4'.
05 ATTR-PSMNL PIC X(01) VALUE '5'.
05 ATTR-PSBL PIC X(01) VALUE '8'.
05 ATTR-PSMBL PIC X(01) VALUE '9'.
05 ATTR-PSD PIC X(01) VALUE '@'.
05 ATTR-PSMD PIC X(01) VALUE "'".
O CICS nos permite acessar os dados do arquivo de várias maneiras. A maioria dos acessos a arquivos são aleatórios no sistema online, pois as transações a serem processadas não são agrupadas e classificadas em qualquer tipo de ordem. Portanto, o CICS suporta os métodos usuais de acesso direto - VSAM e DAM (Método de Acesso Direto). Também nos permite acessar dados usando gerenciadores de banco de dados.
Acesso aleatório
A seguir estão os comandos que são usados para processamento aleatório -
Sr. Não | Comandos e descrição |
---|---|
1 | LER O comando READ lê os dados de um arquivo usando a chave primária. |
2 | ESCREVA O comando Write é usado para adicionar novos registros a um arquivo. |
3 | REESCREVER O comando REWRITE é usado para modificar um registro que já está presente em um arquivo. |
4 | EXCLUIR O comando DELETE é usado para excluir um registro que está presente em um arquivo. |
Acesso Sequencial
A seguir estão os comandos que são usados para o processamento sequencial -
Sr. Não | Comandos e descrição |
---|---|
1 | STARTBR STARTBR é conhecido como iniciar navegação. |
2 | READNEXT / READPREV Quando emitimos um comando STARTBR, ele não disponibiliza os registros. |
3 | RESETBR O comando RESETBR nos permite redefinir nosso ponto de partida no meio de uma navegação. |
4 | ENDBR Quando terminamos de ler um arquivo sequencialmente, encerramos a navegação usando o comando ENDBR. |
Existem muitos tipos de abendse erros que podem ser enfrentados ao usar um aplicativo CICS. Podem surgir erros devido a problemas de hardware ou software. Estaremos discutindo sobre erros e tratamento de erros neste módulo.
Erros CICS
A seguir estão os erros do CICS que podem surgir durante a execução de aplicativos CICS -
Alguns erros esperados do CICS surgem quando as condições não são normais no sistema CICS. Por exemplo, se estivermos lendo um determinado registro e o registro não for encontrado, obteremos o erro "Não encontrado".Mapfailé um erro semelhante. Os erros nesta categoria são tratados por lógica explícita no programa.
Erros lógicos surgem devido a alguns motivos, como divisão por zero, caractere ilegal em campo numérico ou erro de identificação de transação.
Os erros relacionados ao hardware ou outras condições do sistema estão além do controle de um programa aplicativo. Por exemplo, obter erro de entrada / saída ao acessar um arquivo.
Comandos de tratamento de erros
O CICS fornece vários mecanismos para identificar os erros e tratá-los em nossos programas. A seguir estão os comandos que são usados para lidar com os erros esperados do CICS -
Sr. Não | Comandos de manipulação e descrição |
---|---|
1 | Condição de manuseio A condição de controle é usada para transferir o controle do programa para um parágrafo ou etiqueta de procedimento. |
2 | Handle Abend Se um programa termina de forma anormal devido a alguns motivos como erro de entrada-saída, ele pode ser manipulado usando o comando Handle Abend CICS. |
3 | Abend O comando Abend é usado para encerrar a tarefa intencionalmente. |
4 | Ignorar condição A condição Ignorar é usada quando não queremos que nenhuma ação seja tomada se ocorrer um abend ou erro específico mencionado dentro da condição Ignorar. |
5 | Nohandle Nohandle pode ser especificado para qualquer comando CICS. |
O CICS Program Control Program (PCP) gerencia o fluxo de programas aplicativos. Todos os programas aplicativos devem ter uma entrada na Tabela de Programas de Processamento. A seguir estão os comandos que são usados para serviços de controle de programa -
- XCTL
- Link
- Load
- Release
- Return
Níveis Lógicos do Programa
Os programas aplicativos executados no CICS têm vários níveis lógicos. O primeiro programa que recebe o controle diretamente está no nível lógico mais alto, ou seja, Nível 1. O programa vinculado está no próximo nível lógico do programa de vinculação. Os programas XCTL são executados no mesmo nível. Ficará claro quando passaremos por Link e XCTL, mais adiante neste módulo. A imagem a seguir mostra os níveis lógicos -
XCTL
A explicação fundamental do XCTL é a seguinte -
O comando XCTL é usado para passar o controle de um programa para outro no mesmo nível.
Ele não espera o controle de volta.
É semelhante à instrução GO TO.
Um programa XCTL pode ser pseudo-conversacional.
Exemplo
O exemplo a seguir mostra como usar o comando XCTL para passar o controle para outro programa -
IDENTIFICATION DIVISION.
PROGRAM-ID. PROG1.
WORKING-STORAGE SECTION.
01 WS-COMMAREA PIC X(100).
PROCEDURE DIVISION.
EXEC CICS XCTL
PROGRAM ('PROG2')
COMMAREA (WS-COMMAREA)
LENGTH (100)
END-EXEC.
Este comando transfere o controle a ser passado para o programa 'PROG2' com 100 bytes de dados. COMMAREA é um parâmetro opcional e é o nome da área que contém os dados a serem passados ou a área para a qual os resultados devem ser retornados.
Ligação
O comando Link é usado para transferir o controle para outro programa de nível inferior. Ele espera o controle de volta. Um programa vinculado não pode ser pseudo-conversacional.
Exemplo
O exemplo a seguir mostra como usar o comando Link para passar o controle para outro programa -
IDENTIFICATION DIVISION.
PROGRAM-ID. PROG1.
WORKING-STORAGE SECTION.
01 WS-COMMAREA PIC X(100).
PROCEDURE DIVISION.
EXEC CICS LINK
PROGRAM ('PROG2')
COMMAREA (WS-COMMAREA)
LENGTH (100)
END-EXEC.
Carga
O comando Load é usado para carregar um programa ou uma tabela. A seguir está a sintaxe do comando Load -
EXEC CICS LOAD
PROGRAM ('name')
END-EXEC.
Lançamento
O comando Release é usado para liberar um programa ou uma tabela. A seguir está a sintaxe do comando Release -
EXEC CICS RELEASE
PROGRAM ('name')
END-EXEC.
Retorna
O comando de retorno é usado para retornar o controle para o próximo nível lógico superior. A seguir está a sintaxe do comando Return -
EXEC CICS RETURN
PROGRAM ('name')
COMMAREA (data-value)
LENGTH (data-value)
END-EXEC.
Operações de controle de intervalo
As operações de controle de intervalo são dos seguintes dois tipos -
ASKTIME
ASKTIME é usado para solicitar hora e data ou carimbo de data / hora atuais. Em seguida, movemos esse valor para a variável de armazenamento de trabalho dentro do programa. A seguir está a sintaxe do comando ASKTIME -
EXEC CICS ASKTIME
[ABSTIME(WS-TIMESTAMP)]
END-EXEC.
FORMATTIME
FORMATTIME formata o carimbo de data / hora no formato necessário com base nas opções, que podem ser YYDDD, YYMMDD ou YYDDMM para a data. DATESEP indica o separador para DATE, assim como a variável TIMESEP para TIME. A seguir está a sintaxe do comando FORMATTIME -
EXEC CICS FORMATTIME
ABSTIME(WS-TIMESTAMP)
[YYDDD(WS-DATE)]
[YYMMDD(WS-DATE)]
[YYDDMM(WS-DATE)]
[DATESEP(WS-DATE-SEP)]
[TIME(WS-TIME)]
[TIMESEP(WS-TIME-SEP)]
END-EXEC.
Existem diferentes blocos de rascunho disponíveis no CICS para salvar dados ou para transferir os dados entre transações. Existem cinco áreas de armazenamento fornecidas pelo CICS, que discutiremos neste módulo.
COMMAREA
A COMMAREA se comporta como um bloco de notas que pode ser usado para passar dados de um programa para outro, seja dentro da mesma transação ou de transações diferentes. Deve ser definido na SEÇÃO LINKAGE usando o nome DFHCOMMAREA.
Área de Trabalho Comum
Qualquer transação na região CICS pode acessar a Área de Trabalho Comum e, portanto, o formato e o uso dela devem ser acordados por todas as transações no sistema que decidir usá-la. Existe apenas um CWA em toda a região CICS.
Área de Trabalho de Transação
A área de trabalho da transação é usada para passar dados entre os programas aplicativos executados na mesma transação. A TWA existe apenas durante a transação. Seu tamanho é definido na Tabela de controle do programa.
Fila de armazenamento temporário
Fila de armazenamento temporário (TSQ) é um recurso fornecido pelo Programa de controle de armazenamento temporário (TSP).
Um TSQ é uma fila de registros que podem ser criados, lidos e excluídos por diferentes tarefas ou programas na mesma região CICS.
Um identificador de fila é usado para identificar TSQ.
Um registro dentro de um TSQ é identificado pela posição relativa conhecida como o número do item.
Os registros no TSQ permanecem acessíveis até que todo o TSQ seja explicitamente excluído.
Os registros no TSQ podem ser lidos sequencialmente ou diretamente.
Os TSQs podem ser gravados no armazenamento principal ou no armazenamento auxiliar no DASD.
WRITEQ TS
Este comando é usado para adicionar itens a um TSQ existente. Além disso, podemos criar um novo TSQ usando este comando. A seguir está a sintaxe do comando WRITEQ TS -
Sintaxe
EXEC CICS WRITEQ TS
QUEUE ('queue-name')
FROM (queue-record)
[LENGTH (queue-record-length)]
[ITEM (item-number)]
[REWRITE]
[MAIN /AUXILIARY]
END-EXEC.
A seguir estão os detalhes dos parâmetros usados no comando WRITEQ TS -
A QUEUE é identificada pelo nome mencionado neste parâmetro.
As opções FROM e LENGTH são usadas para especificar o registro que deve ser gravado na fila e seu comprimento.
Se a opção ITEM for especificada, o CICS atribuirá um número de item ao registro na fila e configura a área de dados fornecida nessa opção para o número do item. Se o registro iniciar uma nova fila, o número do item atribuído é 1 e os números dos itens subsequentes seguem em seqüência.
A opção REWRITE é usada para atualizar um registro já presente na fila.
A opção PRINCIPAL / AUXILIAR é usada para armazenar registros no armazenamento principal ou auxiliar. O padrão é AUXILIAR.
READQ TS
Este comando é usado para ler a Fila de Armazenamento Temporário. A seguir está a sintaxe de READQ TS -
Sintaxe
EXEC CICS READQ TS
QUEUE ('queue-name')
INTO (queue-record)
[LENGTH (queue-record-length)]
[ITEM (item-number)]
[NEXT]
END-EXEC.
DELETEQ TS
Este comando é usado para excluir a Fila de Armazenamento Temporário. A seguir está a sintaxe de DELETEQ TS -
Sintaxe
EXEC CICS DELETEQ TS
QUEUE ('queue-name')
END-EXEC.
Transient Data Queue
A fila de dados transitórios é temporária por natureza, pois pode ser criada e excluída rapidamente. Ele permite apenas acesso sequencial.
O conteúdo da fila pode ser lido apenas uma vez, pois é destruído assim que uma leitura é realizada e, portanto, o nome Transiente.
Não pode ser atualizado.
Requer uma entrada no DCT.
WRITEQ TD
Este comando é usado para gravar filas de dados transitórios e eles sempre são gravados em um arquivo. A seguir está a sintaxe do comando WRITEQ TD -
Sintaxe
EXEC CICS WRITEQ TD
QUEUE ('queue-name')
FROM (queue-record)
[LENGTH (queue-record-length)]
END-EXEC.
READQ TD
Este comando é usado para ler a fila de dados transitórios. A seguir está a sintaxe de READQ TD -
Sintaxe
EXEC CICS READQ TD
QUEUE ('queue-name')
INTO (queue-record)
[LENGTH (queue-record-length)]
END-EXEC.
DELETEQ TD
Este comando é usado para excluir a fila de dados transitórios. A seguir está a sintaxe de DELETEQ TD -
Sintaxe
EXEC CICS DELETEQ TD
QUEUE ('queue-name')
END-EXEC.
A comunicação mútua que ocorre entre dois ou mais sistemas é conhecida como intercommunication.
Benefícios da Intercomunicação
Os benefícios importantes da intercomunicação são os seguintes -
Não precisamos replicar os dados em todos os sistemas.
Os usuários não precisam manter conexões com vários sistemas para acessar os dados armazenados neles.
Além disso, melhora o desempenho do aplicativo.
Terminologias Básicas
É preciso ter conhecimento das terminologias básicas usadas no sistema CICS. A seguir estão os termos básicos -
Sistema Local
Um sistema local é um sistema que inicia uma solicitação de intercomunicação.
Recurso Local
Um recurso local é um recurso que está no sistema local.
Sistema Remoto
Um sistema remoto é um sistema que é iniciado como resultado de uma solicitação de intercomunicação.
Recurso Remoto
Um recurso remoto é um recurso que está no sistema remoto.
MVS Sysplex
MVS Sysplex é uma configuração de vários sistemas operacionais MVS. Eles funcionam como um único sistema, compartilhando funções e programas.
CICSPlex
CICSPlex é comumente descrito como um conjunto de regiões CICS interconectadas que processam a carga de trabalho do cliente. Um CICSPlex é um conjunto de regiões CICS interconectadas que possuem Terminais, Aplicativos, Recursos, etc.
Métodos de Intercomunicação
Existem duas maneiras pelas quais o CICS pode se comunicar com outros sistemas -
MRO - Operação multirregional é usada quando duas regiões CICS dentro do mesmo MVSPLEX precisam se comunicar uma com a outra.
ISC - A comunicação entre sistemas é usada quando uma região CICS em um servidor LOCAL precisa se comunicar com uma região CICS no servidor REMOTE.
Ao trabalhar com o CICS, você pode encontrar abends. A seguir estão os códigos de abend comuns com suas descrições que o ajudarão a resolver os problemas -
Sr. Não | Código e Descrição |
---|---|
1 | ASRA Exceção de verificação de programa |
2 | AEI0 Erro de ID do programa |
3 | AEI9 Condição de falha do mapa |
4 | AEIO Chave duplicada |
5 | AEIN Registro duplicado |
6 | AEID Fim do arquivo alcançado |
7 | AEIS O arquivo não está aberto |
8 | AEIP Condição de solicitação inválida |
9 | AEY7 Não autorizado a usar o recurso |
10 | APCT Programa não encontrado |
11 | AFCA Conjunto de dados não encontrado |
12 | AKCT Erro de tempo limite |
13 | ABM0 Mapa especificado não encontrado |
14 | AICA Programa em loop infinito |
15 | AAOW Erro lógico interno |