66

Click here to load reader

Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

  • Upload
    voliem

  • View
    288

  • Download
    10

Embed Size (px)

Citation preview

Page 1: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

Carlos Campos

C I C S

Page 2: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

N ã o e s t a m o s a q u i p a r a p a g a r

n e m s o b r e v i v e r , m a s s i m ,

p a r a v e n c e r , a d q u i r i n d o

s a b e r .

&

U s e m o s o c o n h e c i m e n t o c o m

m o r a l e é t i c a .

Page 3: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

Carlos Campos

C I C S

D e s e n v o l v i m e n t o M a i n f r a m e

G u i a d e R e f e r ê n c i a

T e r c e i r a e d i ç ã o

S ã o P a u l o

2 0 1 5

Carlos Joaquim Esteves de Campos

Page 4: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

Carlos Campos, 2015

Todos os direitos reservados. É proibida a reprodução total ou parcial desta obra, de qualquer forma ou por qualquer meio sem a autorização prévia e por escrito do autor. A violação dos Direitos Autorais (Lei n.º 9610/98) é crime estabelecido pelo artigo 184 do Código Penal.

Capa: Alexandra Hardt Carlini / Carlos J E de campos

Diagramação: Carlos J E de Campos

Revisão: Neusa Pallione

ISBN (papel) 978-85-919335-6-3

Nota: Muita dedicação, empenho e grande cuidado foram aplicados na elaboração desta obra. No entanto, podem ocorrer erros de digitação, impressão ou dúvida conceitual. Em qualquer das hipóteses, peço a comunicação para que esta obra esteja, sempre, melhorando.

Dados Internacionais de Catalogação na Publicação (CIP)

(Câmara Brasileira do Livro, SP, Brasil)

Campos, Carlos

Cics / Carlos Campos. --

3. ed. -- São Paulo : Ed. do Autor, 2015. --

(Desenvolvimento mainframe : guia de referência)

Bibliografia

ISBN 978-85-919335-6-3

1. Cics 2. Programação (Computadores

eletrônicos) 3. Programação lógica I. Título.

II. Série.

Page 5: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

Agradecimentos

Agradeço a Deus por ter-me colocado na trilha do conhecimento.

Agradeço à minha filhota, Vanessa, por ser a minha fonte de esperança e por mostrar compreensão e paciência. Em especial, por ter

contribuido com sugestões e opiniões sobre vários pontos da obra.

Agradeço aos meus pais Alice Zeca, por terem-me dado a vida, educação, formação moral e muito apoio.

Agradeço à minha esposa, Magnólia, pela paciência e tolerância nesta nova fase da nossa vida.

Agradeço ao amigo Roberto Azem, que sempre esteve por perto, nos momentos de estudo e naqueles em que precisava de ouvidos e

conselhos.

Agradeço ao companheiro Benedito Aparecido Alves, pelo apoio que tem me dado nesta segunda fase dos meus livros, acompanhando-me

no dia a dia do trabalho, ouvindo-me e apoiando-me com o seu conhecimento e sabedoria. Benê, como é conhecido, tem sido um

grande conselheiro.

Page 6: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

C o l o q u e a l e a l d a d e e a

c o n f i a n ç a a c i m a d e q u a l q u e r

c o i s a ; n ã o t e a l i e s a o s

m o r a l m e n t e i n f e r i o r e s ; n ã o

r e c e i e s c o r r i g i r t e u s e r r o s .

Confúcio

Page 7: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 7

Introdução

O CICS (Customer Information Control System) é um produto (software, sistema) da IBM composto de vários módulos, programas de gerenciamento, de comunicação e gerenciamento de dispositivos, execução de programas e da transmissão de dados entre terminal-programa-terminal. É um aplicativo, que é executado, com o objetivo de gerenciar as solicitações das aplicações e, deste modo, fornecer meios próprios para controlar as entradas e saídas de dados do sistema operacional garantindo a integridade dos dados para o alto volume de solicitações que podem ocorrer simultaneamente.

Funciona como um “sistema operacional” para carregar e controlar todos os programas aplicativos de telas, os buffers de todos os arquivos abertos e compartilhados pelos programas aplicativos, além das suas tabelas próprias para gerenciar todo o conjunto.

Para viabilizar este ambiente, o CICS controla todos os programas que estão interagindo com os terminais, exibindo as telas e lendo os teclados, assim como todos os arquivos usados por estes programas.

Esta obra

Esta obra tem como objetivo passar para as pessoas que desejam conhecer o ambiente CICS e, como utilizar a linguagem de programação COBOL dentro do CICS utilizada em ambientes z/OS e OS/390, Mainframe da IBM. Oferece uma base teórica e prática, suficientemente boa, para que o leitor domine a criação, manutenção e utilização em programas COBOL CICS. A abordagem segue uma sequência, de forma que o leitor possa compreender como os dados podem ser incluídos, lidos, alterados, excluídos e listados e, como cada comando trabalha.

Os comandos são apresentados com a sua sintaxe básica e explicados a partir de pequenos programas apresentados especificamente e criados para esse fim, que podem ser usados para praticar e realizar testes.

Público-Alvo

As informações contidas neste livro podem ser aprendidas e aplicadas por qualquer pessoa que deseje programar em COBOL CICS para Mainframe ONLINE.

Page 8: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

Guia de Referência

Este livro busca ser uma obra didática e um Guia de Referência para ajudar o aprendizado e para ser consultado no dia a dia de todo profissional. Seu conteúdo está organizado de forma a facilitar a busca das informações.

Pré-Requisitos

Para construir programa é necessário conhecer a linguagem de programação, mas, é somente com a lógica de programação que se consegue elaborar algoritmos, o fundamento do programa. Para maior aproveitamento é aconselhável que conheça:

✔Lógica de Programação

✔Linguagem de Programação COBOL

✔Banco de dados DB2

Aderência à Certificação

Esta obra está aderente ao programa de certificação para desenvolvedor COBOL Mainframe, CMCPDS (Certified Mainframe COBOL Program Development Specialist) do Instituto ICPDUG (www.icpdug.org.br).

Forma de Estudo

O conteúdo do livro está organizado de forma a orientá-lo a realizar o estudo. O estudo pode ser feito de forma sequencial e continua de todo o conteúdo, ou dividido pelos módulos básico e avançado.

Sugestão de Curso

Para maior aproveitamento do aprendizado, faça o curso Ead através de vídeo aulas. Para a pessoa que adquire o livro e deseja fazer o curso é oferecido um valor muito especial. Todas as dúvidas podem ser tiradas através de e-mail ou skype. Para uma demonstração do curso acessar o site de treinamentos www.cjec.com.br, escolher e registrar-se para ter acesso à primeira aula.

Contato

Para mais informações sobre esta ou outras obras do autor, acessar o site carlos-campos.net ou entrar em contato através do e-mail: [email protected].

Page 9: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 9

Sumário AGRADECIMENTOS ................................................................................................ 5

INTRODUÇÃO ........................................................................................................ 7

SUMÁRIO .............................................................................................................. 9

FORMAÇÃO DE ESPECIALISTA COBOL ................................................................... 15

METODOLOGIA DOS CURSOS ............................................................................................16 OBJETIVO DO MÉTODO ....................................................................................................16 BENEFÍCIOS DO MÉTODO ..................................................................................................16

CERTIFICAÇÃO COBOL .......................................................................................... 17

OBJETIVO DA CERTIFICAÇÃO .............................................................................................17 COMO É A CERTIFICAÇÃO .................................................................................................17

NOTAÇÃO UTILIZADA .......................................................................................... 19

CAPÍTULO 1 ......................................................................................................... 21

INTRODUÇÃO CICS .............................................................................................. 21

MÓDULO: BÁSICO ..........................................................................................................21 CONCEITUAÇÃO DO AMBIENTE CICS ..................................................................................22 O QUE É CICS ................................................................................................................22 COMO ENTRAR NO AMBIENTE CICS ...................................................................................27 NÚCLEO GERENCIADOR ....................................................................................................30 TABELAS DE CONTROLE ....................................................................................................34 DSA - DYNAMIC STORAGE AREA .......................................................................................35 CONTROLE DE TERMINAL ..................................................................................................39 CONTROLE DE PROGRAMA ................................................................................................41 CONTROLE DE ARQUIVO ...................................................................................................42 TRANSAÇÃO ..................................................................................................................45 FLUXO DA TRANSAÇÃO PSEUDOCONVERSACIONAL ................................................................56 ATIVIDADE – QUESTIONÁRIO ............................................................................................63

CAPÍTULO 2 ......................................................................................................... 65

CONCEITO DE MAPA ............................................................................................ 65

MÓDULO: BÁSICO ..........................................................................................................65 CONCEITUAÇÃO DE MAPA CICS.........................................................................................65 COMO CONSTRUIR UM MAPA ...........................................................................................67 MAPSET ......................................................................................................................68 COMPOSIÇÃO DO ATRIBUTO DE UM CAMPO .........................................................................69 COMPILAÇÃO DE UM MAPA .............................................................................................70 DEFININDO MAPA PARA SER INTERPRETADO PELO BMS .........................................................71

Page 10: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

DEFININDO ÁREAS DENTRO DE UM MAPA ........................................................................... 77 COMO O COBOL IDENTIFICA UM CAMPO DO BMS .............................................................. 83 POSIÇÃO DO CURSOR NA TELA .......................................................................................... 85 BLOCO DFHBMSCA ...................................................................................................... 86 EXEMPLO DE DEFINIÇÃO DE UM MAPA ............................................................................... 87 ATIVIDADE – QUESTIONÁRIO ........................................................................................... 89

CAPÍTULO 3 ......................................................................................................... 91

COMANDOS ........................................................................................................ 91

MÓDULO: BÁSICO ......................................................................................................... 91 COMANDOS DO CICS ..................................................................................................... 91 GRUPOS DOS COMANDOS ................................................................................................ 93 ESTRUTURA DE COMANDO CICS ....................................................................................... 96 COMO TERMINAR PROGRAMA CICS .................................................................................. 97

CAPÍTULO 4 ......................................................................................................... 99

COMANDOS DE TERMINAL .................................................................................. 99

MÓDULO: BÁSICO ......................................................................................................... 99 COMANDO SEND TEXT ............................................................................................... 100 COMANDO RECEIVE ................................................................................................... 102 ATIVIDADE – QUESTIONÁRIO ......................................................................................... 105

CAPÍTULO 5 ....................................................................................................... 107

COMANDOS DE MAPA ....................................................................................... 107

MÓDULO: BÁSICO ....................................................................................................... 107 COMANDO SEND MAP ............................................................................................... 108 COMANDO RECEIVE MAP ........................................................................................... 111 ATIVIDADE – QUESTIONÁRIO ......................................................................................... 115

CAPÍTULO 6 ....................................................................................................... 117

COMANDOS DE ARQUIVO .................................................................................. 117

MÓDULO: BÁSICO ....................................................................................................... 117 MASSA DE TESTE .......................................................................................................... 118 COMANDO WRITE ...................................................................................................... 119 COMANDO READ ........................................................................................................ 121 COMANDO REWRITE .................................................................................................. 124 COMANDO DELETE ..................................................................................................... 127 COMANDO UNLOCK ................................................................................................... 129 ATIVIDADE – QUESTIONÁRIO ......................................................................................... 131

CAPÍTULO 7 ....................................................................................................... 133

COMANDOS DE PROGRAMA .............................................................................. 133

Page 11: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 1 1

MÓDULO: BÁSICO ........................................................................................................133 COMANDO LINK ..........................................................................................................134 COMANDO XCTL..........................................................................................................137

CAPÍTULO 8 ....................................................................................................... 143

COMANDOS DE ERRO ........................................................................................ 143

MÓDULO: BÁSICO ........................................................................................................143 INTRODUÇÃO ...............................................................................................................144 COMANDO HANDLE ABEND ........................................................................................145 COMANDO IGNORE CONDITION .................................................................................147 COMANDO HANDLE CONDITION ................................................................................148 TRAMAMENTO MANUAL DOS ERROS ................................................................................150 ATIVIDADE – QUESTIONÁRIO ..........................................................................................157

CAPÍTULO 9 ....................................................................................................... 159

COMANDOS DIVERSOS ...................................................................................... 159

