Você está na página 1de 36

Carlos J E de Campos

CICS
Customer Information Control System
Comandos, Sintaxe, Regras e Procedimentos
Exemplos de programas e Pensamentos

Desenvolvimento COBOL Mainframe


Guia de Referência

Segunda edição
São Paulo
2013
 Carlos J E de campos, 2013
Capa: Alexandra Hardt Carlini
Diagramação: Carlos J E de Campos
Revisão: Neusa Pallione

É 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.

2013
Todos os direitos desta obra pertencem a
Carlos J E de Campos
www.carloscamposinfo.com
CICS

Agradecimentos

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

Agradeço à minha filhota, Vanessa Soares de Campos, por ser a minha fonte de esperança e
por mostrar compreensão e paciência em muitos momentos da nossa vida.

Agradeço, também, à Ana Maria Alves Justino, pelo apoio e incentivo para a criação desta
obra.

Agradeço aos meus pais Alice de Assunção Esteves Costa e José Manuel Lopes Moreira de
Campos, por terem-me dado a vida, educação, formação moral e muito apoio.

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.

Reflexão
“Para adquirir conhecimento é preciso estudar, para adquirir sabedoria é preciso observar.”
Autor: William Arthur Ward

www.carloscamposinfo.com Página 3
Não estamos aqui para pagar nem
sobreviver, mas sim, para vencer,
adquirindo saber.
&
Usemos o conhecimento com ética e moral.
CICS

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 transmiçã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 (mostrando) as telas e lendo os teclados, assim como todos os
arquivos usados por estes programas.
História
O CICS foi desenvolvido em 1968 e tornou-se programa produto da IBM em 1969. Já
completou 40 anos, consolidando sua posição no mercado, devido a sua constante evolução
e, hoje, é um produto importantíssimo para suportar a comunicação com a as aplicações da
WEB. Os sistemas de grandes empresas estão fornecendo seus sistemas, no ambiente WEB
por apresentar Telas (Interface) amigáveis (mais bonitas e com mais recursos), mas
mantendo seus dados e suas respectivas regras de negócio no ambiente mainframe. A sua
poderosa capacidade de administrar faz com que consiga controlar a execução de centenas
de aplicativos em tempo real e ao mesmo tempo.
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.

Reflexão
“E conhecereis a verdade e a verdade vos libertará.”
João 8:32

www.carloscamposinfo.com Página 5
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 conhecer e programar em COBOL com o CICS.
Os conceitos, o método estruturado e as lógicas são apresentados numa ordem, como forma
de melhorar a compreensão e são acompanhados por figuras para ilustrar e aumentar a
clareza das informações. Com a finalidade de reforçar e consolidar o aprendizado, cada
comando é apresentado com a sua sintaxe básica e com um exemplo da sua aplicação e uso
na programação COBOL.
Pré-Requisitos
Para desenvolver sistemas comerciais em COBOL CICS que utilizem arquivos VSAM e banco
de dados DB2, é necessário conhecer a sua linguagem, a sua sintaxe e as suas regras, mas,
para elaborar programas nesta linguagem ou em outra, é preciso ter conhecimento sobre
lógica de programação. É somente com a lógica de programação que se conseguem elaborar
programas que atendam a algum propósito de negócio, com eficiência. Para que o leitor
possa tirar maior proveito dos conhecimentos apresentados neste livro, é aconselhável que
conheça:
✔Lógica de programação estruturada
✔Linguagem COBOL
✔Banco de dados DB2
É aconselhada a leitura do livro de “LÓGICA” do mesmo autor que explica, passo a passo, a
construção de algoritmos e de lógicas de programação, depois, o livro de COBOL e, em
seguinda o livro DB2.
Esta obra está aderente ao programa de formação de Especialista em Desenvolvimento de
Programação COBOL Mainframe, CMCPDS - Certified Mainframe COBOL Program
Development Specialist, fornecido pelo instituto ICPDUG - INTERNATIONAL COBOL
PROGRAM DEVELOPER USERS GROUP.
Para mais informações, visite o site www.carloscamposinfo.com, ou entre em contato
através do e-mail do autor: carlosjec@hotmail.com.

Reflexão
“Muitos homens iniciaram uma nova era na sua vida a partir da leitura de um livro”.
Autor: Henry Thoreau
CICS

Formação de especialista COBOL


