Documentos de Académico
Documentos de Profesional
Documentos de Cultura
O CICS é um sistema DB/DC 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. Atualmente, os usuários desejam informações em segundos e em tempo real.
Para fornecer um serviço tã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 back-end para obter as informações desejadas.
Exemplos de programas online incluem sistema bancário 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 executadas pelo CICS em um aplicativo são as seguintes −
Recursos do CICS
Os recursos do CICS são os seguintes -
O CICS é um sistema operacional em si, pois gerencia seu próprio armazenamento de processador,
possui 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 arquivos.
O CICS fornece ambiente online no sistema operacional em lote. Os trabalhos enviados são
executados imediatamente.
O CICS é uma interface de processamento de transações 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.
CICS – Ambiente
O próprio CICS atua como um sistema operacional. Sua função é fornecer um ambiente para execução
online de programas aplicativos. O CICS é executado em uma região, partição ou espaço de endereço. O
CICS lida com o agendamento 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 discutiremos em detalhes passo a passo −
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 −
O CICS libera os programas 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 tratamento de dados
Interface do Data Handling Services com métodos de acesso a dados, como BDAM, VSAM, etc.
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.
CICS - Termos Bãsicos
Devemos ter conhecimento dos termos básicos usados no CICS para entender melhor como ele funciona. Os
programas aplicativos usam o CICS para comunicação com terminais e subsistemas remotos e locais.
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 de monitor CRT é mostrada abaixo. Tem as seguintes características -
Chaves não AID− Todas as outras teclas para letras, números, 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
saberá se o usuário está digitando algo ou não.
Chaves de ajuda− Chaves AID são conhecidas como Chaves Identificadoras de Atenção. O CICS
pode detectar apenas chaves AID. Depois de digitar todas as entradas, somente 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 -
o Chaves PF− 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.
o Teclas PA− 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 teclas 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 logicamente relacionados 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 invocar todos
os programas aplicativos para aquela transação específica.
Tarefa
Uma tarefa é uma unidade de trabalho específica para um usuário.
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 pedaço de trabalho deve ser feito
completamente ou não feito. Uma tarefa pode conter várias Unidades Lógicas de Trabalhos 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.
CICS – Núcleo
Os cinco componentes do sistema CICS descritos anteriormente são um agrupamento conveniente de
programas do sistema CICS, cada um dos quais executa suas próprias funções especializadas. O núcleo do
CICS conhecido como CICS Nucleus, que consiste em Programas de Controle CICS e Tabelas de Controle
fornecidos pela IBM.
Programas de controle
O núcleo do CICS é construído pelos programas de controle e tabelas de controle correspondentes. Oferece
vantagens únicas. Isso torna o sistema CICS altamente flexível e, portanto, fácil de manter. A seguir estão os
importantes programas de controle do CICS -
O FCP é usado para fornecer programas aplicativos com serviços como leitura, inserção, atualização
ou exclusão de registros em um arquivo.
Mantém controle exclusivo sobre os registros para manter a integridade dos dados durante as
atualizações dos registros.
O SCP é conhecido como Programa de Controle de Armazenamento. Ele é 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 execução bem-sucedida dos programas
aplicativos CICS. A seguir estão as tabelas de controle importantes -
Quando efetuamos login em um terminal CICS, uma entrada é feita na tabela TCT.
TCT contém os IDs de terminal que estão conectados à região CICS atual.
O Programa de Controle do Terminal juntamente com a tabela de controle do terminal reconhecem
os dados recebidos do terminal.
PPT é conhecido como Processing Program Table. O 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 carregamento, etc.
Passo 2
O TCP verifica periodicamente todos os terminais para entrada. Quando uma mensagem é recebida, ela faz o
seguinte -
etapa 3
Passo 4
Passo 5
Passo 6
Passo 7
Passo 9
Passo 10
Passo 11
O KCP instrui o SCP a liberar todo o armazenamento alocado para a tarefa (exceto TIOA).
Passo 12
CESN
CESN é conhecido como CICS Execute Sign On.
CEDA
CEDA é conhecido como Definição e Administração de Execução do CICS. Ele é usado pelos
Administradores do Sistema CICS para definir as entradas da tabela CICS e outras atividades de
administração.
CEMT
O CEMT é conhecido como CICS Execute Master Terminal. Ele é usado para consultar e atualizar o status
dos 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.
O 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 conjunto de mapas ser alterado.
Exemplo
Pode-se substituir o status do arquivo exibido para alterá-lo. O exemplo a seguir mostra como fechar um
arquivo -
CEMT
CECI
O 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, somente se a sintaxe
estiver correta.
Digite a opção CECI na tela vazia do CICS 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. Discutiremos sobre o
MAPS nos próximos módulos.
Digite CEDF e pressione enter na região CICS. A mensagem do terminal está no modo EDF será exibida.
Agora digite o ID da transação e pressione a tecla Enter. Após a inicialização, com cada tecla enter, uma
linha é executada. Antes de executar qualquer comando do CICS, mostra a tela na qual podemos modificar
os valores antes de prosseguir.
CMAC
CMAC é conhecido como CICS Messages for Abend Codes. Ele é usado para localizar a explicação e os
motivos dos Códigos Abend do CICS.
Exemplo
CMAC abend-code
CESF
CESF é conhecido como CICS Execute Sign Off. Ele é usado para Sign Off da região CICS.
Exemplo
CESF LOGOFF
CEBR
O CEBR é conhecido como Pesquisa de armazenamento temporário de execução do CICS. É usado para
exibir o conteúdo de uma fila de armazenamento temporário ou TSQ.
O 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
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
Esse recurso do sistema operacional permite que mais de uma tarefa seja executada simultaneamente. A
tarefa pode estar compartilhando o mesmo programa ou usando programas diferentes. O CICS planeja a
tarefa em sua própria região.
Multi-threading
Esse recurso do sistema operacional permite que mais de uma tarefa seja executada simultaneamente
compartilhando o mesmo programa. Para que o multiencadeamento seja possível, um programa aplicativo
deve ser um programa reentrante no sistema operacional ou um quase reentrante no CICS.
Reentrada
Um programa reentrante é aquele que não se modifica e pode reentrar em si mesmo e continuar processando
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 CICS, o CICS tem o
direito exclusivo de usar os recursos da CPU e pode executar outros comandos CICS de outras tarefas.
Há momentos em que muitos usuários estão usando o mesmo programa simultaneamente; isso é o que
chamamos de multi-threading. Por exemplo, vamos supor que 50 usuários estejam usando um programa A.
Aqui, o CICS fornecerá 50 armazenamentos de trabalho para esse programa, mas uma Divisão de
Procedimento. E essa técnica é conhecida como quase-reentrância.
CICS – Noçoes bãsicãs de COBOL
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 alguma mensagem na tela de saída do
CICS. Este programa é para demonstrar as etapas envolvidas na execução de um programa COBOL-CICS.
A seguir estão as etapas para codificar um programa simples -
Passo 1
Passo 2
etapa 3
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 −
Passo 6
Passo 7
Compilação do 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 erros de sintaxe em comandos CICS. Ele os traduz em instruções
COBOL equivalentes.
Compilador
A função de um compilador é expandir os copybooks COBOL. Ele compila o código após verificar se há
erros de sintaxe no código-fonte.
Editor de links
A função de um Linkage Editor é vincular diferentes módulos de objetos para criar um único módulo de
carga.
CICS - BMS
BMS é conhecido como Basic Mapping Support. Um aplicativo consiste em telas formatadas que atuam
como uma ponte entre o terminal e os programas CICS. Para que ocorra a comunicação 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 -
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 estiver
definido, podemos usar o JCL para montá-lo.
Termos Básicos do 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. Pode ter nomes contendo
de 1 a 7 caracteres.
Conjunto de mapas
Mapset é uma coleção de mapas que são vinculados para formar um módulo de carga. Deve ter uma entrada
PPT. 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 a definição do Mapset. É um identificador de macro que mostra que estamos
iniciando um mapset. O nome do conjunto de mapas é 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 no
DFHMSD −
Sr.
Parâmetro e Descrição
No
TYPE
TYPE é usado para definir o tipo de mapa. Se TYPE =MAP – Criação de mapa físicoDSECT – Criação
1
de mapa simbólico&&SYSPARM – Criação de ambos, Físico e SimbólicoFINAL – Para indicar o final
da codificação de um conjunto de mapas.
MODE
2 MODE é usado para indicar operações de entrada/saída. IF MODE =IN – Apenas para um mapa de
entradaOUT – Apenas para um mapa de saídaINOUT Para ambos os mapas de entrada e saída
LANG
3
LANG = ASM/COBOL/PL1Decide o idioma da estrutura DSECT, para copiar no programa aplicativo.
STORAGE
4 If STORAGE =AUTO – Para adquirir uma área de mapa simbólico separada para cada mapsetBASE –
Para ter a mesma base de armazenamento para os mapas simbólicos de mais de um mapset
CTRL
CRTL é usado para definir as solicitações de controle do dispositivo. Se CTRL =FREEKB – Para
5
desbloquear o teclado FRSET – Para redefinir MDT para o status zero ALARM – Para definir um
alarme no tempo de exibição da tela PRINT – Para indicar o mapa a ser enviado para a impressora.
TERM
6 TERM = o tipo garante a independência do dispositivo, necessário se outro terminal além do 3270
estiver sendo usado.
TIOAPFX
7 TIOAPFX = SIM/NÃO – Para reservar o espaço de prefixo (12 bytes) para os comandos do BMS
acessarem o TIOA corretamente. Necessário para o nível de comando do CICS.
Exemplo
DFHMDI
A macro DFHMDI gera definições de mapa. Isso mostra que estamos começando 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.
Parâmetro e Descrição
No
SIZE
SIZE = (Linha, Coluna) Este parâmetro fornece o tamanho do mapa. O BMS nos permite construir uma
1
tela usando vários mapas, e esse parâmetro se torna importante quando estamos usando mais de um
mapa em um único mapset.
LINE
2
Indica o número da linha inicial do mapa.
COLUMN
3
Indica o número da coluna inicial do mapa.
JUSTIFY
4 É usado para especificar o mapa inteiro ou os campos do mapa a serem justificados à esquerda ou à
direita.
CTRL
CRTL é usado para definir as solicitações de controle do dispositivo. Se CTRL =FREEKB – Para
5
desbloquear o teclado FRSET – Para redefinir MDT para o status zero ALARM – Para definir um
alarme na hora da exibição da tela PRINT – Para indicar o mapa a ser enviado para a impressora
TIOAPFX
TIOAPFX = YES/NO
6
YES – Para reservar o espaço de prefixo (12 bytes) para os comandos do BMS acessarem o TIOA
adequadamente. Necessário para o nível de comando do CICS.
Exemplo
A macro DFHMDF é usada para definir os nomes dos campos. O nome do campo é mencionado contra o
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.
Parâmetro e Descrição
No
POS
Esta é a posição na tela onde o campo deve aparecer. Um campo começa com seu byte de atributo,
1
portanto, se você codificar POS = (1,1), o byte de atributo desse campo estará na linha 1 da coluna 1 e os
dados reais começarão na coluna 2.
LENGTH
2
Este é o comprimento do campo, sem contar o byte de atributo.
INITIAL
Estes são os dados de caracteres para um campo de saída. Usamos isso para especificar rótulos e títulos
3
para a tela e mantê-los independentes do programa. Para o primeiro campo da tela do menu, por
exemplo, iremos codificar: INICIAL = 'MENU'.
JUSTIFY
4 É usado para especificar o mapa inteiro ou os campos do mapa a serem justificados à esquerda ou à
direita.
ATTRB
ATTRB = (ASKIP/PROT/UNPROT, NUM, BRT/NORM/DRK, IC, FSET) Atributos do campo.
ASKIP – Autoskip. Os dados não podem ser inseridos neste campo (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.
5 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 – Tela escura.
IC – Inserir cursor. O cursor será posicionado neste campo. Caso o IC seja especificado mais de uma
vez, o cursor é colocado no último campo.
FSET – Conjunto de campo. O MDT é ativado para que os dados do campo sejam enviados do terminal
para o computador host, independentemente de o campo ser realmente modificado pelo usuário.
PICIN
6
PICIN se aplica ao campo de dados que é usado como entrada como PICIN = 9(8).
PICOUT
7
PICIN se aplica ao campo de dados que é usado como saída como PICOUT = Z(8).
Exemplo
Ele contém os detalhes sobre os atributos de todos os campos do 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 editado por link na biblioteca
CICS.
Ele contém todos os dados variáveis que são copiados na seção WORKINGSTORAGE do programa.
Tem todos os campos nomeados. O programador do aplicativo usa esses campos para ler e gravar
dados no mapa.
Campo Skipper e Stopper (Skipper and 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 receber valores cujo comprimento não pode exceder 10. Mas quando
você exibe este mapa usando o 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 inserir até 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, ao inserir o valor, assim que o
comprimento especificado for alcançado, o cursor se posicionará automaticamente no próximo campo
desprotegido. O exemplo a seguir mostra como adicionar um campo skipper −
Stopper Field
Se colocarmos um campo limitador após o campo desprotegido nomeado, ao inserir o valor, uma vez que o
comprimento especificado seja alcançado, o cursor parará seu posicionamento. O exemplo a seguir mostra
como adicionar um campo stopper −
Posição do
Descrição Configurações de bits
bit
0&1 Determinado pelo conteúdo do bit 2 a 7
00 – Alfanumérico Desprotegido 01 – Numérico Desprotegido 10 –
2e3 Proteção e Mudança
Parada Protegida 11 – Pular Protegido
4e5 Intensidade 00 – Normal01 – Normal10 – Brilhante11 – Sem exibição ( Escuro )
6 Deve ser zero sempre
Etiqueta de Dados
7 0 – O campo não foi modificado 1 – O campo foi modificado
Modificada
MDT é um sinalizador que contém um único bit. 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.
Sr.
Parâmetro e Descrição
No
Map-name
1
É o nome do mapa que queremos enviar. É obrigatório.
Mapset-name
2 É o nome do conjunto de mapas que contém o mapname. O nome do conjunto de mapas é necessário, a
menos que seja igual ao nome do mapa.
FROM
3 É usado se decidimos usar um nome DSECT diferente, devemos usar a opção FROM (dsect-name)
junto com o comando SEND MAP.
MAPONLY
4 Isso significa que nenhum dado do seu programa deve ser mesclado no mapa e apenas as informações
do mapa são transmitidas.
DATAONLY
É o oposto lógico do MAPONLY. Nós o usamos para modificar os dados variáveis em um display que
5
já foi criado. Apenas os dados do seu programa são enviados para a tela. As constantes no mapa não
são enviadas.
ERASE
6
Faz com que toda a tela seja apagada antes que o que estamos enviando seja mostrado.
ERASEUP
7
Faz com que apenas os campos desprotegidos sejam apagados.
FRSET
8 Flag Reset desativa a tag de dados modificados no byte de atributo para todos os campos na tela antes
que o que você está enviando seja colocado lá.
CURSOR
9 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, em seguida, enviando o mapa.
ALARM
10
Isso faz com que o alarme sonoro soe.
FREEKB.
11
O teclado é desbloqueado se especificarmos FREEKB no mapa ou no comando SEND.
PRINT
12
Ele permite que a saída de um comando SEND seja impressa em uma impressora.
FORMFEED
13 Isso faz com que a impressora restaure o papel para o início da próxima página antes que a saída seja
impressa.
Instruções de E/S de arquivo, como Abrir, Ler, Gravar, Reescrever, Fechar, Excluir e Iniciar. Todas
as E/S de arquivo no CICS são tratadas 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.
Seção de Arquivo e Divisão de Meio Ambiente não é necessária.
As instruções COBOL que invocam funções do sistema operacional como Accept, Date/Time não
podem ser usadas.
Não use DISPLAY, MERGE, STOP RUN e GO BACK.
O EIB é exclusivo para uma tarefa e existe durante a tarefa. Ele contém um conjunto de informações
relacionadas ao sistema correspondente à tarefa.
Ele contém informações sobre identificador de transação, hora, data, etc., que são usadas 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.
Eles são semelhantes aos programas em lote executados no modo de lote. Portanto, no CICS, eles
raramente são desenvolvidos.
Podemos dizer que são usados apenas para exibir uma sequência de telas em intervalos regulares de
tempo.
Exemplo
O exemplo a seguir mostra um programa não conversacional que simplesmente exibirá “HELLO WORLD”
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 conversacionais
Enviar uma mensagem para o terminal e receber uma resposta do usuário é chamado de Conversacional. Um
aplicativo online consegue uma conversa entre o usuário e o programa aplicativo por um par de comandos
SEND e RECEIVE. Os pontos-chave de um programa de conversação são os seguintes -
O exemplo a seguir mostra um programa de conversão que recebe a entrada do usuário e 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.
CICS – Pseúdoprogrãmãção
A partir de agora, cobrimos programas de não conversão e conversão. Os programas de conversão têm uma
grande desvantagem, pois seu tempo de reflexão é consideravelmente alto. Para superar esse problema, a
programação de pseudoconversão entrou em cena. Agora vamos discutir mais sobre os programas de
pseudo-conversão.
Programa de Pseudoconversacional
A seguir está a sequência de eventos que ocorrem em um programa de pseudoconversão -
Passo 1− O sistema envia uma mensagem para a tela e finaliza a transação, especificando a transação
a ser iniciada quando a entrada do usuário for recebida.
Passo 2− O sistema aloca os recursos utilizados por esta transação para outras transações em
execução no sistema. Assim, podemos utilizar os recursos em um programa de pseudo-conversão até
que o usuário forneça a entrada.
etapa 3− O sistema pesquisa a entrada do terminal em intervalos regulares de tempo. Quando a
entrada é recebida, ela é processada e a saída é exibida.
Passo 4− O programa aplicativo é carregado no armazenamento principal quando necessário e
liberado quando não está em uso.
Técnicas de Pseudoconversação
O ponto importante a ser observado na pseudoconversação é a passagem de dados entre cada tarefa.
Discutiremos sobre as técnicas de passagem 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.
Ele é 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 Linkage do programa no nível 01.
Ele 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
Após o envio do mapa, a tarefa termina e aguarda a resposta do usuário. Nesta fase, os dados precisam ser
salvos, pois embora a tarefa tenha terminado, a transação não terminou. Quando esta 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 depois 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 a seguir está a lógica do pseudocódigo que usamos na pseudoprogramaçã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 Pseudoconversaçã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á no 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 usadas no CICS -
Retorno-1
Quando a seguinte instrução de retorno incondicional é emitida, a tarefa e a transação (programa) são
encerradas.
Retorno-2
Quando o seguinte retorno condicional, ou seja, retorno com 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.
O EIBAID tem um byte de comprimento e contém o valor real do identificador de atenção usado no
fluxo de entrada 3270.
O CICS nos fornece um conjunto pré-codificado de variáveis que podem ser usadas no programa
aplicativo escrevendo a seguinte instrução −COPY DFHAID
DFHAID
DFHAID é um copybook 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
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 coluna na opção
CURSOR no comando enviar mapa.
Outra maneira é mover -1 para a variável simbólica do mapa com o sufixo L. Em seguida, envie o
mapa com uma opção de 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.
Para substituir os atributos de um campo, devemos incluir DFHATTR no programa aplicativo. Ele é
fornecido pelo CICS.
O atributo necessário pode ser escolhido na lista e movido para a variável do campo simbólico com o
sufixo 'A'.
DFHATTR contém 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 "'".
CICS – Mãnipúlãção de Arqúivos
O CICS nos permite acessar os dados do arquivo de várias maneiras. A maioria dos acessos aos arquivos é
aleatória 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 de acesso direto usuais − VSAM e DAM
(método de acesso direto). Também nos permite acessar dados usando gerenciadores de banco de dados.
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. Erros nesta categoria são tratados pela lógica
explícita no programa.
Erros lógicos surgem devido a alguns motivos, como divisão por zero, caractere inválido no campo
numérico ou erro de identificação da transação.
Erros relacionados a hardware ou outras condições do sistema estão além do controle de um
programa aplicativo. Por exemplo, obtendo erro de entrada/saída ao acessar um arquivo.
CICS – Operãçoes de Controle
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
O comando XCTL é usado para passar o controle de um programa para outro no mesmo nível.
Não espera o controle de volta.
É semelhante à instrução GO TO.
Um programa XCTL pode ser um pseudoconversacional.
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.
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.
Link
O comando Link é usado para transferir o controle para outro programa em um nível inferior. Ele espera o
controle de volta. Um programa vinculado não pode ser pseudoconversacional.
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.
Load
O comando Load é usado para carregar um programa ou uma tabela. A seguir está a sintaxe do comando
Load -
Return
O comando Return é usado para retornar o controle ao próximo nível lógico superior. A seguir está a sintaxe
do comando Return -
ASKTIME
ASKTIME é usado para solicitar a hora e a data atuais ou carimbo de data/hora. Em seguida, movemos esse
valor para a variável de armazenamento de trabalho dentro do programa. A seguir está a sintaxe do comando
ASKTIME -
FORMATTIME
FORMATTIME formata o timestamp no formato necessário com base nas opções, que podem ser YYDDD,
YYMMDD ou YYDDMM para data. DATESEP indica o separador para DATE, assim como a variável
TIMESEP para TIME. A seguir está a sintaxe do comando FORMATTIME -
COMMAREA
A COMMAREA se comporta como um bloco de rascunho que pode ser usado para passar dados de um
programa para outro programa, seja dentro da mesma transação ou de transações diferentes. Deve ser
definido na SEÇÃO LINKAGE usando o nome DFHCOMMAREA.
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 número do item.
Os registros no TSQ permanecem acessíveis até que todo o TSQ seja excluído explicitamente.
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 −
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.
O conteúdo da fila pode ser lido apenas uma vez, pois é destruído quando uma leitura é executada e,
portanto, o nome Transient.
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.
CICS – Intercomúnicãção
A comunicação mútua que ocorre entre dois ou mais sistemas é conhecida como intercomunicação.
Benefícios da Intercomunicação
Os benefícios importantes da intercomunicação são os seguintes -
Terminologias básicas
Deve-se ter conhecimento das terminologias básicas utilizadas no sistema CICS. A seguir estão os termos
básicos -
MVS Sysplex
MVS Sysplex é uma configuração de vários sistemas operacionais MVS. Eles funcionam como um único
sistema, compartilhando funções e programas.
CICSPlexName
O 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− Multi Region Operation é usado quando duas regiões CICS dentro do mesmo MVSPLEX
precisam se comunicar entre si.
ISC− Inter System Communication é usado quando uma região CICS em um servidor LOCAL
precisa se comunicar com uma região CICS no servidor REMOTE.
CICS - Codigos de stãtús
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 -
ASRA
1
Exceção de verificação do programa
AEI0
2
Erro de ID do programa
AEI9
3
Condição de falha do mapa
AEIO
4
Chave Duplicada
AEIN
5
Registro Duplicado
AEID
6
Fim do arquivo atingido
AEIS
7
O arquivo não está aberto
AEIP
8
Condição de solicitação inválida
AEY7
9
Não autorizado a usar o recurso
APCT
10
Programa não encontrado
AFCA
11
Conjunto de dados não encontrado
AKCT
12
Erro de tempo limite
ABM0
13
Mapa especificado não encontrado
AICA
14
Programa em loop infinito
AAOW
15
Erro lógico interno
CICS - Pergúntãs de entrevistãs
Estas perguntas de entrevista do CICS foram elaboradas especialmente para familiarizá-lo com a natureza
das perguntas que você pode encontrar durante sua entrevista para o assunto do CICS. De acordo com nossa
experiência, bons entrevistadores dificilmente planejam fazer qualquer pergunta específica durante uma
entrevista – normalmente as perguntas começam com algum conceito básico do assunto e, posteriormente,
continuam com base em uma discussão mais aprofundada e como você responde –
Para o campo Skipper, use ASKIP e para o campo stopper use PROT.
Como você define a opção MDT para o status 'ON', mesmo se os dados não forem
inseridos?
Na próxima vez que o usuário final pressionar uma tecla de atenção, o CICS
iniciará a transação especificada na opção TRANSID.
Qual é a função do comando EXEC CICS HANDLE CONDITION?
Um impasse ocorre quando uma tarefa está esperando por um recurso mantido
por outra tarefa que, por sua vez, está esperando por um recurso mantido pela
primeira tarefa.
Explique o termo operação multi-regional.
A área de trabalho comum é uma área de armazenamento que pode ser acessada
por qualquer tarefa em um sistema CICS.
Qual é o significado e uso do campo EIBAID?
BMS significa Basic Map Support. Ele permite codificar programas em nível de
montador para definir telas.