MÓDULO: BÁSICO ........................................................................................................159 COMO FORMATAR DATA E HORA .....................................................................................160 COMANDO ASKTIME ...................................................................................................160 COMANDO FORMATTIME ...........................................................................................161 COMANDO BIF DEEDIT ................................................................................................167 COMANDO ASSIGN .....................................................................................................169 COMANDO HANDLE AID .............................................................................................173 COMANDO SYNCPOINT ROLLBACK .............................................................................175 ATIVIDADE – QUESTIONÁRIO ..........................................................................................177

CAPÍTULO 10 ..................................................................................................... 179

COMANDOS DE CURSOR .................................................................................... 179

MÓDULO: AVANÇADO ..................................................................................................179 INTRODUÇÃO ...............................................................................................................180 PROCEDIMENTOS DE UMA PESQUISA POR BROWSE ...........................................................180 COMANDO STARTBR ...................................................................................................183 COMANDO READNEXT ................................................................................................185 COMANDO READPREV ................................................................................................187 COMANDO ENDBR ......................................................................................................189 COMANDO RESETBR ...................................................................................................190 EXEMPLO DE COMO CONSTRUIR UM BROWSE ..................................................................192 ATIVIDADE – QUESTIONÁRIO ..........................................................................................201

CAPÍTULO 11 ..................................................................................................... 203

COMANDOS DE TS ............................................................................................. 203

Page 12: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

MÓDULO: AVANÇADO .................................................................................................. 203 MEMÓRIA TEMPORÁRIA ............................................................................................... 203 COMANDO WRITEQ TS ............................................................................................... 205 COMANDO READQ TS ................................................................................................. 208 COMANDO DELETEQ TS .............................................................................................. 211 ATIVIDADE – QUESTIONÁRIO ......................................................................................... 213

CAPÍTULO 12 ..................................................................................................... 215

PROGRAMAÇÃO PSEUDOCONVERSACIONAL ...................................................... 215

MÓDULO: AVANÇADO .................................................................................................. 215 PONTOS DE CONVERSÃO DA LÓGICA PSEUDOCONVERSACIONAL ............................................ 216 EXEMPLO DE PROGRAMA PSEUDOCONVERSACIONAL ........................................................... 218

CAPÍTULO 13 ..................................................................................................... 235

CONSTRUINDO SISTEMAS .................................................................................. 235

MÓDULO: AVANÇADO .................................................................................................. 235 MASSA DE TESTES PARA OS SISTEMAS ON-LINE ................................................................ 237 SISTEMA - MENU DE SISTEMAS ....................................................................................... 245 SISTEMA - CADASTRO DE ALUNOS ................................................................................... 254

CAPÍTULO 14 ..................................................................................................... 335

COMANDOS ON-LINE ......................................................................................... 335

MÓDULO: AVANÇADO .................................................................................................. 335 CEMT I PRO .............................................................................................................. 336 CEMT SET PROG....................................................................................................... 336 CEMT SET TASK ........................................................................................................ 337 CEMT SET TRANS ..................................................................................................... 337 CEMT SET TERM ...................................................................................................... 338 CSSN ........................................................................................................................ 338 CSMT ....................................................................................................................... 339 CEMT SET FILE ......................................................................................................... 339 CECI ......................................................................................................................... 340 CEDF ........................................................................................................................ 341 CMAC ...................................................................................................................... 341

CAPÍTULO 15 ..................................................................................................... 343

BOAS PRÁTICAS ................................................................................................. 343

ANEXO .............................................................................................................. 345

COMO CODIFICAR SUBPARÂMETROS ................................................................. 345

BLOCO DFHBMSCA .................................................................................................... 349

Page 13: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 1 3

ESTRUTURA DO EIB ......................................................................................................350 BLOCO DFHAID ..........................................................................................................351 TABELA DE CÓDIGOS EIBRESP ........................................................................................352 TABELA DE CÓDIGOS EIBFN ...........................................................................................353 TABELA DE CONDIÇÕES DE EXCEÇÃO .................................................................................354 TABELA DE CONDIÇÃO DE EXCEÇÃO POR COMANDO ............................................................356 DEFINIÇÕES E TERMOS ...................................................................................................361 ABREVIATURAS.............................................................................................................362

BIBLIOGRAFIA ................................................................................................... 363

OUTRAS OBRAS DO AUTOR ................................................................................ 365

ÍNDICE GERAL .................................................................................................... 371

Page 14: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

Página deixada em branco

Page 15: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 1 5

Formação de Especialista COBOL

A formação de um desenvolvedor em COBOL Mainframe envolve conhecimento em: LÓGICA, COBOL, DB2, JCL e CICS.

A formação completa segue uma

sequência, de acordo com um

planejamento, para a integração de todos

os módulos e, com isso, potencializar a

sinergia vinda de cada área de

conhecimento. Por exemplo, primeiro é

desenvolvido o racíocino lógico para

aprender a construir lógicas de programação; depois, vem aprendizagem da

linguagem de programação com os seus comandos para construir programas com

base nas lógicas de programação aprendidas. A seguir, aprende-se o banco de dados,

DB2, onde estão armazenados os dados. Depois vem o JCL, linguagem de administra

a execução de programas batch, finalmente, aprende-se a estrutura do ambiente

online do Mainframe, e como converte a lógica em programação pseudoconversacional executada em CICS.

No módulo de LÓGICA, são abordadas como se constrói algoritmos e lógicas de programação.

No módulo de COBOL, são vistos a estrutura da linguagem de programação e os comandos, principais e básicos, para desenvolver programas.

No módulo de DB2, são abordadas a estrutura do banco de dados e os comandos,

principais e básicos, para cirar programas COBOL que acessam o banco de dados DB2.

No módulo de JCL, são vistos a estrutura da linguagem e os comandos, principais e

básicos, para desenvolver as soluções necessárias para a execução dos programas

batch.

No módulo de CICS, são vistos toda a teoria e estrutura do ambiente, a forma de

programação pseudoconversacional e, todos os comandos principais e básicos para desenvolver programas online.

Page 16: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

Metodologia dos cursos

Os cursos apresentam o conteúdo

através de SLIDES animados e coloridos

com apresentação, passo a passo, da

solução para tirar as dúvidas. Depois, é

fornecido, em média, de 2 a 4 exercícios para praticar e consolidar o cohecimento.

E para consagrar o conhecimento, é

solicitado, em média de três a seis exercícios extras para o aluno fazer.

Objetivo do método

Este método tem como objetivo alcançar os mais diversos indivíduos (visual, auditivo

ou cinestésico) para que tomem consciência dos conceitos. Todo o método está

baseado na indução do raciocínio, para que se crie a lógica necessária. Com isto,

durante o treinamento é solicitado grande esforço para criar o raciocínio lógico e a

lógica para que, depois de formado, o individuo possa raciocinar automaticamente

com muito menor esforço. Por exemplo, quando houver uma solicitação que seja

necessária à criação de duas quebras, uma dentro da outra, o raciocínio vem

automaticamente e, à medida que vai elaborando a lógica, o seu formato já vem no padrão aprendido.

Benefícios do método

Ampliação das possibilidades de aprendizagem Aumento do desempenho no raciocínio lógico Acomodação crescente do conhecimento Consolidação das estruturas lógicas

Page 17: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 1 7

Certificação COBOL

O instituto ICPDUG (INTERNATIONAL COBOL

PROGRAM DEVELOPER USERS GROUP), para

valorizar a área de desenvolvimento de sistema, fornece o exame de certificação

para desenvolvedor COBOL Mainframe, com o objetivo de identificar o especialista em desenvolvimento de sistemas COBOL Mainframe.

Objetivo da certificação

A certificação vem agregar valor para a empresa, na medida em que vai avaliar o

conhecimento para a necessidade específica que o profissional precisa ter,

possibilitando a criação de um quadro de profissionais altamente qualificados e

nivelados com o objetivo de planejar, definir e criar sistemas e programas com

eficiência e qualidade. E para o profissional, vem para valorizar a sua capacitação, a

sua formação, diferenciando-o dos demais profissionais, fornecendo-lhe as

credencias de um profissional especialista, aderente com as necessidades de conhecimento específico.

Como é a certificação

O certificado de Especialista em COBOL Mainframe, CMCPDS - Certified Mainframe

COBOL Program Development Specialist (Especialista em Desenvolvimento de

Programação COBOL Mainframe). O especialista máster recebe o título, após ter obtido todas as certificações para as seguintes especialidades:

LÓGICA - Programação estruturada COBOL - Linguagem de programação DB2 - Sistema Gerenciador de Banco de Dados Relacional JCL - Linguagem de controle Batch CICS - Sistema Gerenciador de ambiente ONLINE

Para mais informações, acessar o site www.icpdug.org.br ou utilize o e-mail [email protected].

Page 18: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

A v i r t u d e m o r a l é u m a

c o n s e q u ê n c i a d o h a b i t o . N ó s

n o s t o r n a m o s o s q u e f a z e m o s

r e p e t i d a m e n t e . O u s e j a : n ó s

n o s t o r n a m o s j u s t o s a o

p r a t i c a r m o s a t o s j u s t o s ,

c o n t r o l a d o s a o p r a t i c a r m o s

a t o s d e a u t o c o n t r o l e ,

c o r a j o s o s a o p r a t i c a r m o s

a t o s d e b r a v u r a .

Aristóteles

Page 19: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 1 9

Notação utilizada

[ ] Opcional.

{ } Obrigatório. Quando aparece mais uma representação, usar uma das.

< > Substituir por um nome

| Operador lógico "OU". Significa que pode ser substituído por um dos parâmetros.

... Existem procedimentos sque se repetem não mencionados.

Por exemlo: nome-1, nome-2...

Isto quer dizer que podem existir vários nomes, não se limitando ao que foi representado.

....|....1....|....2....|....3....|....4....|....5....|....6....|..

A linha acima representa a régua do exemplo em questão para ajudar a mostrar a posição dos caracteres, muito importante para a linguagem COBOL.

Reflexão

“Só é lutador quem sabe lutar consigo mesmo.”

Carlos Drummond de Andrade

Page 20: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

A m o r a l , p r o p r i a m e n t e d i t a ,

n ã o é a d o u t r i n a q u e n o s

e n s i n a c o m o s e r m o s f e l i z e s ,

m a s c o m o d e v e m o s t o r n a r - n o s

d i g n o s d a f e l i c i d a d e .

Friedrich Nietzsche

Page 21: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 2 1

Capí tu lo 1

Introdução

CICS

Módulo: Básico Pré Requisito: COBOL Básico

Este capítulo apresenta uma visão do CICS do ambiente e da sua estrutura, para suportar aplicações on-line com os seus módulos gerenciadores e suas tabelas de controle. Aborda a organização e o gerenciamento da memória, a administração: da comunicação dos terminais, dos acessos aos arquivos e da execução dos programas.

O CICS é um ambiente composto por um conjunto de programas , chamados de módulos gerenciadores, de tabelas e blocos de controle. Os módulos gerenciadores controlam a comunicação com os terminais de vídeo e impressoras, por meio de rede local ou rêmora, a execução dos programas e os acessos aos dados que estão em tabelas e arquivos. Para viabilizar este ambiente, o CICS controla todos os programas que estão interagindo com os terminais, exibindo as telas e lendo os teclados, assim como todos os arquivos usados por estes programas.

O CICS é um aplicativo, que é executado, com o objetivo de gerenciar as solicitações das aplicações e, deste modo, fornecer meios próprios para controlar as entradas e saídas de dados do sistema operacional garantindo a integridade dos dados para o alto volume de solicitações que podem ocorrer simultaneamente. Funciona como um “sistema operacional” e, dentro de seu ADRESS SPACE (Espaço de endereços virtuais do usuário para a execução de instruções e armazenamento de dados), carrega e controla todos os programas aplicativos de telas, os buffers de todos os arquivos abertos e compartilhados pelos programas aplicativos, além das suas tabelas próprias para gerenciar todo o conjunto.

Page 22: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

Conceituação do ambiente CICS

O que é CICS