A formação de um
desenvolvedor especialista
em COBOL Mainframe
envolve diversas áreas do
conhecimento, necessárias
para a atuação que o
profissional precisa ter no
desempenho da sua
atuação. São seis módulos
específicos de
conhecimento que se
completam: Lógica,
COBOL, DB2, CICS, JCL e
TSO.
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 se desenvolve o racíocino e se aprende a construir
algoritmos e lógicas de programação; depois, se aprende a estrutura de linguagem de
programação com os seus comandos e constrói-se programa com base nas lógicas de
programação aprendidas. A seguir, aprende-se o banco de dados onde estarão armazenados
os dados e, finalmente, aprende-se a estrutura do ambiente online do Mainframe, a forma
de programação pseudoconversacional e, o JCL, linguagem de administra a execução de
programas batch.
No módulo de LÓGICA, são abordados como se constrói algoritmos e lógicas de
programação.
No módulo de COBOL, são vistos toda a teoria e estrutura da linguagem de programação e
todos os comandos principais e básicos para desenvolver a grande maioria dos programas.
No módulo de DB2, são abordados a teoria e estrutura básica de um banco de dados e,
todos os comandos principais e básicos para desenvolver programas que utilizam o banco de
dados DB2 em programas COBOL.
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 a grande maioria dos programas online.
No módulo de JCL, são vistos toda a teoria e estrutura da linguagem de programação e todos
os comandos principais e básicos para desenvolver a grande maioria das soluções necessárias
para a execução dos programas batch.

www.carloscamposinfo.com Página 7
Metodologia dos cursos
O assunto novo é
apresentado ao aluno, Apresentar
através da apresentação de Conceito
SLIDES animados e coloridos
e tiradas as dúvidas sobre o
tópico. Para praticar o Rever Tirar
conhecimento novo, o aluno conceitos dúvidas
é solicitado a realizar o
exercício, no caso: criar
algoritmo ou programa. Consolidar Praticar
Após o tempo para criar a Exercícios exercícios
primeira solução, é
apresentado; via SLIDES
animados e coloridos, a Apresentar
solução do exercício, tirando Solução
todas as dúvidas possíveis.
Para consolidar e poder tirar novas dúvidas do tópico do conhecimento, são solicitados, em
média de dois a quatro exercícios na aula. A solução dos exercícios propostos é apresentada,
via SLIDES animados e coloridos. E para tentar consagrar o conhecimento, é solicitado, em
média de três a seis exercícios extras para o aluno fazer fora as horas das aulas. E, para tentar
tirar possíveis dúvidas remanescentes, são reservados os primeiros minutos de cada aula,
para tirar dúvidas.

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, a energia necessária
gasta com o esforço para criar a lógica é gasta durante o treinamento. Depois de formado, o
individuo passa a 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
Os benefícios do método aplicado podem se resumir no seguinte:
 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
 Facilidade de criar a solução lógica
CICS

Certificação para
desenvolvedor Mainframe
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
 CICS - Sistema Gerenciador de ambiente ONLINE
 JCL - Linguagem de controle Batch

Para mais informações, acesse o site www.icpdug.org.br ou utilize o e-mail


contato@icpdug.org.br.

Reflexão
“Em algum lugar, algo incrível está esperando para ser descoberto.”
Autor: Carl Seagan

www.carloscamposinfo.com Página 9
Página deixada em branco
CICS

Sumário

Agradecimentos ...................................................................................3
Introdução ..........................................................................................5
Formação de especialista COBOL ...............................................................7
Metodologia dos cursos .......................................................................8
Objetivo do método ...........................................................................8
Benefícios do método .........................................................................8
Certificação para desenvolvedor Mainframe .................................................9
Objetivo da certificação ......................................................................9
Como é a certificação .........................................................................9
Sumário ........................................................................................... 11
Notação utilizada ................................................................................ 27
Como codificar subparâmetros ............................................................... 29
coluna .......................................................................................... 29
linha ............................................................................................ 29
literal .......................................................................................... 29
nomeáreadatahora ........................................................................... 29
nomeáreadedados ........................................................................... 29
nomeáreadomapaO .......................................................................... 29
nomeáreadomapaI ........................................................................... 29
nomeáreadoregistro ......................................................................... 30
nomearquivo .................................................................................. 30
nomecampo ................................................................................... 30
nomechavearquivo ........................................................................... 30
nomecondiçãoerro ........................................................................... 30
nomedeflinhats ............................................................................... 30
nomefilats ..................................................................................... 30

www.carloscamposinfo.com Página 11
nomemapset .................................................................................. 30
nomemapa .................................................................................... 31
nomeparagrafo ............................................................................... 31
nomeprograma ............................................................................... 31
nometransação ............................................................................... 31
nrodoitem ..................................................................................... 31
posição ......................................................................................... 31
tamanhoárea .................................................................................. 31
Introdução ao CICS .............................................................................. 33
O que é CICS .................................................................................. 34
Método de acesso VTAM .................................................................... 35
Controladores ............................................................................. 35
O que é processamento ON-LINE .......................................................... 36
Múltiplas execuções de um programa .................................................... 36
Como o programa é executado ............................................................ 37
Como o programa é terminado ............................................................ 37
Regras para programa COBOL.............................................................. 38
Funções do programa no ambiente Batch ............................................... 38
Funções do programa no ambiente On-Line ............................................. 39
Compilação .................................................................................... 39
Como entrar no ambiente CICS ............................................................ 39
Estrutura do CICS ............................................................................ 41
Arquitetura do CICS ...................................................................... 41
Uma visão da estrutura do CICS ........................................................ 42
Memória do CICS .......................................................................... 42
Núcleo gerenciador .......................................................................... 43
FCP - File Control Program .............................................................. 43
KCP - Task Control Program ............................................................ 43
PCP - Program Control Program ........................................................ 44
SCP - Storage Control Program ......................................................... 44
TCP - Terminal Control Program ....................................................... 44
TSP - Temporary Storage Program ..................................................... 45
CICS

