Você está na página 1de 71

MAINFRAME

MAINFRAME
MAINFRAME
MAINFRAME
MAINFRAME
MAINFRAME
MAINFRAME
MAINFRAME
MAINFRAME Ulisses & Moraes – TI

MAINFRAME
MAINFRAME CICS
MAINFRAME COMMAND LEVEL

MAINFRAME
MAINFRAME
MAINFRAME
MAINFRAME
MAINFRAME
MAINFRAME
MAINFRAME
MAINFRAME
MAINFRAME
C I C S – COMMAND LEVEL Turma2011

INDICE

1. OBJETIVO ................................................................................................................... 5
2. INTRODUÇÃO ............................................................................................................ 6
3. O QUE É CICS ? .......................................................................................................... 7
4. O QUE É PROCESSAMENTO ON-LINE?................................................................ 8
5. A COMUNICAÇÃO ENTRE CICS ............................................................................ 9
6. AS DUAS FORMAS DE PROGRAMAÇÃO ............................................................ 10
7. CONVERSACIONAL ................................................................................................ 10
8. PSEUDO-CONVERSACIONAL ............................................................................... 11
9. AMBIENTES .............................................................................................................. 12
10. TERMINAIS ............................................................................................................... 12
11. LINGUAGENS ........................................................................................................... 13
12. BASE DE DADOS ...................................................................................................... 13
13. BATCH X ON-LINE .................................................................................................. 14
14. ALGUMAS RESTRIÇÕES........................................................................................ 16
15. OBSERVAÇÕES ........................................................................................................ 17
16. CUIDADOS................................................................................................................. 18
17. COMPILAÇÃO .......................................................................................................... 18
18. CONCEITOS E PROGRAMAÇÃO – TABEL DO CICS ........................................ 20
19. TRANSAÇÃO............................................................................................................. 21
20. TASK........................................................................................................................... 21
21. EXECUTANDO TRANSAÇÕES .............................................................................. 22
22. EXECUÇÃO CONCORRENTE DE TASKS............................................................ 22
23. EIB (EXEC INTERFACE BLOCK).......................................................................... 23
24. LINKAGE................................................................................................................... 24
25. COMANDOS BÁSICOS ............................................................................................ 26
26. COMANDO RETRIEVE ........................................................................................... 27
27. COMANDO RECEIVE.............................................................................................. 28
28. COMANDO SEND ..................................................................................................... 29
29. SEND MAP ERASE ................................................................................................... 30
30. SEND MAP DATAONLY .......................................................................................... 31
31. ENVIO DE MENSAGEM AO TERMINAL ............................................................. 33

ULISSES & MORAES INFORMÁTICA - TI -2-


C I C S – COMMAND LEVEL Turma2011

32. FORMATTIME.......................................................................................................... 34
33. BIF DEEDIT ............................................................................................................... 37
34. DISCONNECT ........................................................................................................... 38
35. USERID....................................................................................................................... 38
36. TRACEID ................................................................................................................... 39
37. POSICIONAMENTO DE CURSOR ......................................................................... 40
TRANSFERÊNCIA DE CONTROLE ENTRE PROGRAMAS.................................... 41
38. LINK/CALL ENTRE PROGRAMAS ....................................................................... 41
39. XCTL/START ENTRE PROGRAMAS .................................................................... 43
40. TEMPORARY STORAGE – TS / QUEUE - QNAME............................................. 46
41. EXCLUSÃO DE TS.................................................................................................... 48
42. GRAVAÇÃO DE TS .................................................................................................. 49
43. LEITURA DE TS........................................................................................................ 51
44. TRATAMENTO DE ERROS NO CICS.................................................................... 52
45. NOHANDLE............................................................................................................... 54
46. TRATAMENTO DO LABEL ABEND...................................................................... 55
47. TRATAMENTO DO LABEL ERROR...................................................................... 57
48. MANUSEIO DE TECLAS ......................................................................................... 59
49. MANUSEIO DE ATRIBUTOS .................................................................................. 63
50. COMMIT NO CICS ................................................................................................... 65
51. ROLLBACK NO CICS .............................................................................................. 65
52. CECI ........................................................................................................................... 66
53. CEBR .......................................................................................................................... 67
54. CEDF – EXECUTION DIAGNOSTIC FACILITY .................................................. 68
55. MÓDULO MESTRE – SUBROTINAS – API – MÓDULOS CICS......................... 70
56. MÓDULO MESTRE – APLICAÇÃO CICS............................................................. 71

ULISSES & MORAES INFORMÁTICA - TI -3-


C I C S – COMMAND LEVEL Turma2011

Ulisses & Moraes Informática – TI

Prestação de Serviços em Análise de Sistemas, Programação,Treinamentos /


Cursos, Manutenção e Desenvolvimento de Projetos, Banco de Dados e Suporte
Técnico a Sistemas.

12 Anos na Área de TI Atuando em Desenvolvimento de Sistemas


10 Anos na Área de TI Ministrando Cursos/Treinamentos e Palestras

* Treinamento para Empresas


* Treinamento Particular
* Aulas em Faculdades

http://sites.google.com/site/ulissesemoraes/

ULISSES & MORAES INFORMÁTICA - TI -4-


C I C S – COMMAND LEVEL Turma2011

1. Objetivo

Capacitar O Aluno a Ler/Desenvolver e a Realizar Manutenções em Programas On-Line


Cobol/Cics aplicações de tela 3270 e sub-rotinas (api´s) Voltado para a Plataforma
Alta Mainframe.

ULISSES & MORAES INFORMÁTICA - TI -5-


C I C S – COMMAND LEVEL Turma2011

2. Introdução

Este curso oferece uma visão geral de programação CICS, conceitos e comandos e as
melhores práticas.

O foco do Curso é totalmente voltado à programação.

Ao final deste curso você estará apto a desenvolver Aplicações que utilizam CICS.

Nessa primeira unidade veremos conceitos fundamentais para conhecermos um pouco


do produto CICS, assim como a sintaxe dos comandos, e o que é necessário para
desenvolver uma aplicação COBOL/CICS.

Também aprenderemos o conceito de programação Pseudo-conversacional, a forma


mais moderna e vantajosa de desenvolver aplicativos sob CICS.

ULISSES & MORAES INFORMÁTICA - TI -6-


C I C S – COMMAND LEVEL Turma2011

3. O que é CICS ?

O CICS ( Customer Information Control System ), é um monitor de teleprocessamento


de estrutura modular, com capacidade para controlar programas, terminais e arquivos
com a filosofia de sistema aberto.

O CICS é composto de vários módulos/programas de gerenciamento, é um sistema de


banco de dados e comunicação de dados desenvolvido pela IBM para rodar em
equipamentos IBM e compatíveis com a IBM.

Este sistema permite que sejam transmitidos dados de um terminal para o


computador, que estes dados sejam processados, acessem arquivos ( podem ser
também banco de dados ) e sejam então transmitidos de volta ao terminal de
origem.

O CICS foi criado em 1968 e transformado em programa-produto IBM em 1969, na


sua primeira versão.

Existem também dois níveis de codificação do CICS :

MACRO - Que é similar ao Assembler.

COMMAND - Que é similar ao Cobol.

É importante não esquecer que o CICS roda sob o controle do sistema operacional.

ULISSES & MORAES INFORMÁTICA - TI -7-


C I C S – COMMAND LEVEL Turma2011

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

O CICS trata-se de um monitor transacional Online, ou seja, um produto que gerencia


a execução de aplicações em tempo real.

O CICS é um produto multi-usuário e multi-task (multi-tarefa), portanto permite a


execução concorrente de inúmeras aplicações de uma grande quantidade de usuários.

Para que o mainframe possa se comunicar iterativamente com os usuários, fugindo do


seu esquema padrão de submissão de JOBS, existem dois produtos disponíveis:

IMS/DC – É um subsistema do sistema operacional. Seu uso não é tão difundido.