O CICS (Customer Information Control System) é um produto (software, sistema) da IBM que é composto de vários módulos/programas de gerenciamento. É um sistema de dados e de comunicação de dados para rodar em equipamentos próprios e compatíveis. Este sistema permite que sejam transmitidos dados de um terminal para o computador, que estes dados sejam processados, acessem arquivos (podem ser também bancos de dados) e sejam, então, transmitidos de volta ao terminal de origem. Para este processamento, o sistema precisa usar um aplicativo de telecomunicações (por exemplo, VTAM, TCAM ou BTAM) e um ou mais dos seguintes métodos de acesso a arquivos: VSAM, BDAM, ISAM.

Pode ser executado sob todos os sistemas da IBM (MVS, VSE, VM ou OS/2). Os programas podem ser transportados de um ambiente para outro com pouca ou mesmo nenhuma alteração. Existem, também, dois níveis de codificação: macro (MACRO LEVEL), similar ao ASSEMBLER, e COMMAND LEVEL, que é similar ao COBOL.

É um produto (sistema, software) para manipular aplicações ON-LINE e é composto por um conjunto de programas (módulos gerenciadores) que faz a comunicação entre os programas da aplicação, o sistema operacional e o terminal de usuário . Ele possui a capacidade de suportar e controlar a comunicação de uma vasta rede que pode ser composta por centenas de terminais.

Page 23: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 2 3

Oferece as seguintes funções:

Controlar, simultaneamente, a execução de aplicações, servindo vários usuários ao mesmo tempo (ON-LINE); sistema multi-usuário.

Controlar a comunicação entre os terminais locais e os programas de aplicação, obtendo, assim, os dados solicitados pelo usuário.

Controlar a abertura e o acesso aos arquivos e bancos de dados, em conjunto com os vários métodos de acessos fornecidos pela IBM.

Facilitar a comunicação entre outros ambientes CICS, residentes no mesmo computador ou em computadores interligados.

Agora, ficará mais fácil imaginar que o CICS é um sistema operacional dentro do próprio sistema operacional. É um ambiente carregado, através da execução de um JOB, quando o sistema operacional é carregado, ou, quando for determinado. Na fase inicial (arranque) do CICS, são colocados em atividade todos os recursos (módulos gerenciadores) para que os programas da aplicação nunca abram um recurso e, sim, somente os utilize, por exemplo: programas, terminais, arquivos e impressoras. À atividade de dar carga ao ambiente dá-se o nome de IPL.

Método de acesso VTAM

Comunicação de dados (Data Comunications) é a transferência de dados entre um sistema e outros sistemas remotos. O VTAM é o responsável por enviar e receber dados dos gerenciadores de dados, como CICS e IMS, que cuidam das informações. O sistema de redes da IBM usa o SNA (System Network Architeture) como protocolo. O Mainfreme da IBM usa o software VTAM para controlar a rede. Mas o VTAM não é o único Software usado em SNA; os outros exemplos são o NCP (Network Control Program) e o CM/2 (Comunications Manager 2).

Controladores

A função dos controladores é ajudar a controlar o roteamento das mensagens de dados pela rede. Dois tipos são os exemplos:

Controladores de comunicação; Controladores de terminais.

Os controladores de comunicação ou CCP (Comunications Control Processor), também são conhecidos como Front End Processors ou somente Front Ends. São

Page 24: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

os dispositivos que controlam o recebimento e envio de mensagens de dados, inclusive as mensagens de confirmação de transferência destas mensagens. Neste processo de controle, o NCP é o Software e o CCP é o Hardware, mas todo dispositivo pode ser conhecido como NCP. Os controladores de terminais estão conectados aos Mainframes, NCP, impressoras e todos os dispositivos periféricos. Este controla o envio de mensagens, como para qual periférico vai a mensagem, etc. Os terminais podem ser dispositivos definidos para estarem conectados a os controladores de terminais, tem seu próprio software, chamado Microcode; o que dá acesso à rede SNA, é chamado de terminal 'burro'. Os terminais 'inteligentes' são computadores com software SNA instalados neles.

O que é processamento ON-LINE

Processamento ON-LINE, do ponto de vista do CICS, é o recebimento de informações (dados) do terminal, manipulação destas informações e, a seguir, o envio de uma mensagem de volta ao usuário. Tudo isto pode, normalmente, ser feito em questão de segundos. Neste tipo de transação, cada vez que o operador pressiona a tecla ENTER, o software de comunicação verifica se o terminal é válido. Isso é possível graças à tabela de controle de terminal (TCT). Podemos entender que as aplicações batch são diferentes das aplicações on-line, tendo em vista que cada uma trabalha em uma área específica. Dentro de sua região, o CICS, trabalha com várias aplicações simultaneamente, pois, trata-se de uma das suas características, a de ser multitarefas. Para que esses recursos sejam utilizados de maneira satisfatória, é preciso observar que um programa de aplicação não pode se comunicar diretamente com o sistema operacional; isso quem faz é o CICS. Devemos considerar também que o programa de aplicação não deve abrir ou fechar arquivos, porque o CICS executará essas funções no momento apropriado. Quanto a um programa COBOL, devemos considerar que o comando STOP RUN e o GOBACK são perigosos, porque, quando executados, o CICS será encerrado, fazendo com que toda a rede entre em OFF LINE. Nunca usar em um programa COBOL CICS as instruções STOP RUN e GOBACK. Para terminar um programa, é utilizado o comando RETURN. Toda aplicação On-Line deve retornar o controle para o CICS.

Reflexão

“Muitos homens iniciaram uma nova era na sua vida a partir da leitura de um livro”.

Henry Thoreau

Page 25: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 2 5

Múltiplas execuções de um programa

Como o programa é executado

A execução do programa é orientada para dialogar com o usuário e, por isso, a construção da sua lógica de execução é influenciada pelo desenvolvimento do respectivo diálogo, de tal forma que o programa quase nunca será executado por inteiro, como no caso dos programas BATCH, mas, normalmente, cada passo do diálogo implicará somente na execução das instruções que atendem ao diálogo. O grupo de instruções que se executa num passo de diálogo denomina-se TAREFA, e a atuação do usuário que a desencadeia, chama-se TRANSAÇÃO. O programa só pode acessar (aceder) a informação através dos módulos de serviço do CICS . A comunicação se dá, através (mediante) de instuções denominadas de High Level Programming Interface o HLPI.

O HLPI contém os chamados comandos CICS, que são sentenças no COBOL, dirigidas, especificamente, aos módulos de serviço e que têm a seguinte estrutura:

EXEC CICS

COMANDO

END-EXEC

O ponto não pode ser utilizado dentro da estrutura EXEC.

Page 26: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

Como o programa é terminado

Como o programa é executado dentro do CICS; é este quem supervisiona a sua execução. O programa pode, portanto, ser considerado como uma sub-rotina do CICS. Isto significa que, se é ao CICS a quem se pede a execução de um programa, também é ao CICS ao qual se informa de que a execução terminou. Por outras palavras, a finalização da execução de um programa faz-se, devolvendo o controle (controlo) ao CICS.

Um programa CICS não termina nunca com STOP RUN; utiliza-se o comando:

EXEC CICS

RETURN

END-EXEC

Regras para programa COBOL

Um programa COBOL, que é executado sob o CICS, deve seguir algumas regas. São elas:

Um módulo objeto não pode ser maior do que 524.152 Bytes. A WORKING-STOTAGE SECTION não pode ter mais de 64 k. A LINKAGE SECTION (COMMAREA) não pode ter mais de 32 k. Não pode ser utilizado: Configuration Section, Input-Output Section e File

Section. Quem gerencia os arquivos é o CICS, e não o programa de aplicação.

Não se pode utilizar as instruções COBOL que solicitem serviço direto ao sistema operacional (SO). Portanto, é proibido o uso dos seguintes comandos:

Page 27: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 2 7

Funções do programa no ambiente Batch

Vejamos algumas atividades executadas em ambientes Batch:

O programa de aplicação abre e fecha os arquivos utilizados. O programa utiliza muito acesso sequencial, pouco acesso randômico nos

arquivos. O programa de aplicação é o dono da partição. O programa gera relatórios extensos. O programa processa vários registros a cada rodada. (Processamento em

Lote). O programa roda isolado, desde o início até o término; todos os recursos

estão à sua disposição.

Funções do programa no ambiente On-Line

Vejamos algumas atividades executads em ambientes CICS, On-Line:

O CICS abre e fecha os arquivos. O CICS é cria, gerencia a partição. O programa possui acesso randômico, pouco acesso sequencial. O programa gera relatórios resumidos. O programa processa poucos registros a cada rodada. O programa roda, concorrentemente, com outros programas, desde o

inicio até o término; todos os recursos estão sendo compartilhados.

Compilação

A compilação de um programa COBOL BATCH é composta de duas etapas: compilação e linkedição, e de um programa COBOLl CICS é composta de três etapas: translator, compilação e linkedição.

Como entrar no ambiente CICS

Em primeiro lugar, é preciso que o usuário (utilizador) abra uma seção de CICS no seu terminal. A conexão realiza-se, normalmente, por seleção de opção no painel do sistema TSO. Uma vez em seção, o CICS informa com uma mensagem de que está apto para admitir petições de execução (aceitar solicitações).

Page 28: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

Os códigos de transação escrevem-se sempre nas primeiras posições do terminal. Para posicionar o cursor ou apagar a tela, utiliza-se (emprega-se) a tecla CLEAR.

Se o CICS, a que se conectou, requerer identificação, o primeiro programa que se deve executar é o programa de SIGN-ON cujo código de transação é CSSN. Este programa apresenta uma tela onde se deve informar (introduzir) os dados de acesso, usuário e senha: USERNAME e PASSWORD. Após a identificação do usuário, deve-se apagar a tela pressionando a tecla CLEAR e introduzir o código de transação que se deseja executar.

Para sair do CICS, realizar a desconexão, é preciso limpar a tela com a tecla CLEAR e executar o programa cujo código de transação é CSSF, na forma de: CSSF LOGOFF, com isto, a seção do CICS termina, e o controle volta para a seção do TSO.

Estrutura do CICS

Arquitetura do CICS

O CICS não é um programa único, mas sim, um conjunto de módulos gerenciadores, independentes e de tabelas onde cada módulo exerce uma função específica.

Também foi criado o conceito de Código de Transação. Segundo este conceito, os usuários do CICS não executam diretamente os programas escritos pelos programadores, em vez disso, solicitam a execução de um serviço, conhecido como transação (Transaction Code) que monta todo um complexo ambiente de controle e, só depois, é que são executados os programas de aplicação.

Os programas também não podem acessar diretamente os arquivos administrados pelo CICS. Para efetuar estes acessos, os programas devem executar o módulo File Control Program (FCP).

A p l ic aç õ e s

Sistemas operacionais

MVS/ESA VSEOS/400 AIX OS/2

C IC S

Page 29: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 2 9

Os módulos gerenciadores, para controlarem a comunicação com os terminais, impressoras, a execução dos programas e os acessos aos dados, precisam de tabelas.

As tabelas são usadas para administrar os componentes dos: terminais, programas e arquivos; administrar as tarefas e os acessos aos dados que são solicitadas junto ao sistema operacional. Elas também servem para cadastrar os componentes que o ambiente CICS vai controlar, como terminais, arquivos e programas.

Existem, também, os blocos de controle que são áreas que possuem informações, como localização do programa e situação da execução para ajudar os módu los gerenciadores, para administrar a comunicação do ambiente com os devidos componentes externos.

A arquitetura do CICS está baseada na solicitação de um serviço (transação) e na execução de tarefas (TASK), através de programas de aplicação (programa COBOL, por exemplo).

Uma visão da estrutura do CICS

O CICS é um ambiente complexo, repleto de módulos gerenciadores, tabelas de controle, áreas de administração de dados e processos em execução.

Vejamos uma ilustração básica para se ter uma ideia de como os componentes se relacionam para montar o ambiente CICS.

Memória do CICS

O ambiente CICS tem a sua memória dividida em duas áreas:

Núcleo gerenciador e, Área de trabalho (DSA)

Page 30: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

Núcleo gerenciador

O núcleo gerenciador é composto por módulos que gerenciam os terminais, as transações solicitadas, a execução das tarefas, a carga dos programas de aplicação, o acesso aos dados e a alocação de memória para isso tudo, e ainda conta com tabelas de controle que ajudam os módulos a gerenciar todas as atividades do CICS. Normalmente, os nomes dos programas gerenciadores começam pela sigla DFH. Por exemplo: DFHFCP.