TDP - Transient Data Program .......................................................... 45


DCP - Dump Control Program ........................................................... 45
ICP - Interval Control Program ......................................................... 46
BMS - Basic Mapping Support ........................................................... 46
ISC - Intercommunication Control Program .......................................... 46
Tabelas de controle ......................................................................... 47
FCT - File Control Table ................................................................. 47
PCT - Program Control Table ........................................................... 47
PPT - Program Processing Table ....................................................... 47
TCT - Terminal Control Table .......................................................... 47
KCT - Task Control Table ................................................................ 47
DSA - Dynamic Storage Area ............................................................... 49
Blocos de controle ........................................................................ 49
Áreas de dados Interna .................................................................. 52
Área de dados temporária .............................................................. 52
Memória Temporária ........................................................................ 53
Formato da Memória Temporária ...................................................... 53
Controle de terminal ........................................................................ 54
Receber dados do terminal ............................................................. 54
Enviar dados para o terminal ........................................................... 54
Tecla de função como comando, DFHAID ............................................ 54
Controle de programa ....................................................................... 55
Chamar um programa e retornar ...................................................... 55
Chamar um programa e não retornar ................................................. 55
Controle de arquivo ......................................................................... 56
Acesso ao arquivo VSAM ................................................................. 57
Transação ..................................................................................... 59
Tarefa (TASK) ............................................................................. 60
Visão do fluxo da transação ............................................................ 61
Passos do fluxo da transação ........................................................... 63
Modelo concorrente de uma mesma transação ..................................... 64
Tipos de transação ........................................................................... 65

www.carloscamposinfo.com Página 13
Transação não conversacional .......................................................... 65
Transação conversacional ............................................................... 65
Transação pseudoconversacional ...................................................... 66
Fluxo da transação pseudoconversacional ............................................... 71
Área de comunicação (DFHCOMMAREA) .............................................. 74
Fluxo reentrante .......................................................................... 75
Questionário .................................................................................. 77
Mapa ............................................................................................... 79
Considerações sobre um mapa ............................................................ 79
Independência de equipamento ........................................................... 80
Independência de formato ................................................................. 80
Protocolo 3270 ............................................................................... 80
Como construir um mapa ................................................................... 81
Construção de um mapa .................................................................... 81
Composição de um programa BMS ........................................................ 81
MAPSET ........................................................................................ 82
Compilação de um mapa ................................................................... 83
Estrutura da linha de um mapa ............................................................ 83
Composição do atributo de um campo ................................................... 83
Tipo de proteção do campo............................................................. 83
Tipo de conteúdo do campo ............................................................ 85
Brilho do campo. ......................................................................... 85
Tag de modificação ...................................................................... 85
Compilação de um mapa ................................................................... 86
Estrutura da linha de um mapa ............................................................ 86
Definindo mapa para ser interpretado pelo BMS ....................................... 87
Mapa físico ................................................................................. 87
Definindo um grupo e mapas – MAPSET ............................................... 87
Macro DFHMSD ............................................................................ 87
Definindo uma tela ....................................................................... 91
Macro DFHMDI ............................................................................. 91
Definindo áreas dentro de um mapa .................................................. 93
CICS

Macro DFHMDF ............................................................................ 93


Indicador de campo MDT ................................................................ 96
Como o COBOL identifica um campo do BMS............................................ 99
Como é a definição de um campo ..................................................... 99
Posição do cursor na tela .................................................................. 101
Identificar a posição do cursor ........................................................ 101
Direcionar a posição do cursor ........................................................ 101
Bloco DFHBMSCA ............................................................................ 102
Exemplo de definição do mapa MAPA01A............................................... 103
Definição BMS do mapa MAPA01A ..................................................... 103
Definição da estrutura do mapa MAPA01A para o COBOL ........................ 104
Questionário ................................................................................. 105
Comandos ........................................................................................ 107
Comandos do CICS .......................................................................... 107
Comand Level ................................................................................ 108
Restrições no COBOL ....................................................................... 108
Grupos dos comandos ...................................................................... 109
Comandos de tratamento de terminal ............................................... 109
Comandos de tratamento de mapa (BMS) ........................................... 109
Tratamento de arquivo (FILE CONTROL) ............................................ 109
Tratamento de cursor (BROWSE)...................................................... 110
Tratamento de programas (PROGRAM CONTROL) .................................. 110
Tratamento de armazenamento temporário (TS) .................................. 110
Tratamento de erro (ABEND CODE)................................................... 110
Tratamentos diversos ................................................................... 111
Estrutura de comando .................................................................. 111
Terminar programa - Comando RETURN ................................................ 111
Sintaxe..................................................................................... 112
Parâmetro TRANSID ..................................................................... 112
Parâmetro COMMAREA .................................................................. 112
Parâmetro LENGTH ...................................................................... 112
Condição de exceção ................................................................... 112