CICS – É o produto de maior sucesso da IBM para processamento de transações ON


LINE (OLTP). Permite atender milhares de terminais, e controla internamente o
conjunto de arquivos VSAM necessários para as transações. Pode ser programado de
dentro de um programa Cobol através de API´s do tipo:

EXEC CICS comando

Que controlam uma variedade de serviços, como ler/atualizar arquivos, ler/enviar


telas, alocar programas de aplicação etc.

ULISSES & MORAES INFORMÁTICA - TI -8-


C I C S – COMMAND LEVEL Turma2011

5. A comunicação entre CICS

Podemos ter uma única região de CICS se tivermos uma carga de trabalho pequena,
mas caso a empresa tenha um alto número de usuários e muito processamento online
a ser executado diariamente, podemos ter diversas regiões CICS trabalhando e
distribuindo a carga através de facilidades de comunicação.

Um CICS pode comunicar-se com outros CICS residentes na mesma CPU, em CPUs
diferentes e mesmo em localidades diversas do planeta, facilitando muito o
processamento distribuído.

ULISSES & MORAES INFORMÁTICA - TI -9-


C I C S – COMMAND LEVEL Turma2011

6. As duas Formas de Programação

Existem duas formas de programação sob CICS:

ü Conversacional

ü Pseudo-conversacional

7. Conversacional

É uma técnica antiga que praticamente não está sendo utilizada, uma vez que
consome muitos recursos do sistema, e vai contra a filosofia do CICS, que é de
aplicações que processem rapidamente e consumam poucos recursos.

Essa técnica consiste em processar os dados recebidos do usuário, devolver a


resposta, e aguardar para receber novas solicitações.

ULISSES & MORAES INFORMÁTICA - TI - 10 -


C I C S – COMMAND LEVEL Turma2011

8. Pseudo-Conversacional

É a técnica mais utilizada, mais moderna e mais eficiente de programação.

A aplicação recebe a solicitação do usuário, processa, envia a resposta e termina,


liberando praticamente todos os recursos.

Ao terminar, a aplicação encadeia uma nova execução da transação, como veremos a


seguir.

Após enviar a resposta ao usuário (SEND), o programa termina através do comando


RETURN, encadeando uma nova execução da mesma transação TRANSID (‘FAT1’).

Isso significa que a task terminará, os recursos serão liberados, mas quando o usuário
teclar ENTER, PFs, PAs, ou CLEAR, uma nova task da mesma transação será
executada. Portanto, o usuário terá a sensação de uma conversação, mas estará
ocorrendo uma pseudo-conversação.

ULISSES & MORAES INFORMÁTICA - TI - 11 -


C I C S – COMMAND LEVEL Turma2011

Þ Conceitos Gerais

9. Ambientes

Ä DOS / OS / MVS / CMS / PC


Ä CICS
· Terminais
· Programas
· Arquivos

10. Terminais

Ä Tem suporte para uma lista extensa de tipos e modelos de terminais.


Ä Sob VTAM ou BTAM.

ULISSES & MORAES INFORMÁTICA - TI - 12 -


C I C S – COMMAND LEVEL Turma2011

11. Linguagens

Ä São quatro as linguagens de programação disponíveis sob CICS :


· Cobol
· Assembler
· PL/I
· RPGII

Ä Existem ainda as linguagens ditas de quarta geração, tais como:


· CSP
· Gener/OL
· MANTIS
· NATURAL
· IDEAL
· TRANS IV
· UFO

12. Base de Dados

Ä Os principais métodos de acesso e bases de dados estão disponiveis:


· VSAM
· DL/I ou IMS/DB
· SQL/DS ou DB2
· DATACOM
· SUPRA
· TOTAL
· IDMS
· ADABAS

ULISSES & MORAES INFORMÁTICA - TI - 13 -


C I C S – COMMAND LEVEL Turma2011

13. Batch X On-Line

Ä Ambiente Batch

Várias cópias do mesmo programa na memória.

Programa 01 Programa 01 Programa 01 Programa 01

Partição 01 Partição 02 Partição 03 Partição 04

ULISSES & MORAES INFORMÁTICA - TI - 14 -


C I C S – COMMAND LEVEL Turma2011

Ä Ambiente On-Line

Só uma cópia do programa na memória.

Várias cópias da Working-Storage Section.

Programa 01

Work Work Work Work

Terminal 01 Terminal 02 Terminal 03 Terminal 04

ULISSES & MORAES INFORMÁTICA - TI - 15 -


C I C S – COMMAND LEVEL Turma2011

14. Algumas Restrições

· Um módulo objeto não pode ser maior do que 524.152 Bytes.

· A Working-Storage SECTION não pode ter mais de 64 k.

· A Linkage Section (commarea) não pode ter mais de 32 k.

· Sob o CICS não podemos utilizar instruções COBOL que solicitem serviço direto
ao Sistema Operacional. Portanto é proibido o uso dos seguintes comandos:
COBOL II OS/COBOL
ACCEPT ACCEPT
DISPLAY DISPLAY
CLOSE EXAMINE
OPEN EXHIBIT
READ STOP RUN
WRITE INSPECT
REWRITE STRING
DELETE TIME
TRANSFORM
UNSTRING
OPEN/READ/WRITE/CLOSE

· Sob o CICS não utilizamos Configuration Section, Input-Output Section e


File Section. Quem gerencia os arquivos é o CICS, e não o programa de
aplicação.
IDENTIFICATION DIVISION.
PROGRAM-ID.
ENVIRONMENT DIVISION.

CONFIGURATION SECTION.
X INPUT-OUTPUT SECTION.
DATA DIVISION.
X FILE SECTION.
WORKING-STORAGE SECTION.
LINKAGE SECTION.
PROCEDURE DIVISION.

ULISSES & MORAES INFORMÁTICA - TI - 16 -


C I C S – COMMAND LEVEL Turma2011

15. Observações

Ä Ambiente Batch

ü Programa de aplicação abre os arquivos.

ü Programa de aplicação é o dono da partição.

ü Muito acesso seqüencial, pouco acesso randomico.

ü Emissão de relatórios extensos.

ü Processa vários registros a cada rodada. (Processamento em Lote)

ü Programa roda isolado, desde o inicio até o término, todos os recursos estão à
sua disposição.

Ä Ambiente On-Line

ü O CICS abre os arquivos.

ü O CICS é o dono da partição.

ü Muito acesso randomico, pouco acesso seqüencial.

ü Emissão de relatórios resumidos.

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

ULISSES & MORAES INFORMÁTICA - TI - 17 -


C I C S – COMMAND LEVEL Turma2011

16. Cuidados

No tratamento de tabelas internas, não estore o número máximo de ocorrências.

Quando um programa invade uma área que não lhe pertence, os resultados são
imprevisíveis, pode inclusive acarretar uma queda do sistema.

Evite programas grandes.

É importante que o programador esteja consciente dos recursos oferecidos e suas


limitações.

17. Compilação

A compilação de um programa Cobol BATCH é composta de duas etapas.

Compilação

Linkedição

ULISSES & MORAES INFORMÁTICA - TI - 18 -


C I C S – COMMAND LEVEL Turma2011

A compilação de um programa Cobol CICS é composta de três etapas.

Antes de efetuar a compilação de um programa COMMAND LEVEL, é necessário


transformar todos os comandos do tipo EXEC CICS em comandos que sejam
processáveis pelo compilador COBOL.

O processo de compilação fica da seguinte forma:

Translator

Compilação

Linkedição

Os comandos EXEC CICS são transformados em comandos CALL.

ULISSES & MORAES INFORMÁTICA - TI - 19 -


C I C S – COMMAND LEVEL Turma2011

18. Conceitos e Programação – Tabel do Cics

Alguns exemplos de Tabela:

· TCT – TERMINAL CONTROL TABLE, definição das características dos


terminais em rede.

· FCT – FILE CONTROL TABLE, arquivos e tipos de acesso permitidos.