Os módulos de gerência são programas que executam todas as atividades do núcleo gerenciador. Cada módulo de gerência realiza uma função específica. Por exemplo, quando um programa de aplicação emite uma solicitação (executa uma transação) para consultar dados do cadastro de cliente, no arquivo de cliente, é o módulo FCP (File Control Programa) que efetua o acesso ao arquivo. Quando um programa de aplicação emite um pedido para enviar uma mensagem (dados) ao terminal, o módulo de gerência TCP (Terminal Control Programa) transfere os dados (mensagem) para o terminal (tela do usuário de onde veio a solicitação da transação).

Os pedidos de I/O são feitos diretamente ao CICS, em vez de serem solicitados ao sistema operacional, como é feito normalmente, quando os programas estão no ambiente de processamento BATCH. No on-line, é desnecessário abrir arquivos, porque eles são abertos no momento da inicialização do ambiente, podendo, no entanto, serem abertos e fechados a qualquer momento por comandos específicos.

Entre os módulos de controle, podemos citar alguns bastante importantes:

FCP, KCP, PCP, SCP, TCP, TSP, DCP, ICP BMS, ISC

FCP - File Control Program

Controla todas as operações dos arquivos ISAM e VSAM.

KCP - Task Control Program

Controla o uso da CPU, dentro da partição do CICS e cria as tarefas.

Após a solicitação de execução da transação, o módulo KCP, que possui a função de iniciar uma tarefa, para que seja possível processar a transação, verifica na tabela PCT se a identificação da transação solicitada é válida ou não. A tabela PCT contém uma definição para cada transação, que possa ser processada no sistema,

Page 31: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 3 1

como a identificação da transação e o nome do programa de aplicação que devem ser executados.

Se uma identificação de transação, que foi solicitada a executar, estiver listada na tabela PCT, o módulo KCP cria uma tarefa para processar a mesma. A criação de uma tarefa envolve a obtenção e inicialização de uma área de Controle de Tarefa (TCA).

PCP - Program Control Program

O módulo PCP é um programa gerenciador, responsável pela localização dos programas de aplicação e, se necessário for, carregá-los na memória para a sua execução e, só sai da memória, se nenhuma solicitação de execução estiver em andamento. Toda vez que existe uma solicitação do programa e o mesmo já está na memória, ele é executado com as novas áreas de controle, sem interferir no que já está em execução. O módulo PCP tem como funções:

Verificar se o programa já está na memória do CICS, Transferir o controle do CICS para o programa de aplicação, Transferir o controle do programa de aplicação para o CICS, Transferir o controle de um programa de aplicação para outro programa de

aplicação.

Quando um programa de aplicação é solicitado para ser executado, o módulo PCP vai à tabela de controle PPT para verificar se o mesmo existe, e se existir, carrega o programa na memória e registra na tabela PPT, a localização do programa para que a próxima solicitação possa executar o mesmo programa, sem a necessidade de carregá-lo.

O módulo PCP controla todas as tarefas solicitadas para o mesmo programa, usando um contador gravado na tabela de controle PPT. O contador é atualizado com o incremento do seu valor, toda vez que o programa de aplicação for solicitado a executar e se o mesmo já estiver carregado na memória. E toda vez que um programa terminar de executar, o contador é diminuído. Quando o valor do contador for zero, significa que o programa de aplicação não é mais necessário, o CICS libera a memória até que uma nova solicitação seja executada.

SCP - Storage Control Program

Controla a alocação e liberação da memória, na área de memória dinâmica do CICS (DSA). O SCP é o módulo de gerência que é usado por todos os outros módulos do CICS e programas de aplicação.

Page 32: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

TCP - Terminal Control Program

O módulo TCP efetua a comunicação entre o programa, de aplicação que está sendo executado e o terminal conectado a este programa através da transação.

As funções primárias deste módulo gerenciador são:

POLLING ADDRESSING

O módulo TCP efetua pesquisa na tabela TCT para validar a transação, porque cada terminal que interage com o ambiente é identificado por uma entrada úni ca na tabela TCT (Terminal Control Table). A entrada é chamada de TCTTE. Quando os dados estiverem prontos para ser enviados para o terminal, uma indicação é posta na TCTTE. O módulo gerenciador, TCP, pesquisa a tabela de controle, TCT, periodicamente, e faz com que os dados sejam enviados para os respectivos terminais.

Quando o usuário solicita a execução de uma transação, através da digitação do código de identificação da transação num terminal, o módulo gerenciador, TCP, pede para o ambiente a iniciação de uma nova tarefa.

Quando um operador entrar em uma identificação de transação, o CICS/VS inicia uma nova tarefa. A partir daí, todos os comandos de entrada e saída (I/O) , encontrados durante a execução desta tarefa, serão endereçados, exclusivamente, para o terminal de onde entrou a identificação de transação.

É a associação entre o terminal e a tarefa que permite que o operador escreva comandos de terminal em seu programa de aplicação sem identificar qual terminal será, realmente, usado, quando o programa for executado.

Quando um terminal envia uma transação para o módulo TCP, a entrada é colocada numa área, chamada área de entrada e saída de terminal (TIOA). Esta área é adquirida dinamicamente pelo CICS, antes que o programa de aplicação correspondente seja carregado na memória.

O TCP pede que o módulo SCP aloque a quantidade apropriada de memória. Uma vez que a memória foi reservada, o TCP move os dados (mensagem) de entrada para a TIOA.

POLLING

POLLING é o nome do gerenciador que tem a tarefa de checar, periodicamente, os terminais para verificar se há alguma entrada efetuada pelo usuário. Se existir , o módulo captura a tecla de função pressionada, retorna para a execução do programa ou inicia uma transação.

Page 33: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 3 3

ADDRESSING

ADDRESSING é a checagem que o módulo efetua nos terminais para verificar se o mesmo está pronto para receber alguma mensagem (saída).

TSP - Temporary Storage Program

Gerencia a memória temporária, fornecendo recurso para armazenamento Intermediário. Permite a recuperação dos dados, na memória intermediária, por vários programas de aplicação.

TDP - Transient Data Program

Fornece um meio de armazenamento intermediário para que dados criados por uma ou mais tarefas sejam processados por outra. Os dados são gravados em destinos, definidos na DCT, e são processados de maneira sequencial.

DCP - Dump Control Program

Gerencia o DUMP (área de memória no momento do erro do programa) de qualquer tarefa no CICS.

ICP - Interval Control Program

Administra todos os serviços que estão atrelados à data da máquina. Por exemplo, executar uma tarefa, num determinado período de tempo.

BMS - Basic Mapping Support

Administra a exibição de mensagens em terminais, garantindo a independência em relação aos diversos dispositivos de saída. O BMS é uma área específica onde é definida a tela (mapa) de interação entre o usuário e o programa da aplicação. O BMS encarrega-se dos intercâmbios de informações com os terminais (ecrãs), juntamente com TCP. Obrigatoriamente, o mapa deve ser criado, através de macros do BMS em uma estrutura específica.

ISC - Intercommunication Control Program

Administra a comunicação entre os CICS, que podem estar residentes no mesmo computador ou em outro computador interligado.

Page 34: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

Tabelas de controle

O CICS gerencia e controla todas as atividades, e para isso ele usa tabelas para cadastrar terminais, transações, programas, arquivos e tarefas. As tabelas de controle definem o ambiente CICS. As tabelas estão, funcionalmente, atreladas aos módulos gerenciais. Por exemplo, todos os arquivos que podem ser acessados pelo CICS devem ter suas definições descritas na tabela FCT (File Control Table), para que possam ser compartilhados por todos os programas de aplicação, sem necessidade de qualquer ação por parte dos programas. Por este motivo, os arquivos não são definidos, no programa de aplicação, da mesma forma como são em programas BATCH. Principais tabelas:

TCT, KCT, PCT, PPT, FCT

FCT - File Control Table

Tabela para controlar os arquivos sob o CICS (arquivos VSAM). A tabela FCT é administrada pelo módulo gerenciador FCP.

PCT - Program Control Table

Tabela de transação para controlar o uso dos programas. O código da transação é associado ao programa que será executado. A tabela PCT é administrada pelo módulo gerenciador KCP.

PPT - Program Processing Table

Tabela de cadastro dos programas para o gerenciamento da sua posição (endereço) na memória, quando da execução. A tabela PPT é administrada pelo módulo gerenciador PCP.

TCT - Terminal Control Table

Tabela para controlar os endereços dos terminais utilizados pelo CICS. A TCT mantém informações do tipo: características da linha de comunicação, tipos de terminais, dispositivos especiais, prioridades de terminal, sequência de POLLING e dados operacionais (tais como: indicação de que um determinado terminal está, temporariamente, inativo e que ele deve ser excluído da sequência do POLLING). TCT é administrada pelo módulo gerenciador TCP.

Page 35: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 3 5

KCT - Task Control Table

Tabela para controlar os serviços ativos no CICS.

DSA - Dynamic Storage Area

O DAS é uma área do CICS que representa a memória onde são controlados os dados temporários (dinâmicos) para acesso e atualização dos mesmos, durante a execução do programa de aplicação. Nesta área, são carregados:

Os programas de aplicação. As áreas de trabalho (working storage section). As tabelas temporárias. Os blocos de controle utilizados pela tarefa (Task) e pelo programa (EIB) . Os dados que saem e entram nos terminais. Os dados que entram e saem dos arquivos.

A memória está divida em três grupos:

Blocos de controle, Área de dados interna do ambiente e Área de dados temporária.

Blocos de controle

Os blocos de controle possuem informações do sistema. Entre os blocos de controle, podemos citar:

CSA, TCA, EIB

CSA - Commom System Area

A CSA é a principal área de controle do CICS. Contém informações gerais do sistema que será usado pelos vários módulos de gerência.

TCA - Task Control Area

A TCA é um bloco de controle que contém informações importantes e necessárias para administrar a execução da tarefa. É criada no momento em que a transação é iniciada e eliminada ao término de sua execução. Quando dois usuários executam o mesmo programa, são criadas duas tarefas distintas e cada uma vai ser identificada com um número chamado de TASKID. A TCA é um

Page 36: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

bloco de controle que dá acesso a todas as áreas de memória, obtidas em conexão com a tarefa. Ela também serve como o veículo de comunicação entre o programa de aplicação e os módulos de gerência do CICS . Uma vez criada uma TCA para uma tarefa, esta tarefa é ligada ao terminal requisitante, por meio de indicadores de localização armazenados tanto na TCA como na TCTTE. Em transação conversacional, haverá subsequentes mensagens de entrada. Estas mensagens são passadas para a tarefa como dados.

EIB - Exec Interface Block

EIB é uma área de controle da execução do programa. Nesta área estão informações pertinentes à tarefa que o programa, em execução, poderá precisar. Esta área é criada no momento em que uma tarefa é iniciada. Existe um EIB por tarefa. O programa pode acessar os dados, durante a sua execução, mas não pode alterá-los.

A estrutura completa da EIB está definida no manual da IBM “CICS Application Programmer's Reference Manual (Command Level)”.

Da estrutura da área, podem-se citar alguns campos (variáveis) importantes:

EIBTIME, EIBDATE, EIBTASKN, EIBTRNID, EIBTRMID EIBAID, EIBCALEN, EIBCPOSN, EIBRCODE, EIBRESP

Para maiores detalhes, veja, em anexo, a estrutura do EIB e os códigos de retorno de algumas variáveis da EIB.

EIBTIME

Guarda a hora do início da tarefa no formato HHMMSS. Este campo pode ser atualizado durante a execução da tarefa, através do comando do CICS (EXEC CICS ASKTIME).

EIBDATE

Guarda a data do início da tarefa, no formato AADDD (formato Juliana).

EIBTASKN

Guarda o código numérico que representa a tarefa atribuída pelo CICS.

Page 37: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 3 7

EIBTRNID

Guarda o código que identifica a transação, composto por quatro caracteres, numa variável, no formato de CHAR (04).

EIBTRMID

Guarda a identificação do terminal de onde foi solicitada a execução da transação. O código é composto por quatro caracteres, numa variável, no formato de CHAR (04).

EIBAID