www.carloscamposinfo.com Página 15
Comandos de tratamento de terminal .................................................. 113
Comando SEND TEXT ....................................................................... 114
Sintaxe..................................................................................... 114
Parâmetro FROM ......................................................................... 114
Parâmetro LENGTH ...................................................................... 114
Parâmetro CURSOR ...................................................................... 114
Parâmetro FREEKB ....................................................................... 114
Parâmetro ERASE ........................................................................ 114
Condição de exceção ................................................................... 114
Exemplo do comando SEND TEXT ..................................................... 115
Comando RECEIVE........................................................................... 116
Sintaxe..................................................................................... 116
Parâmetro INTO .......................................................................... 116
Parâmetro SET ........................................................................... 116
Parâmetro LENGTH ...................................................................... 116
Condição de exceção ................................................................... 117
Programa exemplo do comando RECEIVE ............................................ 118
Questionário ................................................................................. 119
Comandos de tratamento de mapa ...................................................... 121
Comando SEND MAP ........................................................................ 122
Sintaxe..................................................................................... 122
Parâmetro MAP ........................................................................... 122
Parâmetro MAPSET ...................................................................... 122
Parâmetro FROM ......................................................................... 122
Parâmetro ERASE ........................................................................ 122
Parâmetro CURSOR ...................................................................... 123
Parâmetro DATAONLY ................................................................... 123
Parâmetro MAPONLY .................................................................... 123
Parâmetro FREEKB ....................................................................... 123
Condição de exceção ................................................................... 123
Programa exemplo do comando SEND MAP ......................................... 124
Comando RECEIVE MAP ..................................................................... 125
CICS

Sintaxe..................................................................................... 125
Parâmetro MAP ........................................................................... 125
Parâmetro MAPSET ...................................................................... 125
Parâmetro INTO .......................................................................... 125
Parâmetro SET ........................................................................... 125
Parâmetro LENGTH ...................................................................... 126
Condição de exceção ................................................................... 126
Programa exemplo do comando RECEIVE MAP ...................................... 127
Questionário ................................................................................. 129
Comandos de tratamento de arquivo .................................................... 131
Massa de teste para os comandos de tratamento de arquivo ....................... 132
Definição do arquivo AGENDA ............................................................ 132
JCL para criar o arquivo AGENDA ........................................................ 132
Comando WRITE ............................................................................. 133
Sintaxe..................................................................................... 133
Parâmetro FROM ......................................................................... 133
Parâmetro RIDFLD ....................................................................... 133
Parâmetro LENGTH ...................................................................... 133
Parâmetro KEYLENGTH ................................................................. 133
Condição de exceção ................................................................... 133
Programa exemplo do comando WRITE .............................................. 134
Comando READ .............................................................................. 135
Sintaxe..................................................................................... 135
Parâmetro INTO .......................................................................... 135
Parâmetro RIDFLD ....................................................................... 135
Parâmetro EQUAL ........................................................................ 135
Parâmetro GTEQ ......................................................................... 135
Parâmetro LENGTH ...................................................................... 135
Parâmetro UPDATE ...................................................................... 135
Condição de exceção ................................................................... 136
Programa exemplo do comando READ ............................................... 136
Comando REWRITE .......................................................................... 137

www.carloscamposinfo.com Página 17
Sintaxe..................................................................................... 137
Parâmetro FROM ......................................................................... 137
Parâmetro LENGTH ...................................................................... 137
Condição de Exceção.................................................................... 137
Programa exemplo do comando REWRITE ........................................... 138
Comando DELETE............................................................................ 139
Sintaxe..................................................................................... 139
Parâmetro RIDFLD ....................................................................... 139
Parâmetro KEYLENGTH ................................................................. 139
Parâmetro GENERIC ..................................................................... 139
Parâmetro NUMREC ..................................................................... 139
Condição de exceção ................................................................... 139
Programa exemplo do comando DELETE............................................. 140
Comando UNLOCK ........................................................................... 141
Sintaxe..................................................................................... 141
Condição de exceção ................................................................... 141
Questionário ................................................................................. 143
Comandos de BROWSE (cursor) .............................................................. 145
Introdução .................................................................................... 145
Pesquisa por BROWSE ...................................................................... 146
Considerações para arquivos VSAM ...................................................... 146
Procedimentos de uma pesquisa por BROWSE ......................................... 146
Estabelecimento de posição ........................................................... 147
Pesquisa de registros .................................................................... 147
Término do BROWSE .................................................................... 147
Atualização de registros no BROWSE ................................................. 147
Massa de teste para os comandos do BROWSE...................................... 148
Comando STARTBR .......................................................................... 149
Sintaxe..................................................................................... 149
Parâmetro RIDFLD ....................................................................... 149
Parâmetro KEYLENGTH ................................................................. 149
Parâmetro GENERIC ..................................................................... 149
CICS