· PCT – PROGRAM CONTROL TABLE, Código de transação, qual programa


associado ( PPT ), nível de segurança e prioridade.

· PPT – PROCESSING PROGRAMS TABLE, código dos programas.

· JCT – JOURNAL CONTROL TABLE, definição de TRANSIENT DATA.

· TRT – TRACE TABLE, opções de documentação de problemas.

· SNT – SIGN-ON TABLE, usuários do sistema e seu nível de segurança.

· SIT – SYSTEM INITIALIZATION TABLE, parâmetros de inicialização,


informa por exemplo: quais são os módulos e tabelas ativos.

ULISSES & MORAES INFORMÁTICA - TI - 20 -


C I C S – COMMAND LEVEL Turma2011

19. Transação

Código de 1 a 4 caracteres definido na PCT do CICS, e que representa o processo de


uma aplicação.

Uma transação sempre fica amarrada a um programa de aplicação, que é processado


quando a transação é executada.

Quase sempre a transação trabalha associada a um terminal, já que o CICS é um


produto que processa aplicações em tempo real.

Esse terminal é denominado “terminal associado à transação”.

20. Task

Unidade de trabalho do CICS, ou para ser mais exato, é a execução de uma


transação.

Podemos ter diversos usuários executando a mesma transação em vários terminais.


Cada execução é denominada Task.

ULISSES & MORAES INFORMÁTICA - TI - 21 -


C I C S – COMMAND LEVEL Turma2011

21. Executando transações

Quando o usuário chama uma transação a partir de um terminal conectado ao CICS,


imediatamente é verificado se essa transação está cadastrada na tabela PCT.

Se estiver, um bloco de controle denominado TCA (Task Control Área) é criado e vai
existir durante a execução da task.

Através da PCT o CICS sabe qual o programa associado à transação, e verifica se esse
programa está cadastrado na tabela PPT. Se estiver tudo o.k., a task é executada.

22. Execução concorrente de tasks


Como dissemos, para cada execução de transação (task), é criado um bloco de
controle chamado TCA.

Portanto, se tivermos várias tasks da mesma transação, teremos várias TCAs, uma
para cada task.

Entretanto, o CICS não carrega na memória várias cópias de um mesmo programa.

Apenas uma cópia do programa é carregada e utilizada por todas as tasks.

A Working-storage tem que ter uma cópia para cada task, já que ela é utilizada com
dados diferentes para cada usuário.

A TCA é o ponto focal da task, já que todas as áreas são encadeadas a partir dela.

Cada task terá também uma área denominada EIB (Exec Interface Block), que traz
uma série de informações muito úteis para nossos programas.

ULISSES & MORAES INFORMÁTICA - TI - 22 -


C I C S – COMMAND LEVEL Turma2011

23. Eib (Exec Interface Block)


Acessa o EXEC INTERFACE BLOCK, o programa de uma transação já recebe
o EIB automaticamente.
Exec Interface Block (EIB)
EIBTIME Hora
EIBDATE Data (juliana)
EIBTRNID Codigo da transação
EIBTASKN Contém o número de sequencia da tarefa
EIBTRMID Terminal associado
EIBCPOSN Posição do cursor
EIBCALEN Tamanho da commarea
EIBAID Tecla pressionada (enter, pf’s)
EIBFN Ultima função executada
EIBRCODE Contém o código de retorno após o comando ter terminado.
Contém o nome do último DATASET referenciado em uma solicitação ao controle de
EIBDS
arquivos
EIBREQID
EIBRSRCE Contém o nome do último recurso usado em uma requisição I/O
EIBSYNC
EIBFREE
EIBRECV
EIBATT
EIBEOC
EIBFMH
EIBCOMPL
EIBSIG
EIBCONF
EIBERR
EIBERRCD
EIBSYNRB
EIBNODAT
EIBRESP Response Code
A condição de exceção INVREQ (solicitação inválida – EIBRESP=16) é muito vaga,
EIBRESP2
por isso o CICS traz o campo EIRESP2, que informa maiores detalhes do problema.
EIBRLDBK

ULISSES & MORAES INFORMÁTICA - TI - 23 -


C I C S – COMMAND LEVEL Turma2011

24. Linkage

COMMAREA x DFHCOMMAREA

A chave da pseudo-conversação esta na Communication Área.

Na primeira execução à EIBCALEN zero à utilizar Commarea na Working-storage para


passagem de dados.

Nas demais execuções à EIBCALEN maior que zero à dados recebidos em Linkage Section
na DFHCOMMAREA.

A Linkage Section é uma área muito explorada pelo CICS em nossos programas
COBOL. Já percebemos que o EIB e a DFHCOMMAREA localizam-se em Linkage.

Além dessas duas áreas, podemos utilizar a Linkage para diversos outros fins, pois ela
é uma excelente alternativa ao uso da Working.

O único cuidado que devemos ter é com o tamanho das áreas e sua “addressability”,
ou seja, estabelecer o endereçamento para poder utilizá-las.

*---------------------------------------------------------------*
WORKING-STORAGE SECTION.