Guarda um valor que corresponde à última tecla de função pressionada no terminal e gerenciada pelo CICS. Toda tecla de função possui um código correspondente. Este código está no formato hexadecimal, numa variável, no formato de CHAR (01). O ambiente fornece uma área (BOOK) onde se pode encontrar toda a definição das teclas de função, tratadas pelo CICS. A área é a DFHAID e deve ser inserida na WORKING-STORAGE SECTION do programa, através do comando COPY. Exemplo: COPY DFHAID. No caso das teclas CLEAR, PA1, PA2, PA3, não ocorre transmissão de dados; isto significa que tudo o que for digitado, não chegará até o programa.

EIBCALEN

Guarda o tamanho da área de comunicação entre os programas, definida como DFHCOMMAREA. Quando esta variável estiver com o valor zero, significa que a área DFHCOMMAREA está vazia. Não foi passada para o programa.

EIBRESP

A variável EIBRESP contém o código de retorno da execução dos comandos CICS. O valor de EIBRESP pode ser guardada em uma variável com o seguinte tamanho e formato: S9(09) COMP.

EIBRCODE

Para toda a execução de um comando, o CICS gera um código de retorno para identificar como foi a sua execução. Este código de resposta do CICS é guardado na variável do sistema, EIBRCODE. Possui sempre o retorno do último comando executado. A variável EIBRCODE contém o último código emitido pela função, requerida como resposta da tarefa, concluída pelo CICS. Seu formato e tipo é PIC

Page 38: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

X(6). Para uma resposta normal, este campo contém zeros hexadecimais (6 X'00'). O terceiro byte de EIBRCODE tem o mesmo valor que EIBRESP. Quando ilógico ou IOERR, ocorre durante operações com arquivo, informação adicional é fornecida no campo EIBRCODE, como se segue:

.. xx xx xx xx .. BDAM response.

.. xx .. .. .. .. VSAM return code.

.. .. xx .. .. .. VSAM error code.

EIBCPOSN

Guarda a posição do cursor na tela. A posição do cursor é representada por um valor numérico sequencial que começa pela primeira posição da primeira linha e recebe o valor zero (0). A tela é definida por 24 linhas, com 80 caracteres cada uma. Por este motivo, a última posição da tela recebe o valor 1920. Esta numeração serve apenas para os terminais do tipo 3270, a caractere, e não gráfico. Formato S9(4) COMP. Quando desejar saber o número da linha, deve-se fazer o seguinte: pegar o valor de EIBCPOSN e dividir por 80. Ao resultado da operação deve ser somado o valor um, e a parte inteira é o número da linha. Quando desejar saber o número da coluna, deve-se fazer o seguinte: pegar o valor de EIBCPOSN e dividir por 80. Ao resto da divisão, mais o valor um, é o número da coluna.

Áreas de dados Interna

O CICS possui áreas especificas para gerenciar as atividades de entrada e saída (I/O) em terminais, arquivos e informações da execução do programa. Áreas internas, temos:

TIOA FIOA

TIOA - Terminal I/O Área

Esta é uma área especifica do terminal. É nela que são colocados os dados que devem ser transmitidos para o terminal e aqueles que são transmitidos do terminal. Obrigatoriamente, devem passar por esta área. É adquirida, dinamicamente, antes que o programa de aplicação correspondente seja carregado na memória.

FIOA - File I/O Área

Área de entrada e saída de arquivo.

Page 39: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 3 9

Área de dados temporária

Quando um programa é executado, é criada uma área com a WORKING-STORAGE SECTION. Existem também áreas de dados temporários que podem ser criados para uso dos programas. Entre as áreas temporárias, temos: a TS e TD. Vamos somente a TS.

TS - Temporary Storage

A TS é uma área de armazenamento de dados temporários, criados pelo programa. Esta área permanece até que seja excluída pelo programa que a criou ou por outro. Quando dois usuários executam o mesmo programa, são criadas duas TS distintas e cada uma vai ser identificada por um código com oito (8) posições. Este é composto de:

Código da transação com quatro (4) dígitos que fica na variável do sistema EIBTRNID, e pelo

Código do terminal com quatro (4) dígitos que fica na variável do sistema EIBTRMID.

Controle de terminal

O controle do terminal é feito pelo módulo de gerenciador TCP (Terminal Control Program). Ele é o responsável pela comunicação entre o ambiente e o terminal e vice-versa, controlando todos os dados que entram e saem do terminal. Se o terminal for validado positivamente, é solicitado ao módulo SCP que aloque a quantidade apropriada de memória e, em seguida, os dados de entrada serão movimentados para a respectiva área do terminal. O terminal que interagir com o ambiente deve estar cadastrado na tabela TCT (Terminal Control Table) , com uma única área de identificação, chamada de TCTTE. É a partir das teclas de função pressionadas, no terminal, que o módulo gerenciador de terminal identifica a solicitação de uma ação.

Page 40: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

Receber dados do terminal

Periodicamente, o TCP verifica na tabela TCT se o terminal emitiu algum comando. Se houver algum comando, os dados de entrada são colocados numa área, chamada área de entrada e saída de terminal (TIOA). Estes dados serão movimentados para a área de trabalho do programa, assim que ele for executado. Para transferir dados de um terminal para o programa em execução, utiliza-se o comando RECEIVE.

Enviar dados para o terminal

Quando o programa enviar dados para o terminal, os mesmos são transferidos para a TIOA e uma indicação é colocada na TCTTE. Como, periodicamente, a TCP verifica a TCT, a solicitação é executada e os dados são transferidos para o terminal. Para transferir dados do programa para o terminal, utiliza-se o comando SEND.

Como tratar as teclas de um terminal

Em muitos ambiente as aplicações tratam a tecla ENTER com a tecla que emite um sinal de que a aplicação deve ser executada.

No CICS as teclas ENTER, CLEAR e as de função são interpretadas como uma solicitação de serviço, vinda de um terminal. As teclas de função estão declaradas no INCLUDE DFHAID. As teclas de função podem ser: PA1 ... PA3, PF1 ... PF24.

A variável DFHAID contém as declarações de variáveis, inicializadas com os valores definidos em hexadecimal, correspondente a cada tecla reconhecida pelo CICS. Formato PIC X(1). Veja estrutura do DFHAID no anexo. Cada tecla do terminal aceito pelo CICS está definida em uma área prédefinida chamada de bloco de DFHAID. Esta área deve ser incluída na WORKING-STORAGE SECTION através do comando COPY. Por exemplo:

COPY DFHAID

Veja como implementar o controle da teclas no Comando HANDLE AID do capítulo “Capítulo 1 - Introdução ao CICS”.

Todas as informações de execução da TASK estão em uma área chamada de EIB, conforme mencionado em “EIB - Exec Interface Block” no “Capítulo 1 - Introdução ao CICS”.

Page 41: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 4 1

Controle de programa

O controle de execução do programa é feito pelo módulo de gerenciador PCP (Program Control Program) que é responsável pela sua localização e execução, e administra a passagem do controle do CICS para o programa e vice-versa. É também, através do PCP, que é transferido o controle de um programa para outro programa, através da execução dos comandos: LINK e XCTL. Na execução, o módulo gerenciador PCP usa a tabela PPT (Processing Program Table).

O módulo PCP tem como funções:

Verificar se o programa já está na memória, Transferir o controle do CICS para o programa de aplicação, Transferir o controle do programa de aplicação para o CICS, Transferir o controle do programa de aplicação para outro programa.

Chamar um programa e retornar

Quando um programa em execução precisa chamar a execução de outro programa, e que depois o controle volte para o programa chamado, utiliza -se o comando LINK. E para que o programa chamado passe o controle para o programa chamador, utiliza-se o comando “RETURN”.

Chamar um programa e não retornar

Quando um programa em execução precisa chamar a execução de outro programa e que depois o controle não volte para o programa chamado, utiliza -se o comando XCTL. Nesta situação, quando o programa chamado terminar a sua execução, e for executado o comando “RETURN”, o controle passará para o CICS ou para o último programa que executou o comando LINK, da mesma sequência.

Page 42: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

Controle de arquivo

O controle de arquivo é necessário para arquivos de dados e não para tabela relacional (DB2, por exemplo). Este controle é efetuado pelo gerenciador FCP (File Control Program) que tem a função de administrar todos os acessos aos arquivos. O FCP usa os métodos de acesso da IBM, utilizados em arquivos do tipo VSAM, e não manipula arquivos sequenciais. Os arquivos devem estar cadastrados na tabela

FCT (File Control Table).

O gerenciador permite:

Ler um registro (READ) Atualizar um registro (REWRITE) Incluir um registro (WRITE) Excluir um registro que um arquivo VSAM / KSDS (DELETE) Liberar o controle exclusivo (UNLOCK)

Os arquivos, depois de cadastrados na tabela, são abertos, quando o ambiente CICS é inicializado (IPL), e fechados, quando o CICS é finalizado.

Page 43: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 4 3

Acesso ao arquivo VSAM

O VSAM (Virtual Storage Access Method) é um dos tipos de arquivos que podem ser acessados por aplicações sob CICS. Uma aplicação CICS lê e grava dados em um arquivo VSAM, na forma de registros individuais. Cada requisição de leitura e gravação é feita através de comandos "COMMAND LEVEL".

O CICS suporta acesso para os seguintes tipos de arquivos VSAM:

Key Sequenced Data Set (KSDS); Entry Sequenced Data Set (ESDS); Relative Record Data Set (RRDS).

O KSDS é o mais comumente utilizado e possui estrutura de "INDEX" e "DATA". Os demais tipos (ESDS e RRDS) possuem apenas estrutura da "DATA". O VSAM organiza os dados em áreas chamadas CA (Control Area), que, por sua vez, são subdivididas em áreas menores, chamadas CI (Control Interval). A unidade de transferência de dados é sempre o CI. Isso significa dizer que, quando uma aplicação lê um registro VSAM, todo o CI onde se encontra o registro é trazido para a memória.

Devido a essa característica de transferência de dados, quando da criação de um CLUSTER VSAM, é importante levar em consideração o tipo de acesso que esse arquivo irá sofrer para definir o tamanho ideal de CI/CA.

Em geral, acessos diretos (informando a chave) têm uma performance melhor com CI menores (4K a 8K), e acessos sequenciais, ao contrário, são mais eficientes com CI maiores (12K a 32K). Portanto, em um ambiente on-line, o acesso mais adequado para arquivos VSAM é aquele, predominantemente, direto (com chave), evitando-se grandes leituras sequenciais e inserções em massa, que, além de causarem grande número de I/O físicos, prende os Cis, impossibilitando acessos concorrentes. Outro aspecto a ser considerado é se o arquivo irá ou não sofrer inserções e qual a característica das mesmas (se aleatória ou apenas no final do arquivo). Isso implica na utilização ou não do FREE SPACE (quando KSDS) a ser definido para o arquivo. FREE SPACE é a quantidade de espaço que será deixado livre no CI/CA em tempo de carga do arquivo. Esse espaço livre é usado pelo VSAM para fazer inserções de registros, no meio do arquivo, com a finalidade de evitar as ocorrências de SPLIT (SPLIT é a "quebra" de um CI ou CA, quando não há mais espaço para colocar o registro inserido). Os SPLITs só ocorrem em arquivos KSDS. O processo interno que o VSAM utiliza para fazer um SPLIT é bastante pesado, portanto, deve-se evitar ao máximo a sua ocorrência, seja através de parâmetros (FREE SPACE, tamanho de CI/CA), ou por uma utilização mais adequada do arquivo. Fica claro, portanto, que, no ambiente CICS, a ocorrência de SPLITs é ainda menos desejada, pois ela ocasiona degradação do ambiente, uma vez que o CICS aguarda o VSAM terminar o seu processo de SPLIT (CA SPLIT) para poder processar qualquer outro acesso a

Page 44: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

arquivos. Logo, se a aplicação possui essa característica de grandes inserções, devem-se avaliar outras formas alternativas de armazenamento de dados (ESDS, Banco de Dados...) que, provavelmente, oferecem alternativas melhores do que o VSAM KSDS. Também deve ser avaliado o tipo de compartilhamento (SHARE) necessário para o arquivo, pois a integridade de acesso depende do parâmetro SHAREOPTION.

Os valores de SHAREOPTION são:

Permitir vários lendo ou um atualizando. Permitir vários lendo e um atualizando. Permitir vários lendo e atualizando (enqueue p/ aplicação). Permitir vários lendo e atualizando (inv lida buffer).