Parâmetro EQUAL ........................................................................ 149


Parâmetro GTEQ ......................................................................... 150
Condição de exceção ................................................................... 150
Exemplificação do comando STARTBR ............................................... 150
Comando READNEXT ........................................................................ 151
Sintaxe..................................................................................... 151
Parâmetro INTO .......................................................................... 151
Parâmetro RIDFLD ....................................................................... 151
Parâmetro KEYLENGTH ................................................................. 151
Parâmetro UPDATE ...................................................................... 151
Condição de exceção ................................................................... 152
Exemplificação do comando READNEXT ............................................. 152
Comando READPREV ........................................................................ 153
Sintaxe..................................................................................... 153
Parâmetro INTO .......................................................................... 153
Parâmetro RIDFLD ....................................................................... 153
Parâmetro KEYLENGTH ................................................................. 153
Parâmetro UPDATE ...................................................................... 153
Condição de exceção ................................................................... 153
Exemplificação do comando READPREV ............................................. 154
Comando ENDBR............................................................................. 155
Sintaxe..................................................................................... 155
Condição de Exceção.................................................................... 155
Exemplificação do comando ENDBR .................................................. 155
Comando RESETBR .......................................................................... 157
Sintaxe..................................................................................... 157
Parâmetro INTO .......................................................................... 157
Parâmetro RIDFLD ....................................................................... 157
Parâmetro KEYLENGTH ................................................................. 157
Parâmetro GENERIC ..................................................................... 158
Parâmetro UPDATE ...................................................................... 158
Condição de exceção ................................................................... 158

www.carloscamposinfo.com Página 19
Exemplificação do comando RESETBR ............................................... 158
Exemplo de como construir um BROWSE ............................................... 159
Cenário - Listar contatos ............................................................... 159
Macrofluxo e DHF do programa ....................................................... 159
Fluxograma ............................................................................... 160
Fluxograma - outros níveis ............................................................. 160
Exemplo de BROWSE - TCICSD1A (Conversacional) ................................ 163
Questionário ................................................................................. 167
Comandos de tratamento de armazenamento Temporário (TS) ....................... 169
Como montar o nome da TS ............................................................... 169
Comando WRITEQ TS ....................................................................... 171
Sintaxe..................................................................................... 171
Parâmetro QUEUE ....................................................................... 171
Parâmetro FROM ......................................................................... 171
Parâmetro LENGTH ...................................................................... 171
Parâmetro ITEM .......................................................................... 171
Parâmetro REWRITE ..................................................................... 171
Condição de exceção ................................................................... 172
Exemplo do comando WRITEQ TS ..................................................... 172
Comando READQ TS ......................................................................... 173
Sintaxe..................................................................................... 173
Parâmetro QUEUE ....................................................................... 173
Parâmetro INTO .......................................................................... 173
Parâmetro ITEM .......................................................................... 173
Parâmetro NEXT ......................................................................... 173
Condição de exceção ................................................................... 173
Exemplo do comando READ TS ........................................................ 174
Comando DELETEQ TS ...................................................................... 175
Sintaxe..................................................................................... 175
Parâmetro QUEUE ....................................................................... 175
Condição de Exceção.................................................................... 175
Exemplificação do comando DELETEQ TS ........................................... 175
CICS

Questionário ................................................................................. 177


Comandos de chamada de programa ....................................................... 179
Comando LINK ............................................................................... 181
Sintaxe..................................................................................... 181
Parâmetro PROGRAM .................................................................... 181
Parâmetro COMMAREA .................................................................. 181
Parâmetro LENGTH ...................................................................... 181
Condição de exceção ................................................................... 181
Exemplo do comando LINK - Chamador .............................................. 182
Exemplo do comando LINK - Chamado ............................................... 183
Comando XCTL .............................................................................. 185
Sintaxe..................................................................................... 185
Parâmetro PROGRAM .................................................................... 185
Parâmetro COMMAREA .................................................................. 185
Parâmetro LENGTH ...................................................................... 185
Condição de exceção ................................................................... 185
Exemplo do comando LINK - Chamador .............................................. 186
Exemplo do comando XCTL - Chamado e chamador ............................... 187
Exemplo do comando XCTL - Chamado .............................................. 188
Comandos de tratamento de erro ........................................................... 189
Introdução .................................................................................... 189
Comando HANDLE ABEND .................................................................. 191
Sintaxe..................................................................................... 191
Parâmetro PROGRAM .................................................................... 191
Parâmetro LABEL ........................................................................ 191
Parâmetro CANCEL ...................................................................... 192
Parâmetro RESET ........................................................................ 192
Comando para término anormal da Task (ABEND) ................................. 192
Condição de exceção ................................................................... 192
Comando IGNORE CONDITION ............................................................. 193
Sintaxe..................................................................................... 193
Exemplo de utilização do IGNORE CONDITION...................................... 193