/**-----------------------------------------------------------***
*** AREA DE COMMAREA ***
***-----------------------------------------------------------***
*
01 WCA-COMMAREA.
03 WCA-FASE PIC 9(001).
03 WCA-PAG-INI PIC 9(003).
03 WCA-PAG-FNL PIC 9(003).
*

ULISSES & MORAES INFORMÁTICA - TI - 24 -


C I C S – COMMAND LEVEL Turma2011

*---------------------------------------------------------------*
LINKAGE SECTION.
*---------------------------------------------------------------*
*
01 DFHCOMMAREA PIC X(2000).
*
*===============================================================*
PROCEDURE DIVISION.
*---------------------------------------------------------------*
*
EXEC CICS HANDLE ABEND
LABEL (910-00-ABEND)
END-EXEC.

EXEC CICS HANDLE CONDITION


ERROR (920-00-ERROR)
END-EXEC.

IF EIBCALEN EQUAL ZEROS


EXEC CICS RETRIEVE INTO (WCOM-COMMAREA)
LENGTH (LENGTH OF WCOM-COMMAREA)
END-EXEC
PERFORM 010-00-PROCED-INICIAIS
END-IF.

MOVE DFHCOMMAREA TO COMM-REG.

MOVE LOW-VALUES TO TCCM359O.

IF EIBAID EQUAL DFHCLEAR OR

O endereçamento do DFHEIBLK (EIB) e da DFHCOMMAREA é feito de forma automática


pelo CICS.

O endereçamento de outras áreas deve ser feito pelo próprio programa, portanto é
responsabilidade do programador.

ULISSES & MORAES INFORMÁTICA - TI - 25 -


C I C S – COMMAND LEVEL Turma2011

25. Comandos básicos

Þ Formato dos comandos

EXEC CICS RECEIVE INTO(FLDA) LENGTH(W-LEN) END-EXEC

1 2 3 4 5 6 7

1 -> KEYWORDS

2 -> FUNÇÃO

3 -> OPÇÃO

4 -> ARGUMENTO

5 -> OPÇÃO

6 -> ARGUMENTO

7 -> DELIMITADOR

Um comando CICS é formado pela estrutura mostrada acima:

- As keywords EXEC CICS

- A função solicitada (send, receive, ...)

- As opções com seus respectivos argumentos

- Para COBOL, o delimitador END-EXEC.

ULISSES & MORAES INFORMÁTICA - TI - 26 -


C I C S – COMMAND LEVEL Turma2011

26. Comando RETRIEVE

Sintaxe:

EXEC CICS RETRIEVE INTO (WCOM-COMMAREA)


LENGTH (LENGTH OF WCOM-COMMAREA)
END-EXEC

Este comando deverá ser executado apenas na primeira vez em que o seu programa
é chamado.

Caso o seu programa seja o primeiro do Sistema, ou seja, um MENU por exemplo,
este programa não deverá realizar o Retrieve, porque a commarea ainda não existe,
o seu menu provavelmente irá gerar essa commarea, que será passada para os
demais programas.

Cuidado com o tamanho dessa commarea, ou seja, caso o programa que está
chamando o seu, não tenha o mesmo tamanho da commarea que você utiliza no seu
programa, você tera como erro EIBRESP = 29

ULISSES & MORAES INFORMÁTICA - TI - 27 -


C I C S – COMMAND LEVEL Turma2011

27. Comando RECEIVE

Sintaxe:

/===============================================================*
800-00-RECEIVE-MAP.
*---------------------------------------------------------------*
*
EXEC CICS RECEIVE MAP ('TCCM037')
MAPSET ('TCCM037')
INTO (TCCM037I)
END-EXEC.
*
*---------------------------------------------------------------*
800-99-EXIT.
*-=-=-=-=-=-*
EXIT.

O comando RECEIVE serve para trazer para a memória do CICS e do programa os


dados que foram digitados pelo usuário no terminal.

Os dados normalmente são recebidos na Working-storage do programa, ou seja, ao


compilar o Mapa será gerado um arquivo .cpy, neste arquivo existirá, os campos que
são utilizados na tela.

A opção LENGTH especifica o tamanho máximo permitido para a recepção dos dados.

A partir do COBOL II, o LENGTH deixou de ser necessário.

ULISSES & MORAES INFORMÁTICA - TI - 28 -


C I C S – COMMAND LEVEL Turma2011

O Cobol assume que o tamanho máximo dos dados é o tamanho da área especificada
na opção INTO.

- Existe a possibilidade da condição de exceção MAPFAIL(eibresp=36) durante um


RECEIVE MAP. Ela pode ocorrer nas seguintes situações:

- Tela do terminal em branco (limpa) no momento do Receive Map ( tamanho 0)

- Tela do terminal com um mapa, porém nenhum campo com MDT ON (tamanho 0)

- Mapa com campos MDT ON, porém o usuário tecla CLEAR ou PA1, PA2...

- Conteúdo da tela do terminal composto de dados

- Não formatados no momento do Receive Map.

28. Comando SEND

O comando SEND MAP é utilizado para enviar um mapa ao terminal do usuário.

Como podemos ter mais de um mapa em um mapset, temos que informar o nome do
mapa e também do mapset.

O SEND MAP pega os dados do mapa simbólico (working), agrega ao mapa físico e
envia para o terminal do usuário.

EXEC CICS SEND MAP(‘TESTMP’)

MAPSET(‘TESTMS1’)

END-EXEC.

ULISSES & MORAES INFORMÁTICA - TI - 29 -


C I C S – COMMAND LEVEL Turma2011

29. Send Map ERASE

/===============================================================*
810-00-SEND-MAP-ERASE.
*---------------------------------------------------------------*
*
EXEC CICS SEND MAP ('TCCM037')
MAPSET ('TCCM037')
FROM (TCCM037O)
ERASE
CURSOR
FREEKB
ALARM
END-EXEC.

EXEC CICS RETURN TRANSID ('T037')


COMMAREA(TCCCOMM-COMMAREA)
LENGTH (LENGTH OF TCCCOMM-COMMAREA)
END-EXEC.
*
*---------------------------------------------------------------*
810-99-EXIT.
*-=-=-=-=-=-*
EXIT.

O exemplo acima mostra o envio de um mapa para o terminal do usuário durante a


primeira execução da transação (1ª fase da pseudo-conversação).

A opção ERASE serve para limpar a tela do terminal antes de enviar o mapa.

ULISSES & MORAES INFORMÁTICA - TI - 30 -


C I C S – COMMAND LEVEL Turma2011

30. Send Map DATAONLY

/===============================================================*

820-00-SEND-MAP-DATAONLY.

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

EXEC CICS SEND MAP ('TCCM037')

MAPSET ('TCCM037')

FROM (TCCM037O)

DATAONLY

CURSOR

FREEKB

ALARM

END-EXEC.

EXEC CICS RETURN TRANSID ('T137')

COMMAREA(WCA-COMMAREA)

LENGTH (LENGTH OF WCA-COMMAREA)

END-EXEC.

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

820-99-EXIT.

*-=-=-=-=-=-*

EXIT.

A opção DATAONLY serve para economizar transmissão de dados durante uma


operação de envio de mapas.

ULISSES & MORAES INFORMÁTICA - TI - 31 -


C I C S – COMMAND LEVEL Turma2011

DATAONLY faz com que o CICS envie para o terminal apenas os dados do mapa
simbólico, fazendo um “refresh” no terminal do usuário, já que o mapa físico foi
enviado na primeira execução (ERASE) da transação.

Quando for especificado o parâmetro CURSOR no comando SEND, e no mapa existe


um campo com atributo IC, prevalecerá o posicionamento especificado no SEND.

ALARM – Para soar o alarme do terminal (BEEP).

CURSOR – Posicionamento do Cursor na tela.

DATAONLY – Somente os dados devem ser enviados para o terminal.

ERASE – A tela deve ser inicializada com nulos (Limpar a Tela).

FREEKB – Causa a liberação do teclado.

FROM – Informe a área de trabalho que conterá os dados a serem enviados.

INTO – Informe a área de trabalho que conterá os dados a serem recebidos.

LENGTH – Tamanho

ULISSES & MORAES INFORMÁTICA - TI - 32 -


C I C S – COMMAND LEVEL Turma2011

31. Envio de Mensagem ao Terminal

· Retorna ao CICS enviando uma mensagem ao terminal.

Exemplo:

Na Working

01 WS-MSG-ENCERRADA PIC X(033) VALUE


'*** TRANSACAO ENCERRADA ***'.

Na Procedure

EXEC CICS SEND FROM (WS-MSG-ENCERRADA)


LENGTH (+33)
ERASE
END-EXEC.

EXEC CICS RETURN

END-EXEC.

ULISSES & MORAES INFORMÁTICA - TI - 33 -


C I C S – COMMAND LEVEL Turma2011

32. Formattime

/===============================================================*
830-00-FORMATTIME.
*---------------------------------------------------------------*
*
EXEC CICS ASKTIME ABSTIME (WS-ABSTIME)

END-EXEC.

EXEC CICS FORMATTIME ABSTIME (WS-ABSTIME)


DDMMYY (WS-DAT-EDIT)
DATESEP ('/')
YEAR (WS-ANO-CICS)
TIME (WS-HRS-EDIT)
TIMESEP (':')
END-EXEC.

MOVE WS-ANO-CICS TO WS-SA-EDIT.

MOVE WS-DT-EDIT TO M037-DATAO.


MOVE WS-HRS-EDIT TO M037-HORAO.
*
*---------------------------------------------------------------*
830-99-EXIT.
*-=-=-=-=-=-*
EXIT.

ULISSES & MORAES INFORMÁTICA - TI - 34 -


C I C S – COMMAND LEVEL Turma2011

Þ Formatação de data e hora

Criar na Work

*---------------------------------------------------------------*
WORKING-STORAGE SECTION.
*---------------------------------------------------------------*
*
77 WS-ANO-CICS PIC S9(008) COMP VALUE +0.
77 WS-ABSTIME PIC S9(015) COMP VALUE +0.
77 WS-HRS-EDIT PIC X(008) VALUE SPACES.
*
/**-----------------------------------------------------------***
*** AREA DE TRATAMENTO DE DATA ***
***-----------------------------------------------------------***
*
01 WS-DT-EDIT.
03 WS-DAT-EDIT.
05 WS-DD-EDIT PIC 9(002).
05 FILLER PIC X(001).
05 WS-MM-EDIT PIC 9(002).
05 FILLER PIC X(001).
05 WS-AA-EDIT PIC X(002).
03 FILLER PIC X(002).
01 FILLER REDEFINES WS-DT-EDIT.
03 FILLER PIC X(006).
03 WS-SA-EDIT PIC 9(004).
*

A aplicação receberá o tipo de solicitação do usuário, processará conforme for a


necessidade e devolverá a resposta ao terminal.

Portanto, uma típica (embora simples) aplicação CICS: recebe a solicitação, processa,
devolve a resposta para o usuário e termina.

ULISSES & MORAES INFORMÁTICA - TI - 35 -


C I C S – COMMAND LEVEL Turma2011

O comando ASKTIME informa ao programa o momento exato, e a partir daí podemos


utilizar o FORMATTIME para editar a data e hora de acordo com a preferência do
usuário.

Datesep: faz a separação com ‘/’ da data. Se colocarmos argumento DATESEP (‘.’)
para a separação, formatará a data dd.mm.yyyy

ASKTIME – Atualiza os campos EIBDATE e EIBTIME

ABSTIME – Horário em milisegundos

FORMATTIME – Realiza uma série de operações envolvendo datas

DDMMYY – Especifica formato dia, mês e ano para o campo data

DATESEP – Separador para o campo data

YEAR – Ano 9999

TIME – hora

TIMESEP – Separador para o campo hora

ULISSES & MORAES INFORMÁTICA - TI - 36 -


C I C S – COMMAND LEVEL Turma2011

33. BIF DEEDIT

Podemos em algumas ocasiões permitir ao usuário que digite dados com caracteres
especiais como ‘$” ou “.” ou ainda “,”.

Se desejarmos realizar operações aritméticas utilizando esses campos, devemos


retirar os caracteres não numéricos.

O comando BIF DEEDIT pode ser utilizado para retirar os caracteres especiais de um

Campo reparando-o para operações aritméticas.

A opção LENGTH não é necessária para programas COBOL II.

EXEC CICS BIF DEEDIT

FIELD (M035-AMOUNTO)

LENGTH (+9)

END-EXEC.

Podemos editar campos na tela, basta em sua definição acrescentar o parâmetro PICOUT
(por exemplo, = Z.ZZ9,99) e a saída do campo já ficará editada.

ULISSES & MORAES INFORMÁTICA - TI - 37 -


C I C S – COMMAND LEVEL Turma2011

34. DISCONNECT

Disconecta totalmente do cics, retornando a tela de logon.

EXEC CICS ISSUE DISCONNECT

END-EXEC.

EXEC CICS RETURN

END-EXEC.

35. USERID

Para identificarmos o usuário que está acessando a transação, devemos executar o


seguinte comando:

EXEC CICS ASSIGN USERID (WS-USERID)

END-EXEC.

Criar na WORK o campo WS-USERID no formato PIC X(008).

ULISSES & MORAES INFORMÁTICA - TI - 38 -


C I C S – COMMAND LEVEL Turma2011

36. TRACEID

No momento de teste de programas, podemos utilizar este comando, para


verificarmos o conteúdo de campos no momento da execução.

Muito utilizado em ambientes onde não existe ferramentas de DEBUG.

EXEC CICS ENTER TRACEID (2)


FROM (M011-CODIGOI)
END-EXEC.

ULISSES & MORAES INFORMÁTICA - TI - 39 -


C I C S – COMMAND LEVEL Turma2011

37. Posicionamento de Cursor

Para posicionar o cursor no meio do programa, devemos mover (–1) para o campo L e
colocar o parâmetro CURSOR no comando SEND.

01 TCCM037I.
03 FILLER PIC X(12).
03 M037-DATAL COMP PIC S9(4).
03 M037-DATAF PIC X.
03 FILLER REDEFINES M037-DATAF.
05 M037-DATAA PIC X.

03 M037-DATAI PIC X(10).

Criar na Work . WS-EIBCPOSN PIC S9(004) COMP.

IF WS-CURSOR EQUAL 1

EXEC CICS SEND CONTROL

CURSOR (WCA-EIBCPOSN)

END-EXEC

END-IF.

O comando SEND CONTROL está sendo utilizado nesse momento para posicionar o
cursor na posição indicada na variável WCA-EIBCPOSN.

Este comando deve estar codificado após o SEND MAP e antes do Return Transid.

ULISSES & MORAES INFORMÁTICA - TI - 40 -


C I C S – COMMAND LEVEL Turma2011

Transferência de controle entre programas

38. Link/Call entre programas

(Módulo Cics – Subprogramas (API’s)

O comando Link passa o controle para o programa indicado, esse programa executa e
ao terminar, devolve o controle ao programa que emitiu o Link (chamador).

Os dois programas são executados sob a mesma task.

Assim como na pseudo-conversação, também utilizamos a Commarea para passagem


de dados entre os programas no comando LINK.

O programa chamador (o que emite o LINK) passa como commarea uma área de
working-storage.

O programa que recebe o controle vai acessar os dados passados através da


DFHCOMMAREA em sua Linkage Section.

Se os dados recebidos na DFHCOMMAREA pelo programa chamado forem alterados,


quando esse terminar e o controle voltar para o programa chamador, a área de
working que foi passada como commarea também estará alterada.

ULISSES & MORAES INFORMÁTICA - TI - 41 -


C I C S – COMMAND LEVEL Turma2011

Os dois programas devem estar definidos na PPT do CICS.

Todo programa chamado através de LINK executa em novo nível lógico.

Quando termina (RETURN), o controle volta para o nível lógico


imediatamente superior, ou seja, para o programa que emitiu o LINK.

NÍVEL 0 CICS

Primeiro Programa
NÍVEL 1

LINK

NÍVEL 2 Segundo Programa


RETURN

EXEC CICS LINK PROGRAM (WS-PROG105)


COMMAREA (W105-COMMAREA)
LENGTH (LENGTH OF W105-COMMAREA)
END-EXEC.

IF W105-COD-RETORNO NOT EQUAL ZEROS


PERFORM 0105-00-TRATA-RETORNO
END-IF.

ULISSES & MORAES INFORMÁTICA - TI - 42 -


C I C S – COMMAND LEVEL Turma2011

CALL WS-PRGBBO10 USING DFHEIBLK


DFHCOMMAREA
W010-COMMAREA
END-CALL.

39. XCTL/Start entre programas

O comando XCTL também passa controle para outro programa, mas ao contrário do
LINK, quando o programa chamado termina, o controle não retorna ao programa
chamador.

CICS
NÍVEL 0

Primeiro Programa Terceiro Programa


NÍVEL 1
LINK

XCTL RETURN

NÍVEL 2 Segundo Programa


RETURN

A passagem de dados entre os programas também é feita através da Commarea.

ULISSES & MORAES INFORMÁTICA - TI - 43 -


C I C S – COMMAND LEVEL Turma2011

O programa que emite o XCTL utiliza uma área de working como Commarea, o
programa que torna o controle recebe os dados na DFHCOMMAREA.

Como o RETURN volta para o nível lógico imediatamente superior, temos a


confirmação que no caso do XCTL o controle não retorna para o programa que fez a
chamada.

EXEC CICS XCTL PROGRAM (WS-PRGON01)


COMMAREA (WCA-COMMARE)
LENGTH (LENGTH OF WCA-COMMAREA)
END-EXEC.

Passagem de controle:

XCTL à programa recebe eibcalen diferente de zeros.

START à programa recebe eibcalen igual a zeros, devemos, portanto, executar o


comando RETRIEVE para restaurar a commarea.

EXEC CICS START TRANSID (‘PEXZ’)


TERMID (EIBTRMID)
END-EXEC.

EXEC CICS RETURN

END-EXEC.

EXEC CICS START TRANSID (WCA-TRANS)


TERMID (EIBTRMID)
FROM (WCA-COMMAREA)
LENGTH (LENGTH OF WCA-COMMAREA)
END-EXEC.

EXEC CICS RETURN

END-EXEC.

ULISSES & MORAES INFORMÁTICA - TI - 44 -


C I C S – COMMAND LEVEL Turma2011

Para enviar dados para a próxima task, utilizamos uma área de comunicação chamada
COMMAREA.

Essa área será passada através de uma área de Working-storage no programa e pode
ter qualquer nome.

Na próxima execução, os dados passados serão recebidos em uma área reservada do


programa localizada na Linkage Section e chamada DFHCOMMAREA (nome
reservado).

A área transmitida deve ter o mesmo tamanho em sua recepção na DFHCOMMAREA.

Na primeira execução da transação não podemos utilizar a DFHCOMMAREA, pois ela


ainda não existe.

Ela existirá a partir da segunda execução, com os dados recebidos.

Como saberemos se estamos processando a transação pela primeira vez?

A resposta para esta importante questão está em um campo do EIB denominado


EIBCALEN (Commarea Length).

Na primeira execução da transação o EIBCALEN estara com valor zero e nas demais
execuções estará maior que zero.

ULISSES & MORAES INFORMÁTICA - TI - 45 -


C I C S – COMMAND LEVEL Turma2011

40. Temporary Storage – TS / QUEUE - QNAME

DFHTEMP
DFHTSP

EXEC CICS
READQ/WRITEQ TS VSAM (ESDS)
TS

A Temporary Storage (TS) tem nomes de 1 a 8 caracteres, e não necessita que esses
nomes sejam pré-definidos em tabelas do CICS. Se a fila não existir, ela será criada.

As filas TS podem ser gravadas em disco (AUX) ou então em memória (MAIN), onde o
acesso é muito mais rápido;

Os registros (itens) podem ter tamanho variável;

TS aceita gravação seqüencial, leitura seqüencial e direta, e atualização;

Os dados permanecem disponíveis até que sejam excluídos por comando.

Se a fila já existir, o programa acrescentará dados nela, portanto devemos sempre, ao iniciar
o programa, tratar para criar uma TS nova.

ULISSES & MORAES INFORMÁTICA - TI - 46 -


C I C S – COMMAND LEVEL Turma2011

Criar na Work a área da TS.

/**-----------------------------------------------------------***

*** AREA DA TS - MONTAGEM DAS OCORRENCIAS ***

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

01 WS-TS-ITEM PIC S9(004) COMP VALUE +0.

01 WS-TS-LENGTH PIC S9(004) COMP VALUE +280.

01 WS-NOME-TS.

03 WS-TRANID-TS PIC X(004) VALUE 'TC37'.

03 WS-TERMID-TS PIC X(004) VALUE SPACES.

01 TS-AREA.

03 TS-OCOR OCCURS 10 TIMES.

05 TS-NU-CNPJ PIC 9(014).

05 TS-NU-AGENCIA PIC 9(004).

05 TS-NU-CONTA PIC 9(008).

05 TS-NU-DV-CONTA PIC X(002).

/**-----------------------------------------------------------***

ULISSES & MORAES INFORMÁTICA - TI - 47 -


C I C S – COMMAND LEVEL Turma2011

41. Exclusão de TS

/===============================================================*
150-00-DELETA-TS.
*--------------------------------------------------------------*
*
MOVE 'TC37' TO WS-TRANID-TS.
MOVE EIBTRMID TO WS-TERMID-TS.

EXEC CICS DELETEQ TS QUEUE (WS-NOME-TS)


NOHANDLE
END-EXEC.
*
*---------------------------------------------------------------*
150-99-EXIT.
*-=-=-=-=-=-*
EXIT.

O comando DELETEQ TS serve para excluir todos os itens de uma fila TS.

É importante excluir fila após o seu uso, principalmente se a fila foi gravada em
memória.

Não é possível a exclusão de apenas um item da ts.

Sempre que um programa utilizar TS, antes da Gravação dos itens na mesma,
execute o comando de deleção.

ULISSES & MORAES INFORMÁTICA - TI - 48 -


C I C S – COMMAND LEVEL Turma2011

42. Gravação de TS

/===============================================================*

180-00-GRAVA-TS.

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

MOVE 'TC37' TO WS-TRANID-TS.

MOVE EIBTRMID TO WS-TERMID-TS.

EXEC CICS WRITEQ TS QUEUE (WS-NOME-TS)

FROM (TS-AREA)

LENGTH (WS-TS-LENGTH)

ITEM (WS-TS-ITEM)

END-EXEC.

MOVE WS-TS-ITEM TO WCA-TPAG.

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

180-99-EXIT.

*-=-=-=-=-=-*

EXIT.

O comando WRITEQ TS é utilizado para gravação de filas TS.

Quando estivermos gravando, se codificarmos a opção ITEM, o CICS retorna o


número (posição) desse item na fila;

Cada registro gravado é um novo item.

ULISSES & MORAES INFORMÁTICA - TI - 49 -


C I C S – COMMAND LEVEL Turma2011

Se codificarmos as opções ITEM e REWRITE, o CICS fará atualização do item indicado


com o novo conteúdo.

-
/===============================================================*

180-00-REGRAVA-TS.

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

MOVE 'TC37' TO WS-TRANID-TS.

MOVE EIBTRMID TO WS-TERMID-TS.

MOVE WCA-NPAG TO WS-TS-ITEM.

EXEC CICS WRITEQ TS QUEUE (WS-NOME-TS)

FROM (TS-AREA)

LENGTH (WS-TS-LENGTH)

ITEM (WS-TS-ITEM)

REWRITE

END-EXEC.

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

180-99-EXIT.

*-=-=-=-=-=-*

EXIT.

ULISSES & MORAES INFORMÁTICA - TI - 50 -


C I C S – COMMAND LEVEL Turma2011

43. Leitura de TS

/===============================================================*
200-00-LER-TS.
*--------------------------------------------------------------*
*
MOVE 'TC37' TO WS-TRANID-TS.
MOVE EIBTRMID TO WS-TERMID-TS.

MOVE WCA-NPAG TO WS-TS-ITEM.

EXEC CICS READQ TS QUEUE (WS-NOME-TS)


INTO (TS-AREA)
LENGTH (WS-TS-LENGTH)
ITEM (WS-TS-ITEM)
END-EXEC.
*
*---------------------------------------------------------------*
200-99-EXIT.
*-=-=-=-=-=-*
EXIT.

Comando READQ TS é utilizado para leitura de filas TS.

Se utilizarmos a opção ITEM estaremos fazendo leitura direta;

A data-area dos campo ITEM deve ser codificadas no programa com PIC S9(04) COMP.

ULISSES & MORAES INFORMÁTICA - TI - 51 -


C I C S – COMMAND LEVEL Turma2011

44. Tratamento de Erros no CICS

É de extrema importância o manuseio de condições de exceção em programas


executando sob CICS.

Nessa unidade veremos algumas das técnicas para manusear condições de exceção.

*===============================================================*

PROCEDURE DIVISION.

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

EXEC CICS HANDLE ABEND

LABEL (998-99-ABEND)

END-EXEC.

EXEC CICS HANDLE CONDITION

ERROR (999-99-ERROR)

END-EXEC.

IF EIBCALEN EQUAL ZEROS

O comando HANDLE CONDITION serve para deixarmos pré-estabelecidas as rotinas


para manuseio de condições de exceção.

Podemos especificar até 16 condições, e ao executar um comando, se a condição


ocorrer será feito um desvio automático para a rotina especificada no HANDLE
CONDITION.

ULISSES & MORAES INFORMÁTICA - TI - 52 -


C I C S – COMMAND LEVEL Turma2011

O comando IGNORE CONDITION serve para o CICS ignorar as condições


especificadas, e deixar o programa continuar.

Serve também para resetar condições tratadas anteriormente em HANDLE


CONDITION.

No exemplo abaixo, o IGNORE CONDITION é feito antes de um DELETEQ TS


QUEUE.

/===============================================================*
150-00-DELETA-TS.
*--------------------------------------------------------------*
*
MOVE 'TC37' TO WS-TRANID-TS.

MOVE EIBTRMID TO WS-TERMID-TS.

EXEC CICS IGNORE CONDITION QIDERR

END-EXEC.

EXEC CICS DELETEQ TS QUEUE (WS-NOME-TS)

END-EXEC.
*
*---------------------------------------------------------------*
150-99-EXIT.
*-=-=-=-=-=-*
EXIT.

ULISSES & MORAES INFORMÁTICA - TI - 53 -


C I C S – COMMAND LEVEL Turma2011

45. NOHANDLE

§ Utilizar a opção NOHANDLE nos comandos, e testar EIBRESP, quando


achar necessário.

§ Utilizar Sempre HANDLE e IGNORE CONDITION

§ Se não existir o uso correto do tratamento acima o CICS toma ação Default,
que geralmente é abendar a task.

Caso exista uma situação, de eibresp diferente de zeros, onde você deseja tratar ela,
ou seja, não quero que o programa saia pela situação de abend.

Defina o NOHANDLE antes da linha END-EXEC, no comando EXEC CICS, e logo após
faça a consistência de acordo com a necessidade.

Exemplo:

EXEC CICS DELETEQ TS QUEUE (WS-NOME-TS)


NOHANDLE
END-EXEC.

IF EIBRESP NOT EQUAL DFHRESP (NORMAL)


ABENDAR

END-IF.

ULISSES & MORAES INFORMÁTICA - TI - 54 -


C I C S – COMMAND LEVEL Turma2011

46. Tratamento do Label ABEND

Criar na Work

/**-----------------------------------------------------------***

*** AREA DE MENSAGENS DE ERROS DO CICS - ABCODE ***

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

01 WS-MSG-ABEND.

03 FILLER PIC X(050) VALUE

'ABEND DO CICS NA EXECUCAO DO PROGRAMA - ABCODE = ('.

03 WS-ABCODE PIC X(004) VALUE SPACES.

03 FILLER PIC X(001) VALUE ')'.

ULISSES & MORAES INFORMÁTICA - TI - 55 -


C I C S – COMMAND LEVEL Turma2011

Criar na Procedure

/===============================================================*

998-99-ABEND SECTION.

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

EXEC CICS ASSIGN ABCODE (WS-ABCODE)

END-EXEC.

MOVE -1 TO M003-NR-CODL.

MOVE WS-MSG-ABEND TO M003-MSGI.

PERFORM 810-00-SEND-MAP-ERASE.

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

998-99-EXIT.

*-=-=-=-=-=-*

EXIT.

ABCODE – Contém o código de ABEND, serve para rotinas de tratamento de


erros.

Exemplos:

ASRA – Program Interrupt

AEY9 – ILLEGAL EXEC-CICS ON NON-CICS COMMAND

E muitos outros...

ULISSES & MORAES INFORMÁTICA - TI - 56 -


C I C S – COMMAND LEVEL Turma2011

47. Tratamento do Label ERROR

Criar na Work

/**-----------------------------------------------------------***

*** AREA DE MENSAGENS DE ERROS DO CICS - EIBRESP ***

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

01 WS-MSG-ERROR.

03 FILLER PIC X(047) VALUE

'PROBLEMAS NA EXECUCAO DO PROGRAMA - EIBRESP = ('.

03 WS-EIBRESP PIC 9(003) VALUE ZEROS.

03 FILLER PIC X(001) VALUE ')'.

ULISSES & MORAES INFORMÁTICA - TI - 57 -


C I C S – COMMAND LEVEL Turma2011

Criar na Procedure

/===============================================================*

999-99-ERROR SECTION.

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

MOVE EIBRESP TO WS-EIBRESP.

MOVE WS-MSG-ERROR TO M003-MSGI.

MOVE -1 TO M003-NR-CODL.

PERFORM 810-00-SEND-MAP-ERASE.

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

999-99-EXIT.

*-=-=-=-=-=-*

EXIT.

EIBRESP – Código de retorno do ultimo comando EXEC CICS executado.

Exemplos:

0013 – NOTFND 0014 – DUPREC

0016 – INVREQ 0019 – NOTOPEN

0020 – ENDFILE 0021 – ILLOGIC

0022 – LENGERR 0026 – ITEMERR

0027 – PGMIDERR 0036 – MAPFAIL

0070 – NOTAUTH

ULISSES & MORAES INFORMÁTICA - TI - 58 -


C I C S – COMMAND LEVEL Turma2011

48. Manuseio de teclas

No EIBAID Teremos o código da tecla que foi pressionada.

Para testar qual tecla foi pressionada, use o book 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.

Criar na Work

COPY DFHAID.

ULISSES & MORAES INFORMÁTICA - TI - 59 -


C I C S – COMMAND LEVEL Turma2011

Na Procedure Division

*===============================================================*

PROCEDURE DIVISION.

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

EXEC CICS HANDLE ABEND

LABEL (998-99-ABEND)

END-EXEC.

EXEC CICS HANDLE CONDITION

ERROR (999-99-ERROR)

END-EXEC.

IF EIBCALEN EQUAL ZEROS

PERFORM 010-00-INICIALIZA-TELA

END-IF.

MOVE DFHCOMMAREA TO COMMAREA-REGISTRO.

MOVE LOW-VALUES TO EAMS003O.

IF EIBAID EQUAL DFHCLEAR OR

DFHPA1 OR

DFHPA2

PERFORM 996-00-TRANS-ENCERRADA

END-IF.

IF EIBTRNID NOT EQUAL 'EA03'

PERFORM 010-00-INICIALIZA-TELA

END-IF.

ULISSES & MORAES INFORMÁTICA - TI - 60 -


C I C S – COMMAND LEVEL Turma2011

IF EIBAID EQUAL DFHPF8

IF COMMAREA-FASE EQUAL 2

PERFORM 620-00-AVANCA-PAGINA

END-IF

END-IF.

IF EIBAID EQUAL DFHPF7

IF COMMAREA-FASE EQUAL 2

PERFORM 610-00-VOLTA-PAGINA

END-IF

END-IF.

IF EIBAID EQUAL DFHPF3

PERFORM 950-00-RETORNA-CHAMADOR

END-IF.

IF EIBAID EQUAL DFHENTER

IF COMMAREA-FASE EQUAL 1 OR 2

PERFORM 080-00-TRATA-ENTER

END-IF

END-IF.

PERFORM 630-00-TECLA-INVALIDA.

Para testar qual tecla foi pressionada pelo usuário, devemos copiar o copybook
DFHAID na working-storage, e depois testar o campo EIBAID.

Essa é a técnica recomendada.

Pode também utilizar o recurso abaixo.

ULISSES & MORAES INFORMÁTICA - TI - 61 -


C I C S – COMMAND LEVEL Turma2011

EXEC CICS HANDLE AID PF1 (0150-00-TRATA-HELP)

PF2 (0250-00-TRATA-CONFIRMA)

PF3 (0350-00-TRATA-RETORNA)

PF4 (0450-00-TRATA-MENU)

PF12 (0550-00-TRATA-PESQ)

ENTER (0650-00-TRATA-ENTER)

CLEAR (0750-00-TRATA-ENCERRA)

ANYKEY (0850-00-TRATA-PF-INVALIDA)

END-EXEC.

ULISSES & MORAES INFORMÁTICA - TI - 62 -


C I C S – COMMAND LEVEL Turma2011

49. Manuseio de Atributos

No DFHBMSCA contém uma série de campos com todas as combinações possíveis de


atributo de campos.

Dessa forma podemos alterar o atributo default, movendo uma das combinações para
o campo com sufixo A.

Podemos também realizar um move do atributo direto.

Exemplo:

Move ‘A’ to M000-NOMEA.

‘A’ – UNP, ALF, NOR, FSET ou MDT

‘J’ – UNP, NUM, NOR, FSET ou MDT

‘/’ – PRO, ALF ou NUM, NOR, FSET ou MDT

‘1’ – ASK, ALF ou NUM, NOR, FSET ou MDT

‘I’ – UNP, ALF, BRI, FSET ou MDT

‘R’ – UNP, NUM, BRI, FSET ou MDT

Na working-Storage Section, devemos definir o COPY DFHBMSCA.

Na Procedure Division, podemos trabalhar como o exemplo acima, ou

Move DFHBMUNP TO M000-NOMEA.

Move DFHBMPRO TO M000-CODIGOA.

ULISSES & MORAES INFORMÁTICA - TI - 63 -


C I C S – COMMAND LEVEL Turma2011

Atributos CICS

Característica do Atributo Atributo EBCDIC Atributo Hex Code

UNP,ALF,NOR SPACE 40
UNP,ALF,NOR UNP,MDT A C1
UNP ,ALF,NOR,SEL D C4
UNP,ALF, NOR,SEL,MDT E C5

UNP,ALF,BRI,SEL H C8
UNP,ALF,BRI,SEL,MDT I C9
UNP,ALF,DRK < 4C
UNP,ALF,DRK,MDT ( 4D

UNP,NUM,NOR & 50
UNP,NUM,NOR,MDT J D1
UNP,NUM,NOR,SEL M D4
UNP,NUM,NOR,SEL,MDT N D5

UNP,NUM,BRI,SEL Q D8
UNP,NUM,BRI,SEL,MDT R D9
UNP,NUM,DRK * 5C
UNP,NUM,DRK,MDT ) 5D

PRO,ALF,NOR - 60
PRO, ALF,NOR,MDT / 61
PRO,ALF,NOR,SEL U E4
PRO,ALF,NOR,SEL,MDT V E5

PRO,ALF,BRI,SEL Y E8
PRO,ALF,BRI,SEL,MDT Z E9
PRO,ALF,DRK % 6C
PRO,ALF,DRK,MDT _ 6D

PRO,ASK,NOR 0 F0
PRO,ASK,NOR,MDT 1 F1
PRO,ASK,NOR,SEL,MDT 5 F5

PRO,ASK,BRI,SEL 8 F8
PRO,ASK,BRI,SEL,MDT 9 F9
PRO,ASK,DRK @ 7C
PRO,ASK,DRK,MDT QUOTE 7D

UNP DESPROTEGIDO ALF ALFANUMERICO NOR NORMAL SEL LIG PEN DETECT

PRO PROTEGIDO NUM NUMÉRICO BRI BRILHANTE MDT MDT ON

ULISSES & MORAES INFORMÁTICA - TI - 64 -


C I C S – COMMAND LEVEL Turma2011

50. COMMIT no CICS

Para efetivar as manutenções efetuadas no banco DB2 no ambiente CICS é

Necessário efetuar o comando abaixo:

EXEC CICS SYNCPOINT

END-EXEC.

51. ROLLBACK no CICS

Para desfazer as manutenções efetuadas no banco DB2 no ambiente CICS é

Necessário efetuar o comando abaixo:

EXEC CICS SYNCPOINT ROLLBACK

END-EXEC.

ULISSES & MORAES INFORMÁTICA - TI - 65 -


C I C S – COMMAND LEVEL Turma2011

52. CECI
STATUS: ENTER ONE OF THE FOLLOWING

ABend DEQ INquire RECeive STARTBr


ACquire DISAble ISsue RELease Suspend
ADdress DISCard Journal RESEtbr SYncpoint
ALlocate DUmp Link RESYnc Trace
ASKtime ENAble LOad RETRieve Unlock
ASSign ENDbr Monitor RETUrn Verify
Bif ENQ PErform REWrite WAIT
BUild ENTer POint ROute WAITCics
CAncel EXtract POP SENd WRITE
CHange FEpi POSt SET WRITEQ
COLlect FOrmattime PURge SIGNOFf Xctl
CONNect FREE PUSh SIGNON
CONVerse FREEMain Query SPOOLClose
CReate GDs READ SPOOLOpen
DELAy GEtmain READNext SPOOLRead
DELETE Handle READPrev SPOOLWrite
DELETEQ IGnore READQ START

PF 1 HELP 2 HEX 3 END 4 EIB 5 VAR 6 USER 9MSG

CECI – COMMAND LEVEL INTERPRETER

A transação CECI é uma poderosa ferramenta que o CICS oferece para auxílio à
programação. Com ela podemos verificar a sintaxe e executar quase todos os
comandos EXEC CICS sem a necessidade de escrever um programa.

A figura acima mostra a tela inicial da CECI.

ULISSES & MORAES INFORMÁTICA - TI - 66 -


C I C S – COMMAND LEVEL Turma2011

53. CEBR
CEBR TS QUEUE CEBRT001 RECORD 1 OF 0 COL 1 OF 0
ENTER COMMAND è
******************* TOP OF QUEUE ************************
***************** BOTTOM OF QUEUE **********************

TEMPORARY STORAGE QUEUE CEBRT001 DOES NOT EXIST


PF1:HELP PF2:SWITCH HEX/CHAR PF3:TERMINATE BROWSE
PF4:VIEW TOP PF5:VIEW BOTTOM PF6:REPEAT LAST FIND
PF7:SCROLL BACK HALF PF8:SCROLL FORWARD HALF PF9:UNDEFINED
PF10:SCROLL BACK FULL PF11:SCROLL FORWARD FULL PF12:UNDEFINED

CEBR – BROWSE TEMPORARY STORAGE / TRANSIENT DATA

A transação CEBR permite fazer consulta em filas TS e TD, com uma série de
facilidades.

Através da PF1 (HELP), temos uma lista de comandos que podemos utilizar para
consultar o conteúdo completo de filas.

ULISSES & MORAES INFORMÁTICA - TI - 67 -


C I C S – COMMAND LEVEL Turma2011

54. CEDF – EXECUTION DIAGNOSTIC FACILITY

O CEDF é uma transação fornecida com o CICS que facilita muito o trabalho de quem
está testando uma aplicação On-Line, é uma ferramenta com muitos recursos.

É muito fácil utilizá-la.

Basta digitar CEDF no terminal e pressionar a tecla ENTER.

Em seguida surgirá a mensagem informando que o terminal está em EDF.

A partir daí é só limpar a tela e chamar a transação para acompanhar sua execução.

O CEDF mostrará cada comando EXEC CICS da aplicação com uma série de
facilidades.

ULISSES & MORAES INFORMÁTICA - TI - 68 -


C I C S – COMMAND LEVEL Turma2011

TRANSACTION:UPDT PROGRAM:UPDTPGM TASK:0000038 APPLID:CICTST1 DISPLAY:00


STATUS: PROGRAM INITIATION

EIBTIME = 192146
EIBDATE = 02180
EIBTRNID = ‘UPDT’
EIBTASKN = 38
EIBTRMID = ‘4601’

EIBCPOSN = 4
EIBCALEN = 0
EIBAID = X’7D’ AT X’001400EA’
EIBFN = X’0000’ AT X’001400EB’
EIBRCODE = X’000000000000’ AT X’001400ED’
EIBDS = ‘........’
+ EIBREQID = ‘........’

ENTER: CONTINUE
PF1:UNDEFINED PF2:SWITCH HEX/CHAR PF3:END EDF SESSION
PF4:SUPPRESS DISPLAYS PF5:WORKING STORAGE PF6:USER DISPLAY
PF7:SCROLL BACK PF8:SCROLL FORWARD PF9:STOP CONDITIONS
PF10:PREVIOUS DISPLAY PF11:UNDEFINED PF12:UNDEFINED

ULISSES & MORAES INFORMÁTICA - TI - 69 -


C I C S – COMMAND LEVEL Turma2011

55. MÓDULO MESTRE – Subrotinas – API – MÓDULOS CICS

ULISSES & MORAES INFORMÁTICA - TI - 70 -


C I C S – COMMAND LEVEL Turma2011

56. MÓDULO MESTRE – APLICAÇÃO CICS

ULISSES & MORAES INFORMÁTICA - TI - 71 -

Você também pode gostar