SHAREOPTION 3 e 4 devem, sempre que possível, ser evitados, pois não é garantida a integridade pelo método de acesso (o enqueue dos registros fica por responsabilidade da aplicação). No caso da opção 4 (que invalida o buffer), o CICS efetua I/O físico para todo acesso a registro, isto é, não há bufferização de dados.

Para o CICS, um arquivo VSAM pode ser recuperável ou não. O CICS garante a integridade de arquivos VSAM-KSDS, através do recurso chamado BACKOUT. Quando uma transação ABENDa (fim anormal) ou quando há uma queda do CICS, no momento em que um VSAM está sendo atualizado, a rotina de BACKOUT desfaz as alterações que foram feitas até o último SYNCPOINT. Deve-se, portanto, considerar o momento adequado na aplicação para se emitir o SYNCPOINT (normalmente ao término de uma LUW). Lembrar que alguns comandos geram implicitamente um SYNCPOINT, como o RETURN (inclusive RETURN TRANSID), e TERMINATE PSB (aplicações DL/I).

Arquivos ESDS não permitem BACKOUT. Alternativamente, é possível marcar, logicamente, o registro como excluído (deletado) e, posteriormente, (através de procedimento BATCH), excluí-lo do arquivo. Para garantir a integridade e prevenir acessos concorrentes, o CICS e o VSAM usam o recurso de EXCLUSIVE CONTROL. O CICS serializa, coloca em fila, solicitações de UPDATEs por ENQUEUE, na chave do registro. O VSAM serializa por ENQUEUE, no CI (CONTROL INTERVAL). Desta forma, nenhuma transação pode atualizar um registro, no mesmo CI em que outro está sendo atualizado. O EXCLUSIVE CONTROL do VSAM permanece até a requisição ser completada. Por exemplo, em uma operação de UPDATE, o EXCLUSIVE começa no READ com UPDATE e termina com o REWRITE. Para um arquivo VSAM não recuperável, o EXCLUSIVE CONTROL do CICS termina também, nesse momento, mas, para um arquivo recuperável, ele permanece ativo até a TASK terminar ou emitir um SYNCPOINT. EXCLUSIVE CONTROL é, frequentemente, responsável por situações de DEADLOCK interno de transação, além de causar WAITs em outras transações que, eventualmente, estejam precisando fazer acesso àquele registro ou CI. Portanto, a transação DEVE, assim que possível, liberar o EXCLUSIVE CONTROL.

Page 45: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 4 5

Transação

Uma transação pode ser considerada como sendo uma unidade de processamento (composto por um ou mais programas de aplicação), iniciada por um único pedido de execução, sempre através de um terminal. Uma transação pode, ainda, necessitar da execução de uma ou mais tarefas para realizar o seu processamento completo.

A transação deve estar cadastrada na tabela PCT (Program Control Table) e o seu nome deve ser definido por quatro (4) caracteres e deve estar associada a um único programa de aplicação que deve estar cadastrado na tabela PPT (Processing Program Table). Uma transação tem sua execução iniciada pelo terminal.

O processamento de uma transação é iniciado, quando o operador digitar o código, no terminal. É possível executar uma mesma transação em dois ou mais terminais concorrentes, sem causar nenhum conflito porque o CICS atribui um número para cada tarefa. As áreas de controle de transação são únicas por terminal e são criadas quando solicitada a sua execução, pela primeira vez, e eliminada ao término da execução do programa associado à transação. Tome-se como exemplo de transação:

Consultar o saldo num caixa eletrônico Transferir um valor da conta corrente para uma aplicação financeira Incluir pedido

Para cada execução existe uma interface específica para as seguintes atividades:

Aceitar os dados, quando estes estejam prontos para serem transmitidos do terminal ou para o mesmo.

Controlar o terminal que solicitou a tarefa. Executar o programa apropriado para executar a tarefa. Controlar o compartilhamento dos recursos do ambiente.

Page 46: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

Tarefa (TASK)

Uma tarefa é, na verdade, uma área de controle chamada de bloco de controle (TCA, Task Control Área) dentro da DAS (Dynamic Storage Area) que liga a atividade da solicitação ao terminal e faz todo o controle entre o programa e os módulos de gerenciamento do ambiente. Também é criada uma área chamada de bloco de interface de execução (EIB) que possui dados para a execução do programa e a sua situação.

Uma tarefa pode ser executada por diversas transações ao mesmo tempo, porque a working-storage section do programa é criada uma para cada transação. Cada tarefa (task) é enumerada sequencialmente, de modo que não existirão possibilidades de confusões nos processamentos. Cada tarefa possui uma identificação própria, composta por um número sequencial ascendente, conhecido como TASKID. As instruções do programa (divisão procedure division do COBOL) são compartilhadas por todas as tarefas. As áreas referentes às procedure division, às WORKING-STORAGE SECTION e às áreas criadas para o gerenciamento das tarefas, estão localizadas numa área específica do CICS chamada de DAS (Dynamic Storage Area).

Visão do fluxo da transação

A execução de uma transação envolve vários procedimentos encadeados juntamente com áreas de controle do processamento de todos os programas de aplicação (programa aplicativo) e seus dados. Vejamos, de forma resumida, como é o fluxo de execução de uma transação.

Passo 1 - Recepcionar a solicitação

Quando uma transação é solicitada, duas informações devem constar:

Identificação da transação e os, Dados a serem processados.

Page 47: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 4 7

Após a solicitação da transação, o módulo gerenciador de terminal (TCP, Terminal Control Program) recebe a solicitação e valida se o terminal está cadastrado na tabela. Se estiver cadastrado, é solicitada ao módulo SCP (Storage Control Program) que seja reservada uma área, com memória suficiente para colocar os dados numa área específica, chamada de TIOA

Passo 2 - Validar a transação

Depois de recepcionada a transação, a mesma é validada pelo módulo gerenciador (KCP, Task Control Program). A transação deve estar cadastrada na tabela PCT (Program Control Table). Se a transação estiver cadastrada, uma tarefa é criada. Esta tarefa é, na verdade, uma área de controle (TCA, Task Control Area), criada na DAS (Dynamic Storage Area) que liga a atividade solicitada ao terminal e faz todo o controle entre o programa de aplicação e os módulos gerenciadores do CICS. Também é criada uma área chamada de bloco de interface de execução (EIB) que possui dados para a execução do programa de aplicação e a sua situação.

Passo 3 - Validar programa

Após a criação da tarefa, é solicitada a execução do programa de aplicação que está cadastrado na tabela PPT (processing Program Table) e associado à transação, através do módulo PCP (Program Control Program) que o seleciona para ser executado. A execução é feita pelo módulo EIP (Execute Interface Programa) que interpreta os comandos e coloca o resultado da execução na EIB. Após a execução do programa de aplicação, são formatados os dados que são colocados na área de entrada e saída do terminal.

Page 48: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

Passo 4 - Retornar ao terminal

Depois que os dados são formatados na área específica do terminal, é passado o controle para o TCP que envia os dados para o terminal e termina a transação. Neste momento, os recursos adquiridos são liberados e o terminal fica disponível para a execução de outra transação.

Passos do fluxo da transação

Vejamos, em detalhes, o resumo do fluxo de execução da transação, na sua sequência:

1. O usuário informa (digita), no terminal de vídeo, os 4 caracteres do código da transação que deseja executar e pressiona a tecla ENTER ou uma PF.

2. O módulo de gerenciamento de terminais TCP (Terminal Control Program) lê a entrada e armazena na tabela TCT (Terminal Control Table), e chama o módulo de gerenciamento de memória SCP, solicitando a alocação de uma área de memória para o terminal (TIOA). O SCP aloca a área necessária e devolve o controle para o TCP.

3. O TCP move a mensagem de entrada (os dados da tela) para a TIOA e passa o comando para o módulo gerenciador de tarefas KCP.

4. O KCP verifica, na tabela de transações PCT, se o código de transação recebido é válido. Se for válido, ele cria uma tarefa para processar esta transação e chama o SCP, solicitando a alocação de uma área de memória para a nova tarefa, a TCA (Task Control Area). Uma vez criada uma TCA para a tarefa, esta tarefa é ligada ao terminal requisitante, por meio de indicadores de localização, armazenados na própria TCA e na TCTTE, e é também criada a área do bloco de controle EIB.

5. Neste ponto, o KCP chama o módulo de gerenciamento de programas (PCP), passando para o mesmo o nome de programa, associado com a transação, encontrado na PCT.

Page 49: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 4 9

6. O PCP faz uma leitura da PPT para verificar se o programa já se encontra carregado em memória.

7. O PCP consulta sua tabela PCT (Processing Control Table) que associa o código da transação com o programa de aplicação que deve ser executado e faz uma leitura da PPT para verificar se o programa já se encontra carregado em memória. Se ainda não estiver, carrega o mesmo na REGION do CICS e inicia a sua execução e cria uma cópia da WORKING-STORAGE para a nova tarefa. Caso o programa já esteja na memória apenas é criada uma cópia da WORKING-STORAGE para a nova tarefa.

8. No início de sua execução, o programa executa um comando CICS que pede ao módulo TCP para mover os dados da tela armazenada na tabela TCP para os campos de saída da tela, definidos na sua WORKING-STORAGE.

9. O programa de aplicação executa sua lógica, usando os campos recebidos na WORKING-STORAGE.

10. Para acessar arquivos, o programa de aplicação emite uma chamada para o módulo gerenciador FCP (File Control Program) e para executar o comando de acesso ao arquivo solicitado pelo aplicativo e devolve os resultados. O módulo FCP usa a tabela FCT (File Control Table) que contém a descrição e o estado atual de todos os arquivos controlados pelo CICS.

11. Terminado o processamento dos dados, o programa de aplicação copia os resultados para os campos de saída da tela em sua WORKING-STORAGE. Em seguida, o programa aplicativo emite um comando CICS para solicitar ao módulo TCP que copie os dados de saída da tela da WORKING-STORAGE do programa para a entrada correspondente, na tabela TCT, e transmita para o terminal do usuário.

12. Para encerrar a transação, o programa aplicativo emite um comando para o PCP (Processing Control Program), que toma as medidas necessárias para o término do programa, e apaga o código da transação da tabela TCT.

Todo comando EXEC CICS, emitido pelo programa de aplicação, é interceptado pelo módulo de interface de execução (EIP) que analisa o comando e chama o módulo responsável por sua execução.

Por exemplo, os comandos de acesso a arquivos são passados para o FCP, que faz uso da tabela de arquivos (FCT) para executar a função solicitada pelo comando. O FCP também solicita ao SCP a alocação de uma área de memória para transferência dos dados entre o arquivo e o programa de aplicação. Esta área é a File Input Output Area (FIOA).

Além dos serviços realizados pelos vários módulos de gerência do CICS, este mantém também um acompanhamento de certos dados que o programa de aplicação pode necessitar, durante a execução, tais como o número da tarefa,

Page 50: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

data, hora, etc. Estes dados são registrados em uma área de memória à qual o programa tem acesso apenas para leitura, o EIB (Execution Interface Block).

Modelo concorrente de uma mesma transação

O modelo concorrente é uma grande vantagem do ambiente CICS. Imagine que existem muitos terminais e em todos eles o usuário solicita a execução da mesma transação, simultaneamente. O que acontece?

A PROCEDURE DIVISION do programa é carregada uma única vez.

Cada solicitação de execução executa o programa e cria uma cópia da área de WORKING-STORAGE do programa para cada uma das tarefas.

Tipos de transação

As transações, dentro de um ambiente CICS, podem ser síncronas ou assíncronas, dependendo de estarem ou não associadas a um terminal. As transações síncronas podem ser classificadas em: não conversacionais, conversacionais e pseudo-conversacionais, em função do tipo de diálogo entre o programa e o terminal.

Transação não conversacional

A transação não conversacional processa uma única entrada, a transação digitada no terminal, responde e encerra (devolve o controle para o CICS). Numa transação não conversacional, nunca acontece uma segunda entrada através do terminal; portanto, não há um diálogo real. A transação inicia sua execução, prende o terminal enquanto espera o resultado e, quando a transação terminar, o terminal é liberado junto com os outros recursos.

Transação conversacional