www.carloscamposinfo.com Página 21
Códigos de erro de transação ............................................................. 194
Comando HANDLE CONDITION ............................................................ 195
Sintaxe..................................................................................... 195
Exemplo de utilização do HANDLE CONDITION ..................................... 195
Questionário ................................................................................. 197
Comandos de tratamento de diversos ...................................................... 199
Como formatar data e hora ............................................................... 199
Comando BIF DEEDIT ....................................................................... 201
Sintaxe..................................................................................... 201
Parâmetro FIELD ......................................................................... 201
Parâmetro LENGTH ...................................................................... 201
Exemplificação do comando BIF DEEDIT ............................................. 202
Exemplo do comando BIF DEEDIT ..................................................... 202
Comando ASSIGN ............................................................................ 203
Sintaxe..................................................................................... 203
Parâmetro ABCODE ...................................................................... 203
Parâmetro PROGRAM .................................................................... 203
Parâmetro ABPROGRAM ................................................................ 204
Parâmetro USERID ....................................................................... 205
Parâmetro USERNAME ................................................................... 205
Parâmetro APPLID ....................................................................... 205
Comando FORMATTIME ..................................................................... 207
Parâmetro YYMMDD ..................................................................... 207
Sintaxe..................................................................................... 207
Parâmetro DATESEP ..................................................................... 207
Parâmetro TIMESEP ...................................................................... 207
Parâmetro ABSTIME ..................................................................... 208
Parâmetro DATE ......................................................................... 208
Parâmetro DATEFORM .................................................................. 208
Parâmetro FULLDATE ................................................................... 208
Parâmetro DDMMYY ..................................................................... 208
Parâmetro DDMMYYYY .................................................................. 208
CICS

Parâmetro YYYYMMDD .................................................................. 208


Parâmetro YYYYDDMM .................................................................. 208
Parâmetro YYDDMM ..................................................................... 209
Parâmetro MMDDYY ..................................................................... 209
Parâmetro YYDDD........................................................................ 209
Exemplificação do comando FORMATTIME – Obter data .......................... 210
Exemplificação do comando FORMATTIME – Obter hora .......................... 210
Exemplo de ASKTIME e FORMATTIME ................................................. 211
Comando HANDLE AID ...................................................................... 212
Sintaxe..................................................................................... 212
ANYKEY .................................................................................... 212
Exemplo de utilização do HANDLE AID ............................................... 212
Comando SYNCPOINT ROLLBACK ......................................................... 213
Sintaxe..................................................................................... 213
Comando ASKTIME .......................................................................... 214
Sintaxe..................................................................................... 214
Parâmetro ABSTIME ..................................................................... 214
Exemplificação do comando ASKTIME ................................................ 214
Questionário ................................................................................. 215
Programação pseudoconversacional ........................................................ 217
Pontos de conversão da lógica pseudoconversacional ................................ 218
Primeiro ponto – Divisão da lógica em partes ...................................... 218
Segundo ponto – Identificação da fase de execução .............................. 218
Terceiro ponto – Início e término de execução da fase ........................... 218
Quarto ponto – Início da execução do programa ................................... 218
Quinto ponto – Primeira execução .................................................... 218
Sexto ponto – Saída da execução ..................................................... 219
Exemplo de programa pseudoconversacional .......................................... 219
Cenário – Listar contatos ............................................................... 220
DHF do programa ........................................................................ 220
Fluxograma ............................................................................... 221
Fluxograma - outros níveis ............................................................. 221

