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ída

    3

    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 mapas

    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
    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 impressora

    6

    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 protegido
    4 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 modificado

    Tag 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