A transação conversacional é a implementação, um diálogo real, porque ao receber cada entrada do terminal, o CICS responde e aguarda a nova resposta, vinda do terminal. Neste tipo de transação, o terminal, a memória e todos os recursos utilizados ficam presos pela transação até o seu final .

Page 51: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 5 1

A transação conversacional resume-se no envio de dados do CICS para um terminal (através de mapa ou tela) e do terminal para o CICS. Entre a tarefa de enviar e receber dados, uma conexão é criada e a instrução é executada, prendendo todos os recursos do ambiente envolvidos, para realizar a solicitação, até que o usuário pressione alguma tecla de função (PF KEY: PF, PA ou ENTER ou CLEAR).

Durante o período de espera, a transação é considerada "em uso" pelo CICS e, com isso, todos os recursos necessários para a execução do programa ficam sendo usados e retidos até que termine a solicitação (a transação). O envio de dados do ambiente para o terminal é feito pelo comando “SEND MAP” e do terminal para o programa é “RECEIVE MAP”.

Se durante a execução de um programa, outro usuário solicitar a execução do mesmo, o CICS carrega uma nova cópia na memória. Este processo pode levar a memória a se esgotar e causar grandes danos e pode até o CICS sair do ar.

Transação pseudoconversacional

A transação pseudoconversacional comporta-se da mesma maneira que na conversacional; o que muda é a maneira de programar a sequência dos comandos e de como o programa deve encerrar o seu processamento. Este tipo de transação pressupõe que o programa solicite ao ambiente o que deseja realizar e termina aí o vínculo com o próprio ambiente. O ambiente executa a solicitação e, ao término da mesma, envia o resultado para o respectivo terminal. Entre a solicitação ao ambiente e o retorno das informações, podem ser feitas quantas solicitações forem necessárias e, por diversos usuários, que o ambiente atenderá a todas elas e responderá com toda a atenção, sem que o usuário precise aguardar.

Por exemplo: quando é executada a transação para consultar os dados do cadastro do cliente, o programa correspondente é executado e os recursos do CICS são acionados; uma tela, em branco, é apresentada ao usuário para que ele insira o código do cliente a ser consultado. Após a exibição da tela, a execução do programa é interrompida e o ambiente fica esperando uma nova tecla de função para que a tarefa possa ser recomeçada. Toda vez que uma solicitação (transação) é executada, todos os recursos utilizados são liberados, ficando

Page 52: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

ativas somente as áreas de controle da transação e as tabelas de dados correspondentes.

Numa transação pseudoconversacional, a lógica do programa termina de executar um passo e a transação fica em estado de espera com a liberação da memória e dos recursos utilizados, dispondo os mesmos para que o ambiente possa utilizá-los novamente, após a exibição da mensagem no terminal ao usuário. Por isso é importante que a lógica do programa esteja preparada para continuar do mesmo ponto que parou anteriormente e, assim, sucessivamente, até que termine a execução de toda a lógica do programa.

O CICS interpreta as teclas de função como uma ordem de execução vinda de um terminal. As teclas de função podem ser: o ENTER, o PF3, entre outras.

Quando o usuário pressionar uma tecla de função após a exibição da tela, o próprio programa deve terminar a execução da tarefa com a emissão de um comando específico, que será tratado mais adiante, informando ao CICS que deve executar novamente o programa associado à transação.

É neste momento que a execução do programa deve recomeçar pela primeira linha escrita na PROCEDURE DIVISION e com os dados vindos do terminal. Que comando e como será feito isso, será visto mais adiante.

Reflexão

"A menos que admita a existência de Deus, a questão sobre propósito de vida não tem sentido."

Bertrand Russell

Page 53: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 5 3

Diagrama pseudoconversacional

Vantagens da transação pseudoconversacional

O CICS por si só pode ser pouco relevante, mas, quando aplicado o método de desenvolvimento chamado de “programação pseudoconversacional” ou reentrante, aí ele vira um excelente, e até imbatível, ambiente para aplicações ON-LINE REAL-TIME onde podem existir centenas de usuários, solicitando a mesma funcionalidade ao mesmo tempo. Neste caso, o CICS executa todas elas como se fossem ao mesmo tempo e retorna o resultado em segundos, garantindo a integridade dos dados. O que precisa para isso é aplicar o conceito de programação reentrante, na criação do programa que rodam sob o ambiente CICS.

Conceitos da execução pseudoconversacional

Para que o programa possa utilizar os princípios da transação pseudoconversacional, é preciso elaborar uma lógica própria na sua estrutura de programação para garantir que a resposta ao negócio seja a esperada. Para melhor entendimento, vamos analisar a estrutura básica de um programa que efetua uma consulta simples e direta dos dados, em alguma base de dados, e exibe numa tela. Neste caso, o programa solicita um código do cadastro e recebe o nome, por exemplo. Para que o programa possa exibir o nome, é preciso efetuar vários passos que vamos identificar como sendo as fases da execução. Os

Page 54: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

passos aqui apresentados não têm a ver com a quantidade de fases (ciclos da lógica). Os passos estão ligados à quantidade de vezes que o usuário solicita tarefas ao programa. As fases aqui mencionadas para este exemplo são:

como objetivo apresentar a tela ao usuário.

Primeira fase: a primeira fase tem como objetivo validar o código do cliente e obter os respectivos dados para apresentar ao usuário.

Passo 1 - Obter transação

No primeiro passo, a transação ainda não existe e o objetivo é criar a transação e executar, pela primeira vez, o programa, para que seja apresentada a tela ao usuário.

No primeiro passo, a transação ainda não existe e o usuário digita no terminal o nome da transação “TRN1”. Após a digitação, o módulo gerenciador de terminal captura a solicitação e começa a executar as atividades associadas. Após receber a mensagem do terminal e identificar a transação, as áreas da transação e da tarefa são criadas.

Após a criação das áreas da tarefa e da transação, o programa é localizado, carregado e executado. Nesta primeira execução, o programa tem como objetivo montar o mapa (tela), enviar para o respectivo terminal e aguardar que o usuário digite algum dado.

Page 55: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 5 5

Passo 2 - Obter dados do cliente - Cliente não existe

O segundo passo tem como objetivo receber o código do cliente e obter seus dados que representam a fase “UM” deste exemplo.

Após a execução, pela primeira vez, do programa, o objetivo do fluxo é executar a fase “UM” que tem como objetivo validar o código do cliente e obter os dados do dele. No caso deste segundo passo, é que o usuário digita um código inválido

ou não digita nada.

Neste caso, o programa executa a primeira fase e retorna a mensagem de “CÓDIGO INVÁLIDO”.

Passo 3 - Obter dados do cliente - Cliente existe

O terceiro passo tem o mesmo objetivo do passo dois. Realizar a fase “UM” do programa. Uma fase pode ser executada quantas vezes forem necessárias, até que seja atingido o objetivo.

Após a execução do segundo passo, que executou a fase “UM” do programa, o passo três é uma repetição do passo dois, porque a fase um foi executada, mas, não foi atingida com sucesso. Normalmente, uma fase é alcançada, quando a fase anterior foi realizada com sucesso, isto é, atingiu o objetivo do pedaço da lógica. Neste caso, o passo “TRÊS” é executado com o código do cliente igual a 21. Neste caso, o passo três é executado com sucesso e o objetivo da lógica é atingido. Os dados do cliente são apresentados para o usuário.

Page 56: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

Fluxo da transação pseudoconversacional

Neste item, é apresentado o fluxo da solicitação, no contexto da programação com a apresentação da sequência da lógica e seus comandos. Os passos e fases são as mesmas apresentadas no “fluxo pseudoconversacional”.

Passo 1 - Obter transação

No primeiro passo, a transação ainda não existe e o objetivo é criar a transação e executar, pela primeira vez, o programa, para que seja apresentada a tela ao usuário.

No primeiro passo, a transação ainda não existe e o usuário digita, no terminal, o nome da transação “TRN1”. Após a digitação, o módulo gerenciador de terminal captura a solicitação e termina aí a ligação do terminal com o ambiente. Neste momento, o CICS começa a executar as atividades associadas para o recebimento da mensagem do terminal, para identificar a transação e para criar a transação, a tarefa e as áreas correspondentes.

TRN1 CICSValidar TRN1

Page 57: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 5 7

Após a criação das áreas da tarefa e da transação, o programa é localizado,

carregado e executado. Para executar o programa, é passada para ele uma área de dados que pode ser transferida do CICS ou de outro programa, chamada de DFHCOMMAREA. Nesta primeira execução, o programa tem como objetivo montar o mapa (tela), enviar para o respectivo terminal e aguardar que o usuário digite algum dado. Para isso, é preciso efetuar os seguintes pontos da lógica: o primeiro executa procedimentos específicos da lógica; aqui é representado pelo recebimento da área de dados, vinda do terminal ou de uma área interna de dados. O segundo ponto da lógica é enviar o mapa, pela primeira vez, para o terminal, através do comando “SEND”. E o terceiro ponto, e último, é a execução do comando RETURN. Este comando sempre vai ser o último a ser executado, no final de cada fase. Tem como objetivo terminar o programa sem eliminar a transação.

Passo 2 - Obter dados do cliente - Cliente não existe

O segundo passo tem como objetivo receber o código do cliente e obter seus dados que representam a fase “um” deste exemplo.

CICSPrograma

DFHCOMMAREA

Se 1ª Fase

Processamento

SEND

DFHCOMMAREA

RETURN TRANSID

CODIGO: ____

NOME..: _______________

ESTADO: __ - __________

DIGITE O CODIGO

Transação

encontrada

CODIGO: 12__

NOME..: _______________

ESTADO: __ - __________

AGUARDAR...

Validar código CICS

Page 58: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

Após a execução, pela primeira vez, do programa, o objetivo do fluxo é executar a fase “UM” que tem como objetivo validar o código do cliente e obter os dados do dele. No caso deste segundo passo, é que o usuário digita um código inválido ou não digita nada e o ambiente capta a solicitação e aí começa a execução, e a conexão do terminal com o CICS é desfeita. Agora é por conta e risco do CICS.

Após a primeira execução do programa, o mesmo fica na memória para não ser necessária a sua leitura. Com isso, o CICS garante agilidade e espaço para o programa. Para executar o programa, e toda vez que o mesmo ocorre, é passada para ele uma área de dados que pode ser transferida do CICS ou de outro programa, chamada de DFHCOMMAREA. Nesta execução, o objetivo é executar a parte da lógica apelidada de

“FASE 1”. Para executar a fase “UM”, é preciso efetuar os seguintes pontos da lógica: o primeiro executa procedimentos específicos da lógica; aqui é representado pela consistência dos dados de entrada e, logo a seguir, obter os dados do cliente. O segundo ponto da lógica é enviar os respectivos dados para o terminal, através do comando “SEND”. E o terceiro ponto, e último, é a execução do comando RETURN. Este comando sempre vai ser o último a ser executado, no final de cada fase. Tem como objetivo terminar o programa sem eliminar a transação. Neste caso, o programa executa a primeira fase e retorna a mensagem “CÓDIGO INVÁLIDO”.

CODIGO: 12__

NOME..: _______________

ESTADO: __ - __________

CODIGO INVALIDO

CICSPrograma

DFHCOMMAREA

Se 1ª Fase

Processamento

SEND

DFHCOMMAREA

RETURN TRANSID

Código inválido

Page 59: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 5 9

Passo 3 - Obter dados do cliente - Cliente existe

O terceiro passo tem o mesmo objetivo do passo dois. Realizar a fase “um” do programa. Uma fase pode ser executada quantas vezes forem necessárias, até que seja atingido o objetivo.

Após a execução do segundo passo que executou a fase “UM” do programa, o passo três é uma repetição do passo dois, porque a fase um foi executada, mas não foi atingida com sucesso. Normalmente, uma fase é alcançada, quando a fase anterior foi realizada com sucesso, isto é, atingiu o objetivo da lógica. No caso deste terceiro passo, o usuário informa um código válido. Após o usuário pressionar uma tecla de função, o ambiente capta a solicitação e aí começa a execução e a conexão do terminal com o CICS é desfeita. Agora é por conta e risco do CICS.

Após a primeira execução do programa, o mesmo fica na memória para não ser necessária a sua leitura. Com isso o CICS garante agilidade e espaço para o programa. Para executar o programa, e toda vez que o mesmo ocorre, é passada para ele uma área de dados que pode ser transferida do CICS ou de outro