www.carloscamposinfo.com Página 23
Pseudocódigo ............................................................................. 222
Exemplo de programa de BROWSE - PCICSE1A ..................................... 224
Exemplo de programa de paginação ................................................. 229
Constuindo sistemas ON-LINE ................................................................ 235
Massa de testes para os sistemas ON-LINE.............................................. 236
MER - Modelo de Entidade Relacional para testes ................................. 236
Definição dos depósitos ................................................................ 236
Massa de dados para os sistemas ON-LINE .......................................... 236
Criar arquivos e tabelas para os sistemas ON-LINE ................................ 238
Incluir massa de dados para os sistemas ON-LINE ................................. 240
Sistema - Menu de sistemas ............................................................... 243
Cenário: Menu de sistemas............................................................. 243
Funcionalidade: Menu de sistemas ................................................... 243
Sistema - Cadastro de alunos ............................................................. 253
Cenário: Cadastro de alunos ........................................................... 253
Funcionalidade: Menu do cadastro de aluno ........................................ 253
Funcionalidade: Incluir aluno.......................................................... 262
Funcionalidade: Alterar aluno ......................................................... 280
Funcionalidade: Excluir aluno ......................................................... 289
Funcionalidade: Listar alunos ......................................................... 296
Funcionalidade: Listar alunos com média ........................................... 304
Funcionalidade: Listar cursos do aluno .............................................. 317
Sistema - Cadastro de notas .............................................................. 325
Cenário: Cadastro de notas ............................................................ 325
Funcionalidade: Menu do cadastro de notas ........................................ 325
Funcionalidade: Incluir nota ........................................................... 326
Funcionalidade: Consultar nota ....................................................... 326
Funcionalidade: Alterar nota .......................................................... 327
Funcionalidade: Excluir nota .......................................................... 327
Funcionalidade: Listar notas dos cursos do aluno ................................. 328
Sistema - Cadastro de cursos ............................................................. 329
Cenário: Cadastro de cursos ........................................................... 329
CICS

Funcionalidade: Menu do cadastro de cursos ....................................... 329


Funcionalidade: Incluir curso .......................................................... 330
Funcionalidade: Consultar curso ...................................................... 330
Funcionalidade: Alterar curso ......................................................... 331
Funcionalidade: Excluir curso ......................................................... 331
Funcionalidade: Listar cursos.......................................................... 332
Sistema - Cadastro de estados ............................................................ 333
Cenário: Cadastro de estados ......................................................... 333
Funcionalidade: Menu do cadastro de estados ..................................... 333
Funcionalidade: Incluir estado ........................................................ 334
Funcionalidade: Consultar estado .................................................... 334
Funcionalidade: Alterar estado ....................................................... 335
Funcionalidade: Excluir estado ....................................................... 335
Funcionalidade: Listar estados ........................................................ 336
Comandos ON-LINE ............................................................................. 337
CEMT I PRO ................................................................................... 337
CEMT SET PROG ............................................................................. 337
CEMT SET TASK .............................................................................. 338
CEMT SET TRANS ............................................................................ 338
CEMT SET TERM ............................................................................. 339
CSSN ........................................................................................... 339
CSMT .......................................................................................... 339
Parâmetro NEW .......................................................................... 339
CEMT SET FILE ............................................................................... 340
CECI ........................................................................................... 341
CEDF ........................................................................................... 342
CMAC .......................................................................................... 342
Anexos ............................................................................................ 343
Boas práticas ................................................................................. 343
Bloco DFHBMSCA ............................................................................ 345
Estrutura do EIB ............................................................................. 347
Bloco DFHAID ................................................................................ 348

www.carloscamposinfo.com Página 25
Tabela de códigos EIBRESP ................................................................ 349
Tabela de códigos EIBFN ................................................................... 350
Tabela de condições de exceção ......................................................... 353
Tabela de condição de exceção por comando ......................................... 355
Definições e termos ........................................................................ 360
Abreviaturas ................................................................................. 365
Respostas dos questionários............................................................... 367
Bibliografia ...................................................................................... 369
Outras obras do autor ......................................................................... 371
CICS

Notação utilizada

[ ] Opcional
{ } Optar por um, sendo que as opções estão separadas pelo símbolo “|” que significa
“ou”
< > Substituir por um nome
| Operador lógico "OU". Significa que pode ser substituído por um dos parâmetros.
... Existem procedimentos não mencionados

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

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

Reflexão
“Só é lutador quem sabe lutar consigo mesmo.”
Autor: Carlos Drummond de Andrade

www.carloscamposinfo.com Página 27
Página deixada em branco
CICS

Como codificar subparâmetros


Muitos comandos e parâmetros necessitam de valores para o seu funcionamento, chamados
de subparâmetros. Por exemplo, o parâmetro DATASET possui a seguinte sintaxe: WRITE
DATASET (nomearquivo) onde nomearquivo representa o nome do arquivo a ser utilizado
pelo comando.

coluna
Coluna especifica um número inteiro, no intervalo de 0 a 79, especificando o número de
colunas que uma linha pode ter.

linha
Linha especifica um número inteiro, no intervalo de 0 a 24, especificando o número de
linhas, correspondente à altura de um mapa. No lugar do número de linhas, pode ser
inserido o parâmetro NEXT.

literal
Literal é uma constante, um valor fixo, inteiro, passado como parâmetro para o comando. As
constantes podem ser classificadas em: numérica, alfanumérica e lógica. A constante
alfanumérica também é conhecida como STRING e deve ser definida entre aspas.

nomeáreadatahora
A variável que recebe a data e hora deve ser definida como PIC S9(15) COMP-3.

nomeáreadedados
O nome da área de dados, identificado por uma variável, definida na WORKING-STORAGE.

nomeáreadomapaO
O nome da área do mapa, definido na WORKING-STORAGE. Normalmente, é o nome do
mapa com caractere “O”, no final do nome.

nomeáreadomapaI
O nome da área do mapa definido na WORKING-STORAGE. Normalmente, é o nome do mapa
com caractere “I”, no final do nome.

www.carloscamposinfo.com Página 29
nomeáreadoregistro
O nome da área do registro, definido na WORKING-STORAGE. Pode ser o nome de uma
variável alfanumérica ou um item de grupo.

nomearquivo
O nome do arquivo pode ser especificado diretamente pelo seu nome ou indiretamente,
através da utilização de uma variável. O nome do arquivo deve ter, no máximo, oito (8)
caracteres de tamanho. A variável, quando utilizada, deve ser definida como alfanumérica
“PIC X(8)”.

nomecampo
Nome do campo do mapa e deve possuir, no máximo, sete (7) caracteres. Opcional; só é
necessário se for referenciado no programa de aplicação.

nomechavearquivo
O nome do item elementar ou item de grupo que é a chave do arquivo. Pode ser especificado
diretamente pelo seu nome ou indiretamente, através da utilização de uma variável. Pode
ser o nome de uma variável alfanumérica ou numérica ou de um item de grupo.

nomecondiçãoerro
A condição de erro (o mesmo que condição de exceção) é uma palavra reservada do CICS,
definida na EIBRESP. Por exemplo: NORMAL, ERROR, NOTFND, DUPREC, DUPKEY, INVREQ,
IOERR, NOSPACE, NOTOPEN, ENDFILE, ILLOGIC, LENGERR, PGMIDERR, TRANSIDERR.

nomedeflinhats
Representa o nome da definição da estrutura da linha, utilizado na TS. Pode ser o nome de
uma variável alfanumérica ou um item de grupo. As regras para a sua criação são as mesmas
utilizadas para a definição do nome de um item de grupo, utilizado para definir um registro.

nomefilats
Representa o nome da fila, utilizado numa TS (TEMPORARY STORAGE). O nome da fila (área
da TS, como se fosse um arquivo) deve ter, no máximo, oito (8) caracteres de tamanho. A
variável, quando utilizada, deve ser definida como alfanumérica “PIC X(8)”.

nomemapset
Representa o nome do conjunto dos mapas e deve possuir, no máximo, sete (7) caracteres.
Deve ser diferente do nome dos mapas que pertencem a este grupo e deve estar cadastrado
na tabela PPT. Um caractere é acrescentado ao nome como sufixo (tipo do terminal ou
parâmetro SUFFIX).
CICS

nomemapa
Representa o nome do mapa e deve possuir, no máximo, sete (7) caracteres. Deve ser
diferente do nome dos mapas que pertencem a este grupo e do nome MAPSET. Deve ser
diferente do nome dos mapas que pertencem a este grupo e deve estar cadastrado na tabela
PPT. Um caractere é acrescentado ao nome como sufixo (tipo do terminal ou parâmetro
SUFFIX).

nomeparagrafo
Especifica o nome do parágrafo, dentro do programa, com a instrução ou instruções.

nomeprograma
O nome do programa deve possuir até oito caracteres. Pode ser identificado por um literal
ou por uma variável definida na WORKING-STORAGE. Por exemplo:
77 WS-NM-PROGRAMA PIC X(8) VALUE ‘NMPGM01A’.

nometransação
O nome da transação deve possuir quatro caracteres. Pode ser identificado por um literal ou
por uma variável, definida na WORKING-STORAGE. Por exemplo:
77 WS-NM-TRANSACAO PIC X(4) VALUE ‘TRN1’.

nrodoitem
O número do item pode ser um literal numérico ou ser representado por uma variável,
definida como “PIC S9(04) COMP VALUE +nnnn”.

posição
A posição do cursor, na tela 3270, pode ser identificada por um literal, de quatro dígitos, ou
por uma variável, definida na WORKING-STORAGE com o formato PIC S9(004) COMP.
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 que são o caractere e não
gráfico.

tamanhoárea
O tamanho da área pode ser identificado por um literal ou por uma variável, definida na
WORKING-STORAGE.

www.carloscamposinfo.com Página 31
Página deixada em branco

Reflexão
“Só é livre o homem que sabe dar ordens a si mesmo.”
Autor: Pitágoras
CICS

Introdução ao CICS
1
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 (mostrando) 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.

Reflexão
“Dar exemplos não é a melhor maneira de influenciar os outros. É a única.”
Autor: Desconhecido

www.carloscamposinfo.com Página 33
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.
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.
CICS

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 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 aos 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 PC's com software SNA
instalados neles. Os Pc's podem ser os de plataforma OS/2 ou, ainda, Microsoft.

www.carloscamposinfo.com Página 35
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.

Múltiplas execuções de um programa

Programa

WORKING WORKING WORKING WORKING

  
Terminal 1 Terminal 2 Terminal 3 Terminal 4

Você também pode gostar