programa, chamada de DFHCOMMAREA. Nesta execução, o objetivo é executar a parte da lógica, apelidada de “FASE 1”, a mesma do passo dois. Para executar a fase “UM”, é preciso efetuar os seguintes pontos da lógica: o primeiro executa procedimentos específicos da lógica; aqui é representado pela consistência dos dados de entrada, e logo a seguir, obter os dados do cliente. O segundo ponto da

CODIGO: 21__

NOME..: VANESSA________

ESTADO: RJ - RIO_______

CONSULA COM SUCESSO

CICSPrograma

DFHCOMMAREA

Se 1ª Fase

Processamento

SEND

DFHCOMMAREA

RETURN TRANSID

Código encontrado

CODIGO: 21__

NOME..: _______________

ESTADO: __ - __________

AGUARDAR...

Validar código CICS

Page 60: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

lógica é enviar os respectivos dados para o terminal, através do comando “SEND”. E o terceiro ponto, e último, é a execução do comando RETURN. Este comando sempre vai ser o último a ser executado, no final de cada fase. Tem como objetivo terminar o programa sem eliminar a transação. Neste caso, o programa executa a primeira fase e retorna a mensagem de “CONSULTA COM SUCESSO”. Após a execução completa de toda a lógica, o programa deve providenciar para que o programa possa, na sua próxima execução, começar pela fase “UM” de novo. A execução da “FASE 1”, nos passos dois e três, fo i somente porque, no passo dois, a lógica não foi plenamente atendida, o que é diferente, neste ponto, onde a lógica é plenamente atendida e, por isso, o programa deve recomeçar a execução da sua lógica pela fase “UM”.

Área de comunicação (DFHCOMMAREA)

Para que o programa possa ser executado por fases, é preciso garantir que os dados que vão ser recebidos e devolvidos possam ficar íntegros e preservados, até que todo o processo tenha terminado. Para isso, é preciso utilizar a área de comunicação do CICS chamada de DFHCOMMAREA, e que fica ativa, até que o programa, que vai receber a área efetivamente, tenha recebido. É somente nesta área, que os dados são passados do CICS para o programa, de programa para programa e do programa para o CICS. No programa, ela é definida na LINKAGE SECTION. Vejamos algumas observações:

Os dados de DFHCOMMAREA devem ser movidos para a WORKING-STORAGE SECTION, se interessa transmitir todos, ou alguns, no próximo retorno ao CICS, já que o parâmetro COMMAREA do comando faz referência a um item de WORKING.

Na COMMAREA guardam-se não só dados numéricos e alfanuméricos, mas também indicadores que possam servir para canalizar a execução, quando o CICS reexecutar o programa.

A COMMAREA é específica da sessão utilizador-programa e o CICS cria e gerencia, automaticamente.

O parâmetro LENGTH é obrigatório. Em cada retorno ao CICS, pode variar-se o tamanho (longitude) dos dados

a guardar da forma que mais convenha. Quando um programa é executado, o CICS devolve o tamanho dos dados

no campo EIBCALEN do EIB. O valor deste campo é zero, na primeira vez que se executa o programa, ou

se no comando RETURN TRANSID não se especificar a COMMAREA. A DFHCOMMAREA pode subdividir-se em níveis da forma que mais

convenha. Os níveis de identificativo e de longitude podem ser quaisquer, exceto o

nível 88.

Page 61: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 6 1

Exemplo de DFHCOMMAREA

....|....1....|....2....|....3....|....4....|....5....|....6.

*------------------------------------------------------

* ÁREA DE COMUNICACAO DO PROGRAMA

*------------------------------------------------------

LINKAGE SECTION.

01 DFHCOMMAREA.

03 LK-AREA-RECEBIDA-PROGRAMA.

05 FASE PIC X(001).

05 CODIGO PIC 9(004).

O5 NOME PIC X(020).

Fluxo reentrante

O conceito do fluxo reentrante diz que o programa deve ser executado quantas vezes forem necessárias para concluir a lógica do negócio da respectiva funcionalidade. Isto quer dizer que o programa sempre vai ser executado pela primeira linha da PROCEDURE DIVISION, isto é, sempre é iniciado o seu processo de execução. A sua execução é considerada como se fosse a primeira vez, mas , para que o processamento seja encadeado, deve ser controlado, o que aqui identificamos como fases da execução. Quando o programa é executado, pela primeira, o sistema carrega a variável de controle, chamada de EIBTRNID, com o código da transação que está associada ao programa e, com isto, significa que o programa vai ser executado, pela primeira vez; esta é a primeira fase da execução.

Primeira fase

Nesta primeira fase, o programa tem como objetivo apresentar a tela onde solicita que o usuário informe o código a ser pesquisado para obter o nome.

Por que o programa exibe a tela e termina a execução?

Desta forma o CICS libera os recursos da máquina para que os mesmos não fiquem presos, até que o usuário decida efetuar a interação com o programa.

Page 62: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

Como é feito isso no CICS?

É utilizado o comando RETURN para passar o controle do programa para o CICS. Neste caso, o CICS fica aguardando que seja emitida uma tecla de função do terminal correspondente da transação. O comando RETURN solicita ao CICS que seja executada a transação, e a variável de controle do sistema EIBTRNID não possui mais o código da transação. Com isso, identifica-se que não é mais a primeira execução do programa, a primeira fase. O comando RETURN informa ao CICS o nome da transação que deve ser executada, mas que o mesmo já foi executado outras vezes e por isso já existe área de controle e de dados do programa.

Segunda fase

Na segunda fase, o programa tem como objetivo receber os dados do terminal e processar toda a lógica necessária para obter o nome e apresentá-lo no terminal. Para receber os dados da tela (no CICS chama-se mapa), utiliza-se o comando do CICS “RECEIVE” que recebe a área de dados do respectivo mapa do CICS. Depois de receber os dados do mapa, é executada a respectiva fase que, neste exemplo, é obter o nome e apresentá-lo na tela para, em seguida, terminar a execução do programa, passando o controle para o CICS, com a identificação de que vai retornar à fase primeira fase.

Retorno à primeira fase

Como neste exemplo, somente são necessárias duas fases para executar, integralmente, o objetivo da funcionalidade solicitada; o programa é executado novamente, mas iniciando na primeira fase. E, assim, sucessivamente, até que seja solicitado o término da execução.

Page 63: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 6 3

Atividade –

Questionário

(CICS)

1. Qual item descreve define a transação?

A) Módulo gerenciador de programas.

B) Pode ser acionada através de um terminal.

C) Executa somente um programa de aplicação.

D) Considerada como uma unidade de processamento.

2. Que atribuições possui o módulo FCP (File Control Program)?

A) Controlar todas as operações dos arquivos ISAM e VSAM.

B) Localizar programas, carregá-los na memória e executá-los.

C) Administrar todos os serviços que estão atrelados à data da máquina.

D) Nenhuma das opções.

3. CICS é um ambiente que está organizado com base em:

A) Módulos gerenciadores.

B) Tabelas de controle

C) Áreas de administração de dados e processos em execução.

D) Todas as opções.

4. Como um programa CICS deve ser encerrado?

A) Com o comando STOP RUN.

B) Com o comando RETURN GOBACK.

C) Com o comando GOBACK RETURN.

D) Nenhuma das opções.

5. Um programa que é executado sob o CICS:

A) Não precisa fechar, mas precisa abrir o arquivo.

B) Não precisa abrir nem fechar arquivo.

C) Precisa abrir e fechar arquivo.

D) Nenhuma das opções.

6. Qual o módulo gerenciador responsável pela criação da tarefa?

A) KCP - Task Control Program.

B) PCP - Program Control Program.

C) FCP - File Control Program.

D) SCP - Storage Control Program.

Page 64: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

7. Para que serve a FCT (File Control Table)?

A) Para controlar todas as operações dos arquivos ISAM e VSAM.

B) Para controlar os arquivos VSAM que podem ser usados pelo CICS.

C) Para localizar programas, carregá-los na memória e executá-los.

D) Todas as opções.

8. Que tabela o CICS utiliza para controlar arquivos?

A) TCP - Terminal Control Program.

B) BMS - Basic Mapping Support.

C) PPT - Program Processing Table.

D) Nenhuma das opções.

9. Para que serve a PPT (Program Processing Table)?

A) Para controlar todas as operações dos arquivos ISAM e VSAM.

B) Para controlar os arquivos VSAM que podem ser usados pelo CICS.

C) Para controlar os programas que podem ser executados no CICS.

D) Nenhuma das opções.

10. Como é identificado que houve solicitação vinda de um terminal?

A) Verificando se alguma das seguintes teclas: ENTER, CLEAR ou de função, foi pressionada.

B) Verificando se alguma tecla foi pressionada.

C) Verificando se algum comando foi digitado.

D) Nenhuma das opções.

11. Os dados que o terminal recebe estão onde?

A) TIOA.

B) EIB.

C) TCT.

D) Nenhuma das opções.

12. Em que área se encontram as informações sobre a execução do programa?

A) Na TCA - Task Control Area.

B) Na CSA - Commom System Area.

C) Na EIB - Exec Interface Block.

D) Nenhuma das opções.

Page 65: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

c a r l o s - c a m p o s . n e t P á g i n a 6 5

Capí tu lo 2

Conceito de

Mapa

Módulo: Básico Pré Requisito: COBOL Básico

Neste capítulo, será apresentado como o CICS trata os dados apresentados no terminal, através do gerenciador BMS, a organização dos dados em forma de mapa e a sua divisão em mapa físico e lógico, como áreas de interpretação entre o terminal e o programa. O mapa é construído para ser apresentado em um terminal 3270 da IBM, diferentemente da tela gráfica.

Conceituação de mapa CICS

Considerações sobre um mapa

Mapa é uma tela de dados formatada e tratada de forma específica pelo CICS. Mapa é um programa executado e interpretado pelo módulo gerenciador BMS (Basic Mapping Support). Um mapa é composto por:

Áreas fixas onde são colocados os títulos, e por Áreas definidas como variáveis onde os dados podem ser inseridos e

modificados.

As variáveis são usadas pelo usuário informar ou receber dados. Os mapas precisam ser exibidos e recebidos pelo CICS, através de comandos específicos, respectivamente:

SEND MAP RECEIVE MAP

Page 66: Carlos Campos - PerSe Campos CICS Desenvolvimento Mainframe Guia de Referência Terceira edição São Paulo 2015 Carlos Joaquim Esteves de Campos

Tipos de mapa

Um mapa é composto de duas estruturas chamadas:

Mapa físico, Mapa simbólico (lógico).

Independência de equipamento

O BMS atua como o comunicador (interface) entre os programas de aplicação e o TCP (Terminal Control Program) que é responsável pela comunicação física co m os terminais. Com isso o programa de aplicação torna-se independente do terminal (independência de equipamento) e do formato da exibição das informações (independência de formato). O BMS permite a codificação dos programas de aplicação, sem referência às características físicas dos terminais da rede. O BMS prepara a informação, a ser enviada ao terminal, inserindo caracteres de controle baseados no tipo de terminal a ser usado.

Independência de formato

O BMS também permite que o usuário codifique programas de aplicação, sem a preocupação com a posição física dos campos da informação no monitor, porque o BMS relaciona a posição real dos dados no monitor, por meio de tabelas chamadas mapas físicos e mapas simbólicos (lógicos).

Protocolo 3270

A grande maioria dos terminais IBM usa o protocolo 3270, conhecido como terminais 3270. São terminais a caractere e não gráficos. Além dos caracteres visíveis, existem caracteres adicionais para controle de cada campo exibido na tela. Estes caracteres de controle, chamados atributos, são invisíveis e ocupam também uma posição na tela. Os caracteres de atributo servem, basicamente, para controle do cursor, ou para conferir alguma característica especial ao campo (como os campos invisíveis de senha), e os campos sem interação com o cursor (como o titulo da tela) não precisam de atributo. Os campos definidos com atributos devem ter 2 atributos; um no início do campo e outro no fim, delimitando, assim, o comprimento útil do campo.

Por exemplo, se numa tela, definirmos um campo de 4 posições na linha 1, ocupando as colunas de 2 a 5, com o conteúdo BOLA.