Upload
adonix56
View
473
Download
12
Embed Size (px)
Citation preview
CICSNível Pleno
Curso CICS – Nível Pleno
Caro(a) Colaborador(a),
Seja bem vindo(a) ao Curso CICS – Nível Pleno Você está fazendo parte de um seleto grupo de profissionais que tem acesso a uma inovadora metodologia de transmissão de conhecimento.
O instrutor Nelson Teruya pertence ao nosso quadro de profissionais, é um especialista neste assunto e está habilitado para conduzir este curso.
O Gestor deste curso é o Oscar Gaspari, da área de Desenvolvimento de Pessoal ramal 115 e e-mail [email protected] que fará o acompanhamento e está à sua disposição para garantir o bom desenvolvimento do treinamento.
Desejamos um bom curso e um ótimo desempenho!
Flávio MarquesDiretor Regional SP/RJ
COPYRIGHT
document.doc 2 de 211
Curso CICS – Nível PlenoNenhuma parte deste material sem autorização prévia por escrito da Politec Ltda poderá ser reproduzida ou transmitida sejam quais forem os meios empregados: eletrônicos, mecânicos, fotográficos, gravações ou quasiquer outros. Todos os direitos estão reservados e protegidos pela Lei 5.988 de
14/12/1973.
document.doc 3 de 211
Curso CICS – Nível Pleno
Índice Geral
document.doc 4 de 211
1. Introdução........................
09
1.1 O que é o CICS?...............
10
1.2 Benefícios proc. on-line....
10
1.3 Introdução proc. on-line....
12
1.4 Resumo.............................
13
3 Regras e Funções..............
22
3.1 Regras sob o CICS..............
22
3.2 Cod. de função - EIB.........
24
3.3 Param. do EIB..................
27
3.4 Resumo ...........................
28
5. Fundamentos…................
41
5.1 Codificação.......................
41
5.2 Formato dos comandos......
41
5.3 Compilação Cobol..............
43
5.4 Passagem de 4
7. Depuração ......................
55
7.1 Push / Pop Handle.............
55
7.2 Abend / Dump...................
55
7.3 Bif....................................
57
7.4 5
9. Usando BMS-1.................
71
9.1 Definindo telas…...............
71
9.2 DFHMSD……..………...........
73
9.3 Resumo ...........................
76
9.4 7
2. Fluxo on-line...................
16
2.1 Ex. ambiente on-line........
16
2.2 Ambiente CICS..................
18
2.3 Algumas funções do CICS...
18
2.4 1
4. Componentes CICS...........
31
4.1 Módulos de Gerência.........
31
4.2 Tabelas.............................
35
4.3 Blocos de Controle.............
37
4.4 Resumo...........................
38
6 Comandos de Exceção........
47
6.1 Handle / Ignore Condition ..
47
6.2 Handle Aid / Abend............
51
6.3 Resumo ...........................
52
6.4 5
8. Envio de Texto.................
61
8.1 Receive.............................
61
8.2 Send.................................
65
8.3 Resumo ...........................
68
8.4 6
10 Usando BMS-2................
79
10.1 DFHMDI..,..................... 79
10.2 DFHMDF,,…..……...........
81
10.3 Resumo .........................
83
10.4 8
Curso CICS – Nível Pleno
document.doc 5 de 211
11. Conceitos de VSAM...........
85
11.1 Definindo arquivos..........
85
11.2 Operações permitidas.......
85
11.3 Integridade dos dados......
89
11.3 9
13. VSAM-Acesso direto-2......
99
13.1 Rewrite..........................
99
13.2 Delete............................
101
13.3 Unlock.. ........................
101
13.4 10
15. VSAM – Browse-2............
113
15.1 ReadPrev………….………....
113
15.2 ResetBr. ......................
115
15.3 Condições de erro...........
115
15.4 11
17. Controle de programa-1...
127
17.1 Tab. Assembler...............
127
17.2 Load..............................
129
17.3 Release .........................
129
17.4 13
19. Comandos de espera......
139
19.1 Delay.............................
139
19.2 Cancel............................
141
19.3 Post...............................
141
19.4 Wait...............................
143
19.5 Condições de 13
12. VSAM-Acesso direto-1.......
93
12.1 Read..............................
93
12.2 Write..............................
95
12.3 Resumo .........................
96
12.4 9
14. VSAM – Browse-1............
105
14.1 Startbr....…………………....
105
14.2 ReadNext ......................
107
14.3 EndBr.............................
107
14.4 11
16. Comandos de Navegação.
119
16.1 Link..............................
119
16.2 Return…………............
119
16.3 Xctl............................ 121
16.4 Nível 12
18. Controle de programa-2...
133
18.1 Start.............................
133
18.2 Retrieve.........................
135
18.3 Resumo ........................
136
18.4 13
20. Endereçamento............
149
20.1 Getmain.......................
149
20.2 Freemain......................
149
20.3 Assign..........................
151
20.4 Address..........................
151
Curso CICS – Nível Pleno
document.doc 6 de 211
21. Conceito de TS................
155
21.1 Armazenam/ Temporário.
155
21.2 Pseudoconversação.........
157
21.3 Resumo ........................
158
21.4 15
23. Operações com TS-2........
167
23.1 Deleção de TS...............
167
23.2 Regravação de TS.........
167
23.3 Condições de erro.........
169
23.4 17
25. Conceitos de TD..............
179
25.1 Armazenam. Transitório..
179
25.2 Gravação de TD...........
181
25.3 Resumo ........................
182
25.4 18
27. Manuseio de Datas.........
191
27.1 Asktime..................... 191
27.2 Formattime............... 191
27.4 Resumo……..................
194
27.5 19
22. Operações com TS-1........
161
22.1 Gravando TS..................
161
22.2 Lendo TS........................
163
22.3 Resumo ........................
164
22.4 16
24. Aplicação de TS..............
173
24.1 Modelo de mapa............
173
24.2 Paginação de mapas.......
175
24.3 Resumo ........................
176
24.4 17
26. Operações com TD..........
185
26.1 Leitura de TD...............
185
26.2 deleção de TD......... 187
26.3 Condições de erro.........
187
26.4 18
28. Envio de Mapas............
197
28.1 Send Map….................
197
28.2 Receive Map........... 201
28.3 Condições de erro.........
201
28.4 20
Curso CICS – Nível Pleno
Lista de Siglas
Sigla Significado
ABEND Abnormal End = Fim Anormal
BMS Basic Map Support
CI Control Interval
CICS Customer Information Control System
CPU Central Process Unit
CSA Common System Area
CWA Common Work Area
DB Data Base
DCT Destination Control Table
DSA Dynamic Storage Address
E/S Entrada/Saída
EIB Exec Interface Block
ESDS Entry Sequenced Data Set
FCP File Control Program
FCT File Control Table
FIOA File Input/Output Area
document.doc 7 de 211
Curso CICS – Nível Pleno
Sigla Significado
IC Interval Control
ICP Interval Control Program
I/O Input/Output
KCP Task Control Program
KSDS Key Sequenced Data Set
LUW Logical Unit of Work
MDT Modified Data Tag
PCP Program Control Program
PCT Program Control Table
PPT Processing Program Table
RBA Relative Byte Address
RRDS Relative Record Data Set
RRN Relative Record Number
SCP Storage Control Program
document.doc 8 de 211
Curso CICS – Nível Pleno
Sigla Significado
TCA Terminal Control Area
TCP Terminal Control Program
TCT Terminal Control Table
TD Transient Data
TDP Transient Data Program
TIOA Terminal Input Output Area
TS Temporary Storage
TSP Terminal Storage Program
VSAM Virtual Storage Access Method
WS Working-Storage Section
document.doc 9 de 211
Curso CICS – Nível Pleno
document.doc 10 de 211
Prefácio
Este curso tem por objetivo capacitar profissionais de informática da área de mainframe (programadores, analistas de sistemas), para desenvolverem aplicações on-line usando a ferramenta CICS.
Serão apresentados os conceitos e componentes inerentes ao produto e os comandos que permitirão o uso das suas principais funções, voltadas para a linguagem Cobol.
O CICS foi criado em 1968 e transformado em programa-produto IBM em 1969, sua primeira versão.
Ele é um monitor para gerenciamento de teleprocessamento de
estrutura modular.
Curso CICS – Nível Pleno
Módulo 01
1. Introdução
1.1 O que é CICS?
O CICS (Customer Information Control System) é um conjunto de vários módulos/programas de gerenciamento, desenvolvido pela IBM, que forma um sistema de comunicação de dados. Ele permite que os dados entrados num terminal sejam processados, bancos de dados sejam acessados e por fim as informações solicitadas sejam transmitidas ao terminal de origem. É necessário um software de telecomunicações e um ou mais métodos de acesso. Linguagens de programação são suportadas (Cobol, Assembler, PL/I). Esse sistema recebe a denominação de “processamento on-line”.
1.2 Benefícios do processamento on-line
Redução do tempo de acesso e atualização das informações;
Agilização no processo geral da empresa, proporcionando a satisfação do cliente;
Facilita a tomada de decisão gerencial.
Diminui o uso de relatórios em papel;
Maior segurança e seletividade no acesso a informações confidenciais;
1.3 Introdução ao Processamento On-line
Processamento on-line é o recebimento de informações de um terminal, manipulação das mesmas e envio de uma resposta ao usuário. E tudo isso deve ser feito em questão de segundos!
O CICS funciona como um Job sendo executado em uma região de memória. Podemos ter diversas regiões CICS trabalhando e distribuindo a carga de processamento através de facilidades de comunicação.
Atua como interface entre o Sistema Operacional e os programas de aplicação; efetua as funções de controle; Gerencia as tarefas e a memória.
document.doc 11 de 211
OBSERVAÇÃO: Um CICS pode comunicar-se com outros CICS residentes na mesma CPU, em CPUs diferentes, e mesmo em localidades diversas do planeta.
Curso CICS – Nível Pleno
Módulo 01
document.doc 12 de 211
Citação
Existem diferenças marcantes entre o processamento “batch” e o “on-line”;Para este último ficam as consultas na tela e atualizações imediatas;
Para aquele cabem as atualizações em massa e os relatórios extensos.
Curso CICS – Nível Pleno
Módulo 01
1.4 - Batch x On-line:
Batch On-line
Quem abre os arquivos Programa de aplicação CICS
Quem é o dono da partição Programa de aplicação CICS
Como é o acesso seqüencial Muito Pouco
Como é o acesso randômico PoucoMuito
Como são os relatórios Extensos Resumidos
Reg. processados cada rodada Vários Poucos
Como o programa roda IsoladoConcorrentemente
Como são os recursos Todos ficam à disposiçãoCompartilhados
Ação do usuário Solicita o serviço e recebe um Aciona e relato do resultado da
acompanha a execução, que ocorreexecução ao vivonormalmente à noite
document.doc 13 de 211
Curso CICS – Nível Pleno
Módulo 01
Resumo
Foi descrito o que é o CICS e os benefícios que ele proporciona;
Foi dada uma introdução ao processamento on-line e foram apresentadas as diferenças existentes entre o processamento Batch e o On-line;
document.doc 14 de 211
Curso CICS – Nível Pleno
Módulo 01
Glossário
Job – Conjunto de cartões de controle para execução de um ou mais programas em processamento batch.
Batch – Processamento tradicional, off-line, ou seja, sem o acompanhamento direto do usuário.
On-line – Processamento interativo, a partir de um terminal do usuário.
Sistema – Conjunto de programas que permite ao computador executar as Operacional operações essenciais de I/O, cálculos, movimentação, etc.
document.doc 15 de 211
Curso CICS – Nível Pleno
Módulo 01
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop - [email protected]
document.doc 16 de 211
Curso CICS – Nível Pleno
Módulo 02
2. Fluxo on-line
2.1 EXEMPLO DE AMBIENTE ON-LINE:
document.doc 17 de 211
TRN1CONSULTA(Usuario1)
TRN2INCLUSAO(Usuario2)
TRN3ALTERACAO(Usuario3)
PROGRAMA1
PROGRAMA2
ARQUIVO1
Tela 1xxxxxxxxxxx
Tela 2yyyyyyyyyyy
Tela 3yyyyyyyyyyy
ATENÇÃO: O CICS cria uma unidade de serviço chamada Tarefa (Task);
Curso CICS – Nível Pleno
Módulo 02
document.doc 18 de 211
Citação
O CICS controla o compartilhamento de recursosdentro da região onde opera, e vários programas
podem acessar um mesmo arquivo simultaneamente.
Curso CICS – Nível Pleno
Módulo 02
2.2 AMBIENTE DO CICS
TRANSAÇÃO (ENTRADA NUM TERMINAL):
DC (VTAM)
DB (VSAM, DB2)
ARQUIVOS
E BANCO DE DADOS
2.3 - Algumas funções do CICS:
Cria uma unidade de serviço chamada Tarefa (Task);Aceitar dados logo que estes estejam prontos para transmissão;Registra de qual terminal vieram os dados;Chama o programa correspondente e passa ao mesmo os dados;Controla o compartilhamento de recursos dentro da região; enquanto umatransação estiver numa condição de espera, por ex. aguardando uma operação de E/S, outra transação pode ser processada.Vários programas podem acessar um mesmo Arquivo ou Banco de Dados, simultaneamente.
document.doc 19 de 211
SISTEMA OPERACIONAL
REGIÃO CICS NÚCLEO: CSA, CWA, Tabelas (TCP, TCT, PCP, etc.) DSA TASK1: TASK2/TASK3:
TRN1 17112004
IDENTIFICAÇÃO DA TRANSAÇÃO
(DADOS) PGM1WS1
PGM2WS2 / WS3
Curso CICS – Nível Pleno
Módulo 02
Resumo
Foram exibidos exemplos de ambiente On-line e fluxo das informações, sob o controle do CICS;
Foi descrito o funcionamento do CICS num nível Macro e suas principais funções;
document.doc 20 de 211
Curso CICS – Nível Pleno
Módulo 02
Glossário
Task – Tarefa sendo executada na memória
Transação – Código pelo qual uma tarefa é solicitada no terminal.
document.doc 21 de 211
Curso CICS – Nível Pleno
Módulo 02
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop - [email protected]
document.doc 22 de 211
Curso CICS – Nível Pleno
Módulo 03
3 Regras e Funções
3.1 Regras a serem observadas na programação sob o CICS:
Os programas devem ser curtos e relativamente simples. Evitar programas grandes;
Restrições de tamanho - Programa à 512K, Working-Storage à 64K, Linkage à 32K;
Ao encerrar uma aplicação o controle deve retornar para o CICS;
Não pode haver modificação dinâmica das instruções (programa re-entrante).
São proibidas instruções de E/S à Accept, Display, Open, Close, Read, Write, etc.,
Ao tratar Tabelas, cuidado para não estourar o número de ocorrências, pois será invadida uma área que não lhe pertence com resultados imprevisíveis;
document.doc 23 de 211
ATENÇÃO: No Cobol, não são codificadas as “Section”: Configuration,
Input-Output, File.
Curso CICS – Nível Pleno
Módulo 03
document.doc 24 de 211
Citação
Daremos a lista completa de comandos CICS e seus respectivos códigos,porém alguns desses comandos não serão vistos neste curso;
eles serão vistos apenas no Curso de CICS Nível Senior.
Curso CICS – Nível Pleno
Módulo 03
3.2 – Códigos de função do EIB:
FUNÇÃO------------------- CÓDIGO FUNÇÃO------------------ CÓDIGO
ADDRESS 02 02 READ 06 02 HANDLE CONDITION 02 04 WRITE 06 04 HANDLE AID 02 06 REWRITE 06 06 ASSIGN 02 08 DELETE 06 08 IGNORE CONDITION 02 0A UNLOCK 06 0A PUSH 02 0C STARTBR 06 0C POP 02 0E READNEXT 06 0E RECEIVE 04 02 READPREV 06 10 SEND 04 04 ENDBR 06 12 CONVERSE 04 06 RESETBR 06 14 ISSUE EODS 04 08 WRITEQ TD 08 02 ISSUE COPY 04 0A READQ TD 08 04 WAIT TERMINAL 04 0C DELETEQ TD
08 06 ISSUE LOAD 04 0E WRITEQ TS 0A 02 WAIT SIGNAL 04 10 READQ TS 0A 04 ISSUE RESET 04 12 DELETEQ TS 0A 06 ISSUE DISCONNECT 04 14 GETMAIN 0C 02 ISSUE ENDOUTPUT 04 16 FREEMAIN
0C 04 ISSUE ERASEAUP 04 18 LINK 0E 02 ISSUE ENDFILE 04 1A XCTL 0E 04 ISSUE PRINT 04 1C
LOAD 0E 06 ISSUE SIGNAL 04 1ERETURN 0E 08 ALLOCATE 04 20
RELEASE 0E 0A FREE 04 22 ABEND 0E 0C POINT 04 24 HANDLE ABEND 0E 0E BUILD ATTACH 04 26
ASKTIME 10 02 EXTRACT ATTACH 04 28 DELAY 10 04 EXTRACT TCT 04 2A POST 10 06 WAIT CONVID 04 2C
START 10 08 EXTRACT PROCESS 04 2E RETRIEVE 10 0A ISSUE ABEND 04 30 CANCEL 10 0C CONNECT PROCESS 04 32 WAIT EVENT 12 02 ISSUE
CONFIRMATION 04 34 END 12 04 ISSUE ERROR 04 36 DEQ 12 06 ISSUE PREPARE 04 38 SUSPEND 12 08 ISSUE PASS 04 3A EXTRACT LOGONSMG 04 3C
document.doc 25 de 211
Curso CICS – Nível Pleno
Módulo 03
Códigos de função do EIB (continuação):
FUNÇÃO------------------- CÓDIGO FUNÇÃO------------------ CÓDIGO
ADDRESS 14 02 READ 50 02 HANDLE CONDITION 14 04 WRITE 50 04 HANDLE AID 16 02 REWRITE 52 06 ASSIGN 18 02 DELETE 52 08 IGNORE CONDITION 18 04 UNLOCK 52 0A PUSH 18 06 STARTBR 54 0C POP 18 08 READNEXT 54 0E RECEIVE 18 0A READPREV 56 10 SEND 18 0C ENDBR 56 12 CONVERSE 18 0E RESETBR 56 14 ISSUE EODS 18 10 WRITEQ TD 58 02 ISSUE COPY 18 12 READQ TD 58 04 WAIT TERMINAL 18 0C DELETEQ TD
5A 06 ISSUE LOAD 18 0E WRITEQ TS 5A 02 WAIT SIGNAL 18 10 READQ TS 5A 04 ISSUE RESET 18 12
ISSUE DISCONNECT 1A 02 ISSUE ENDOUTPUT 1A 04
ISSUE ERASEAUP 1C 02 ISSUE ENDFILE 1E 02 ISSUE PRINT 1E 04 ISSUE SIGNAL 1E 06 ALLOCATE 1E 08 FREE 1E 0A
POINT 1E 0D BUILD ATTACH 1E 0E EXTRACT ATTACH 1E 10
EXTRACT TCT 1E 12 WAIT CONVID 1E 14 EXTRACT PROCESS 20 02 ISSUE ABEND 4A 02 CONNECT PROCESS 4A 04
ISSUE CONFIRMATION 4C 02 ISSUE ERROR 4C 04 ISSUE PREPARE 4E 02 ISSUE PASS 4E 04
document.doc 26 de 211
Curso CICS – Nível Pleno
Módulo 03
document.doc 27 de 211
Citação
O EIB contém um conjunto de palavras reservadas,cada uma delas contendo uma informação dinâmica
dos blocos de controle do CICS.
Curso CICS – Nível Pleno
Módulo 03
3.3 - Exec Interface Block ( EIB ):
NOME---- HEX OFFSET TAMANHODESCRIÇÃO----------------------------------------
EIBTIME 00 4 Hora de início da task EIBDATE 04 4 Data de início da task EIBTRNID 08 4 Identificação da transação EIBTASKN 0C 4 Número da task EIBTRMID 10 4 Identificação do terminal associado EIBREIGDI 14 2 EIBCPOSN 16 2 Posição do cursor no último Receive EIBCALEN 18 2 Tamanho da COMMAREA EIBAID 1A 1 Representação “hexa” da tecla pressionada EIBFN 1B 2 Código da última função executada EIBRCODE 1D 6 Código de Retorno do último comando EIBDS 23 8 Nome do último arquivo referenciado EIBREQID 2B 8 Contém o valor assinalado em um comando de Interval Control EIBRSRCE 33 8
Código do último recurso de I/O usado EIBRSYNC 3B1 Indica que o programa deve fazer um
Syncpoint ou terminar EIBFREE 3C1 O programa deve liberar a área ou encerrar EIBRECV3D 1 Ainda há dados a serem recebidos (RECEIVE)
EIBSEND 3E 1 EIBATT EF 1 Indica que a RU contém “atach header data” EIBEOC 40 1 Indica que um “end-of-chain” ocorreu na RU EIBFMH 41 1 Indica que os dados recebidos ou acessados contem um FMH
EIBCOMPL 42 1 Indica que o comando Receive foi completado EIBSIG 43 1
Indica que o SIGNAL foi recebido EIBCONF 441 Foi recebida a confirmação da requisição EIBERR45 1 Um erro foi recebido numa conversação APPC
EIBERRCD 46 4 Contém o código do EIBERR EIBSYNRB 4A 1 Indica que o progr. pode fazer um Rollback EIBNODAT 4B 1 Não foram enviados dados no SEND EIBRESP 4D 4 Resposta a um comando do CICS (numérico, decimal, = 3º byte do EIBRCODE) EIBRESP2 51 4 Complemento do EIBRESP EIBRLDBK 55 1 Indica Rollback
document.doc 28 de 211
Curso CICS – Nível Pleno
Módulo 03
Resumo
Foram abordadas as regras que devem ser observadas para que uma boa performance seja alcançada.
Por último foi exibido um quadro com todos os comandos do CICS e a descrição do EIB.
document.doc 29 de 211
Curso CICS – Nível Pleno
Módulo 03
Glossário
Re-entrante – Diz-se do programa que não pode ser modificado na memória.
Linkage – Área externa ao Programa.
document.doc 30 de 211
Curso CICS – Nível Pleno
Módulo 03
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop - [email protected]
document.doc 31 de 211
Curso CICS – Nível Pleno
Módulo 04
4. Componentes CICS
. MÓDULOS DE GERÊNCIA;
. TABELAS;
. BLOCOS DE CONTROLE.
4.1 – Módulos de Gerência:
São programas do CICS que fazem interface com os programas de aplicação, executa as operações de E/S e outras funções especiais. São carregados na CSA (Commom System Área). São as seguintes:
TCP – Terminal Control Program
Define as características dos terminais;
Métodos de acesso: BTAM, VTAM;
Controla as comunicações com os terminais na rede;
Faz o “polling” dos terminais;
Inicia as transações, verifica na TCT se para aquele terminal já existe uma task “atachada”;
Provê a retirada ou inserção dos caracteres de controle de transmissão de uma mensagem;
Faz a transferência de informações do Program, para o Terminal e vice-versa;
SCP – Storage Control Program
KCP – Task Control Program
Permite o monitoramento do uso de recursos pelas tasks, fazendo com que o Recurso seja usado em série (não concorrentemente);
document.doc 32 de 211
LEMBRETE: Todas as funções executadas pelo TCP são transparentes
aoPrograma de aplicação.
Curso CICS – Nível Pleno
Módulo 04
document.doc 33 de 211
Citação
A parte mais difícil das operações de E/S é feita pelo CICSatravés dos módulos de gerência;
cada um deles realiza uma função especial.
Curso CICS – Nível Pleno
Módulo 04
PCP – Program Control Program
Localiza programas e carrega-os, se necessário, passando o controle a eles;
Facilita a passagem de dados de um programa a outro;
Carga e liberação de uma Tabela;
Otimiza a memória, via única cópia de programa (várias cópias da WS);
FCP – File Control Program
Abre e fecha arquivos;
Métodos de acesso: VSAM, DB2;
Recupera registros (leitura), deblocando-os;
Permite consulta, adição, atualização e deleção de registros;
Trata operação concorrente e evita atualização simultânea;
ICP – Interval Control Program
Fornece acesso Hora e Data e permite ao programa de aplicação a capacidade de iniciar uma nova tarefa a um dado intervalo de tempo;
TSP – Temporary Storage Program
Gerencia a memória temporária, fornecendo recurso para armazenamento Intermediário;
Permite a recuperação dos dados na memória intermediária, por vários programas de aplicação;
TDP – Transient Data Program
Fornece um meio de armazenamento intermediário para que dados criados por uma ou mais tarefas sejam processados por outra;
document.doc 34 de 211
Curso CICS – Nível Pleno
Os dados são gravados em destinos definidos na DCT, e são processados de maneira seqüencial;
document.doc 35 de 211
Curso CICS – Nível Pleno
Módulo 04
document.doc 36 de 211
Citação
As tabelas do CICS estão funcionalmente associadas aos módulos de gerência;Por exemplo, ao ser emitido um comando de gravação,
O FCP toma o controle e acessa a FCT,para obter as características do arquivo em questão.
Curso CICS – Nível Pleno
Módulo 04
4.2 – Tabelas do CICS:
As tabelas do CICS são:
FCT – File Control Table
Os Programas CICS Cobol não usam a “FILE SECTION”, não especificam “FD”, e não usam os comandos “OPEN” e “CLOSE”; todas as informações a respeito dos arquivos são informadas na tabela FCT.
Normalmente são usados arquivos com método de acesso VSAM KSDS.
PCT – Program Control Table
O CICS trabalha com Transações; uma vez ativada uma Transação, o CICS precisa saber qual é o Programa associado a ela; Esta informação está na PCT.
PPT – Processing Program Table
Cada Programa ou Mapa criado para o CICS, deverão ter seus nomes incluídos na tabela PPT.
Contém: Nome do programa, localização na biblioteca, linguagem, contador de uso;
TCT – Terminal Control Table
Esta tabela relaciona os terminais disponíveis para serem utilizados pelo CICS.
Cada tabela é um conjunto de Macro instruções Assembler, compilada e catalogada; Cada CICS definido (Teste1, Teste2, Homologação, Produção, etc.) deve ter seu conjunto tabelas.
DCT – Destination Control Table
Esta tabela define o uso de dados transitórios.
document.doc 37 de 211
Curso CICS – Nível Pleno
Módulo 04
document.doc 38 de 211
Citação
As informações dispostas nos blocos de controle (pointers, etc.)São trazidas para a WS pelo EIP (Exec Interface Program).
Curso CICS – Nível Pleno
Módulo 04
4.3 – Blocos de Controle:
Contém informações de sistema.
TCA – Task Control Area
Quando uma transação é iniciada um bloco de controle é criado (TCA). Contém informações pertinentes à Tarefa, como indicadores (pointers) de localização para o programa de aplicação e para a entrada do terminal na TCT.
FIOA – File I/O Área
Informações de um registro.
TIOA – Terminal I/O Área
Onde são dispostas as mensagens de Terminal.
document.doc 39 de 211
Curso CICS – Nível Pleno
Módulo 04
Resumo
Cada componente do CICS é gerado através da codificação de Macros Assembler, as quais são catalogadas.
Antes de um programa ser testado todos os componentes deverão ter sido criados no ambiente de Desenvolvimento. Por ocasião da implantação da transação em Produção todos os componentes deverão ter sido transferidos para o ambiente de Produção.
document.doc 40 de 211
Curso CICS – Nível Pleno
Módulo 04Glossário
Método de acesso – Conjunto de programas de controle que gerenciam as funções e interpretam os protocolos de um dispositivo de E/S.
“Polling” – Escalonamento.
“Atachar” – Dedicar.
document.doc 41 de 211
Curso CICS – Nível Pleno
Módulo 04Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop - [email protected]
document.doc 42 de 211
Curso CICS – Nível Pleno
Módulo 05
5. Fundamentos
5.1 - Codificação:
Macro Level:
É a codificação em nível de Macro-instruções (assembler) ou Comandos CALL (Cobol);
Command Level:
É a codificação utilizando-se de Keyword’s iniciando por “EXEC CICS”, seguido dos parâmetros (obrigatórios ou opcionais) e terminando por um delimitador (END-EXEC, no Cobol).
5.2 – Formato dos comandos:
Parâmetros dos comandos, na linguagem Cobol:
EXEC CICS à IniciadorRECEIVE à FunçãoINTO (WS-CAMPO) à Opção (Argumento)
LENGTH (WS-TAM) à Opção (Argumento)[RESP (WS-RESP)] à Opção (Argumento) - opcional
END—EXEC à Delimitador final
Argumentos:
Data-value - Valor numérico ou alfanuméricoData-area - Campo definido na WS
Halfword à PIC S9(04) COMP (Length)Word à PIC S9(09) COMPDoubleword à PIC S9(18) COMPPointer - Word ou USAGE POINTER (Bll Cell)
Label - Nome de parágrafoDate, Time -
document.doc 43 de 211
LEMBRETE: Algumas opções de comandos CICS não possuem
argumento.
Curso CICS – Nível Pleno
Módulo 05
document.doc 44 de 211
Citação
O segredo da pseudo-conversação está na COMMAREA.
Na primeira execução EIBCALEN será igual a zero e utilizaremosa COMMAREA na WS para passagem de dados.
Nas demais execuções EIBCALEN será maior que zeroe haverá dados sendo recebidos no campo DFHCOMMAREA, na Linkage.
Curso CICS – Nível Pleno
Módulo 05
5.3 - Compilação de Programas Cobol:
Os programas CICS Command Level necessita passar por uma fase preparatória, antes da compilação. Essa fase recebe o nome Translator.
O Translator é um prÉ-processador que traduz os comandos EXEC CICS para MOVE’s e CALL’s. Ele também inclui algumas áreas de trabalho na WS e na Linkage.
5.4 - Passagem de dados para outra tarefa:
Para enviar dados para outra “task” usamos uma área de comunicação chamada COMMAREA. No programa que passa os dados essa área é definida na WS, e pode Ter qualquer nome.
No programa que recebe, os dados são passados na Linkage, numa área chamada DFHCOMMAREA. O tamanho da área recebida deve ser o mesmo da área envida.
Se a COMMAREA não for passada, seu tamanho será zero, portanto EIBCALEN será igual a zero.
Exemplo:
ID DIVISION.PROGRAM-ID. EXE1PGM.
WORKING-STORAGE SECTION.01 W-COMMAREA.
05 WS-CAMPO1 PIC X(02) VALUE ‘C1’.05 WS-CAMPO2 PIC 9(04).
LINKAGE SECTION.01 DFHCOMMAREA.
05 LK-CAMPO1 PIC X(02).05 LK-CAMPO2 PIC 9(04).
PROCEDURE DIVISION.IF EIBCALEN EQUAL ZEROS
MOVE 9999 TO WS-CAMPO2EXEC CICS RETURN
TRASID (EXE1)COMMAREA (WS-COMMAREA)LENGTH (06)
END-EXECEND-IF
. . .
document.doc 45 de 211
Citação
O EIB (Exec Interface Block) é a primeira área da LINKAGEE é suprida em tempo de execução com informações essenciais
Extraídas dos blocos de controle do CICS.
Curso CICS – Nível Pleno
Módulo 05
Resumo
Foi mostrada a diferença da codificação em “macro level” e em “command level”, e também foi descrito o formato dos comandos e seus argumentos;
Foram mostradas as fases de uma compilação, e como se passa parâmetros de uma “task” para a próxima “task;
Por fim foi exibido o conteúdo da EIB (Exec Interface Block).
document.doc 46 de 211
Curso CICS – Nível Pleno
Módulo 05Glossário
Codificação– Escrita de um programa por meio de palavras-chave.
document.doc 47 de 211
Curso CICS – Nível Pleno
Módulo 05
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop - [email protected]
document.doc 48 de 211
Curso CICS – Nível Pleno
Módulo 06
6. Comandos de Exceção
HANDLE CONDITION / IGNORE CONDITION
HANDLE AID / HANDLE ABEND
6.1 - HANDLE CONDITION / IGNORE CODITION:
Handle Condition:
EXEC CICS HANDLE CODITION OPCAO01 (LABEL-H01) . . . . . . . . . . . . . . . . . . . . .
OPCAO16 (LABEL-H16)
END-EXEC
Este comando serve para pré-estabelecer o nome de rotinas de manuseio das condições de exceção (até 16). Ocorrendo a condição será feito um desvio automático para a rotina especificada.
Exemplo:
EXEC CICS HANDLE CODITION INVREQ (80-010-TRATA-INV-REQ) NOTFND (80-020-TRATA-NAO-
ACHOU) LENGERR (80-030-TRATA-ERRO-TAM)PGMIDERR (80-040-TRATA-NAO-
ACHOU) LENGERR (80-050-TRATA-ERRO-TAM)ERROR (80-090-TRATA-ERRO-
OUTROS END-EXEC
Ignore Condition:
EXEC CICS IGNORE CODITION OPCAO01 . . . . . . . . . . . . . . . . . . . . OPCAO16
END-EXEC
Este comando determina que sejam ignoradas as condições especificadas e deixe o programa continuar. Condições tratadas num HANDLE CONDITION anterior serão resetadas.
Módulo 06
document.doc 49 de 211
Curso CICS – Nível Pleno
document.doc 50 de 211
Citação
e antes do “IGNORE CODITION”, se houver erro, uma rotina específica será acionada, se informada, senão
a rotina correspondente à condição de “ERROR” será acionada, se informada, programa prosseguirá, podendo cancelar.
Citação
Procurar padronizar as PF’s relativas a funções padrão(sempre a mesma PF para a mesma função), por exemplo,
PF1=’Help’, PF3=Volta ao pgm.chamador, PF7/PF8=paginação, etc.
Curso CICS – Nível Pleno
Módulo 06
Exemplo:
. . . . . . . . . . . . . .
EXEC CICS IGNORE CODITION INVREQERROR
END-EXEC
Ao executar um Comando o CICS, após o “HANDLE CONDITION” e antes do “IGNORE CODITION”, se houver erro, uma Rotina específica será acionada, se especificada, senão “80-090-TRATA-ERRO-OUTROS” será acionada.
Se a execução ocorrer após o “IGNORE CODITION”, se houver erro, exceto INVREQ, uma Rotina específica será acionada, se especificada, senão o programa prosseguirá, podendo ocorrer cancelamento .
Se, num determinado Comando quisermos desativar o teste de HANDLE CONDITION, usar a opção NOHANDLE, e testar o EIBRESP.
Pode-se também usar a opção RESP, e testar o campo da Working-Storage.
document.doc 51 de 211
DICA: Em alguns casos, quando a informação do EIBRESP não for suficientemente esclarecedora, na exceção INVREQ, por exemplo, o CICS traz o campo EIBRESP2 para maiores detalhes.
Curso CICS – Nível Pleno
Módulo 06
6.2 - HANDLE AID / HANDLE ABEND:
EXEC CICS HANDLE AID PF1 (LABEL-F01)
. . . . . . . . . . . . . . . . . . . . . . PF12 (LABEL-F12)
PA1 (LABEL-A01)ENTER (LABEL-ENT)CLEAR (LABEL-CLR)
ANYKEY (LABEL-ANY)
END-EXEC
Usada para manuseio de teclas. A opção ANYKEY significa qualquer tecla exceto o ENTER. Se o RECEIVE tiver a opção RESP ou NOHANDLE, o HANDLE AID será ignorado
Para apenas se saber qual a Função foi teclada, execute EXEC CICS RECEIVE END-EXEC
tiver e então teste o campo EIBAID (do book DFHAID).
Se ocorrer simultaneamente uma condição prevista, no HANDLE CONDITION e uma outra codificada no HANDLE AID, esta última terá a preferência.
Handle Abend:
EXEC CICS HANDLE ABEND [PROGRAM (pgmname) / LABEL (Trata-Abend) /
CANCEL / RESET]
END-EXEC
Para devolver o controle para o programa, quando deveria ocorrer um cancelamento.
document.doc 52 de 211
Curso CICS – Nível Pleno
Módulo 06
Resumo
Foram descritos os comandos de tratamento de teclas com seus parâmetros; foram exemplificados os mesmos;
Foram também descritos os comandos de tratamento de exceções com seus parâmetros, e foram também exemplificados;
document.doc 53 de 211
Curso CICS – Nível Pleno
Módulo 06
Glossário
Cancelamento – Ocorre quando, devido alguma irregularidade, interna ou externa ao programa, este não pode prosseguir até seu fim normal.
document.doc 54 de 211
Curso CICS – Nível Pleno
Módulo 06
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop - [email protected]
document.doc 55 de 211
Curso CICS – Nível Pleno
Módulo 07
7. Depuração
PUSH HANDLE / POP HANDLE
ABEND / DUMP
BIF
7.1 - PUSH HANDLE / POP HANDLE:
EXEC PUSH HANDLE END-EXEC
Suspende todos os HANDLE / IGNORE.
EXEC POP HANDLE END-EXEC
Reativa todos os HANDLE / IGNORE que foram suspensos.
7.2 - ABEND / DUMP:
Abend:
EXEC CICS ABENDABENDCODED (XXXX)·
END-EXEC
Gera um cancelamento com código XXXX, com Dump.
Dump:
EXEC CICS DUMP DUMPCODE (xxxx) [DUMPID(Area)][FROM (Area) LENGTH (Tamanho da Area)] [COMPLETE]
[TASK] [STORAGE] [PROGRAM][TERMINAL][TABLES] [SIT/TRT/PCT/PPT/TCT/PCT/DCT]
END-EXEC
Gera um Dump de memória com código XXXX, da área especificada.
Condição de erro: LENGERR;
document.doc 56 de 211
Curso CICS – Nível Pleno
Módulo 07
document.doc 57 de 211
Citação
O comando BIF também deve ser usado só em teste;com ele nós podemos simular um “trace” do programa,
e acompanhar detalhadamente os parágrafos por onde o fluxo passou,e o conteúdo dos campos básicos para solução do problema.
Curso CICS – Nível Pleno
Módulo 07
7.3 – BIF:
Bif:
EXEC CICS BIF DEEDITFIELD (WS-CAMPO)LENGTH (value) / (LENGTH OF WS-CAMPO)
END-EXEC
Condição de erro: LENGERR;
Exemplos:
EXEC CICS BIF DEEDITFIELD (WS-CONTG)
LENGTH (9) END-EXEC
Antes da execução Após a execução 14-6704/B 00146704B$25.68 0000025687654321- 00765432J
O Bif Deedit faz o seguinte: Os caracteres alfabéticos e os especiais são removidos, e os demais são convertidos em zeros; zeros à esquerda são adicionados para completar o tamanho do campo; O sinal ‘-‘ acarretará que no último byte seja forçado “D” no meio-byte de zona.
(Obs.: 1 X’F1’; 1- à X’D1’ que é a representação EBCDIC do caracter ‘J’)
document.doc 58 de 211
ATENÇÃO: Dump, Abend e BIF’, são usadas emambiente de Teste e, sendo removidas ouinibidas antes da implantação, no ambiente de Produção.
Curso CICS – Nível Pleno
Módulo 07
Resumo
Foram abordados comandos de cancelamento e de trace de programa.
Foram descritas as ferramentas de depuração de programa, tais como:Dump, Abend e BIF’, as quais são usadas em ambiente de teste para ajudara descobrir problemas que de outra formas seria dificultoso.
document.doc 59 de 211
Curso CICS – Nível Pleno
Módulo 07
Glossário
Dump – Representação hexadecimal de uma área
document.doc 60 de 211
Curso CICS – Nível Pleno
Módulo 07
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop - [email protected]
document.doc 61 de 211
Curso CICS – Nível Pleno
Módulo 08
8. Envio de Texto
RECEIVESEND
8.1 - RECEIVE:
EXEC CICS RECEIVE {INTO (WS-REC-AREA) /
SET (LK-REC-AREA-PTR)} LENGTH (WS-REC-TAM)
[RESP (WS-REC-RESP)]
END-EXEC
- INTO - Área da WS para onde serão movidos os dados da TIOA.
- SET - Opcionalmente a área receptora poderá estar localizada na Linkage, usar a opção SET que referencia um Pointer (doubleword) onde deve estar o endereço da área onde os dados serão recebidos.
- LENGTH - Referencia um campo (word) da WS onde deve estar o tamanho da área de dados.
- RESP - Referencia um campo (doubleword) da WS onde é colocado o EIBRESP.
Exemplos:
WORKING-STORAGE SECTION.
01 WS-AREAS. 05 WS-REC-TAM PIC S9(04) COMP VALUE +25.
05 WS-REC-RESP PIC S9(09) COMP.05 WS-REC-MENS PIC X(50) VALUE SPACES.
01 WS-REC-AREA.05 WS-TRAN PIC X(04).
05 WS-SEPARATOR PIC X(01).05 WS-DADOS PIC X(20).
EXEC CICS RECEIVE INTO (WS-REC-AREA) LENGTH (WS-REC-TAM) RESP (WS-REC-RESP)
END-EXEC
document.doc 62 de 211
Curso CICS – Nível Pleno
Módulo 08
document.doc 63 de 211
Citação
Os dados entrados pelo operador num terminal está na TIOA. Para o programa de aplicação
obtê-los deverá ser codificado um comando RECEIVE..
Curso CICS – Nível Pleno
Módulo 08
IF WS-REC-RESP EQUAL TO DFHRESP (LENGERR)MOVE ‘MAIS DE 25 CARACTERES NA AREA DE DADOS’
TO WS-REC-MENS. . .
END-IF
A forma acima é simples e a mais usual. Os dados são manipulados na WS e o tratamento de erros não interfere na lógica estruturada do programa.
--------------------------------------------------------------------------------------------------------
Já na forma abaixo, o campo tamanho não é informado, porém após o RECEIVE é colocado nele o tamanho recebido (nunca dará LENGERR). Se ocorrer erro ocorrerá um desvio e a próxima instrução não será executada.
WORKING-STORAGE SECTION.
01 WS-AREAS. 05 WS-REC-TAM PIC S9(04) COMP.
LINKAGE SECTION.
01 LK-POINTERS.05 FILLER PIC S9(09) COMP.05 LK-REC-AREA-PTR PIC S9(09) COMP.
01 LK-REC-AREA.05 LK-TRAN PIC X(04).
05 FILLER PIC X(01).05 LK-DADOS PIC X(20).
EXEC CICS HANDLE CONDITION ERROR (80-20-REC-ERRO-FATAL)
END-EXEC
EXEC CICS RECEIVE SET (LK-REC-AREA-PTR) LENGTH (WS-REC-TAM)
END-EXEC. . .
80-20-REC-ERRO-FATAL.
document.doc 64 de 211
Curso CICS – Nível Pleno
MOVE ‘ERRO IMPREVISTO OCORREU AO RECEBER OS DADOS’TO WS-REC-MENS
. . .
Módulo 08
document.doc 65 de 211
Citação
O uso de RECEIVE / RECEIVE dados (texto) tem seu uso restringido,sendo normalmente substituído pelo pela opção MAP (mapa gerado via BMS, SDF),
na forma pseudoconversacional,como descreveremos detalhadamente mais adiante.
Curso CICS – Nível Pleno
Módulo 08
8.2 - SEND:
EXEC CICS SEND CONTROL CURSOR (nnnn)
END-EXEC
nnnn - Valor para, opcionalmente, posicionar o cursor antes de um SEND: 0000 – 1ª coluna da 1ª linha; 0080 – 1ª coluna da 2ª linha; . . . 1840 – 1ª coluna da 24ª linha;
EXEC CICS SEND FROM (WS-SEND-AREA) /
LENGTH (WS-SEND-TAM) [CTLCHAR (WS-SEND-CTLR)] [ERASE]
END-EXEC
FROM - Área da WS de onde serão movidos os dados para a TIOA.
LENGTH - Referencia um campo (word) da WS onde deve estar o tamanho da área de dados.
CTLCHAR - Área de 1 byte na WS, contendo o caracter de controle de gravação.
ERASE - A tela será limpa e o Cursor posicionado na 1ª coluna da 1ª linha.
Exemplos:
WORKING-STORAGE SECTION. 01 WS-AREAS.
05 WS-SEND-TAM PIC S9(04) COMP VALUE +20.
01 WS-SEND-AREA.05 WS-DADOS PIC X(20).
EXEC CICS SEND FROM (WS-SEND-AREA) LENGTH (WS-SEND-TAM)
END-EXEC
[EXEC CICS ISSUE PRINT END-EXEC]
Os dados do terminal serão impressos numa printer que responda à solicitação.
document.doc 66 de 211
IMPORTANTE: A printer deve estar “in service”, não “atachada” a outra “task” e
pertencer ao mesmo CICS que a transação.
Curso CICS – Nível Pleno
Módulo 08
document.doc 67 de 211
Citação
Se nenhum comando de controle for especificado, o dado que chega ao terminalserá colocado em qualquer posição, onde o cursor esteja posicionado.
Curso CICS – Nível Pleno
Módulo 08
IF WS-REC-RESP EQUAL TO DFHRESP (LENGERR) MOVE ‘MAIS DE 25 CARACTERES NA AREA DE DADOS’
TO WS-REC-MENS . . . END-IF
A forma acima é simples e a mais usual. Os dados são manipulados na WS e o tratamento de erros não interfere na lógica estruturada do programa.
--------------------------------------------------------------------------------------------------------
Já na forma abaixo, o campo tamanho não é informado, porém após o RECEIVE é colocado nele o tamanho recebido (nunca dará LENGERR). Se ocorrer erro ocorrerá um desvio, e a próxima instrução não será executada.
WORKING-STORAGE SECTION.
01 WS-AREAS. 05 WS-REC-TAM PIC S9(04) COMP.
LINKAGE SECTION.
01 LK-POINTERS.05 FILLER PIC S9(09) COMP.05 LK-REC-AREA-PTR PIC S9(09) COMP.
01 LK-REC-AREA.05 LK-TRAN PIC X(04).
05 FILLER PIC X(01).05 LK-DADOS PIC X(20).
EXEC CICS HANDLE CONDITION ERROR (80-20-REC-ERRO-FATAL)
END-EXEC
EXEC CICS RECEIVE SET (LK-REC-AREA-PTR) LENGTH (WS-REC-TAM)
END-EXEC. . .
80-20-REC-ERRO-FATAL.
MOVE ‘ERRO IMPREVISTO OCORREU AO RECEBER OS DADOS’TO WS-REC-MENS
. . .
document.doc 68 de 211
Curso CICS – Nível Pleno
Módulo 08Resumo
Foi apresentado como o programa de aplicação que recebe mensagens de texto do terminal do usuário, assim como o programa que, por sua vez, envia uma resposta ao terminal, ao qual está associado; também exemplificamos os casos abordados.
document.doc 69 de 211
Curso CICS – Nível Pleno
Módulo 08
Glossário
Word – Uma palavra, ou 4 bytes, que em valor numérico binário pode conter 9 dígitos.
Halfword – Meia palavra, ou 2 bytes, que em valor numérico binário pode conter 4 dígitos.
Doubleword – Dupla palavra, ou 8 bytes, que em valor numérico binário pode conter 18 dígitos.
document.doc 70 de 211
Curso CICS – Nível Pleno
Módulo 08
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop - [email protected]
document.doc 71 de 211
Curso CICS – Nível Pleno
Módulo 09
9. Usando BMS-1
9.1 Definindo telas formatadas com o BMS (Basic Map Support)
Muito poucas transações usam telas não formatadas; a maioria usa tela formatada (Mapa), que consta de um conjunto de dados, onde cada dado é precedido de um campo de controle de três bytes.
O BMS manipula e interpreta esse conjunto de dados formatados. Ele atua como interface entre o controle de terminais e o programa de aplicação.
Ele também é usado para definir como os dados aparecerão na tela, por exemplo, os cabeçalhos, campos, títulos dos campos, colunas de informações, mensagens, etc.
Os mapas de um programa devem ser gerados antes de o mesmo ser compilado.
Exemplo de mapa: 1...5...10...15...20...25...30...35...40...45...50...55...60...65...70...75...800102 #FABRICA DE PARAFUSOS030405 #CONTROLE DE ESTOQUE0607 #CENTRO DE CUSTO:# #NOME DO C/C:# #0809 #CODIGO DA PEÇA:# #1011 #QUANTIDADE:# #1213 #SOMAR OU SUBTRAIR:# #14151617181920212223 #CLEAR – LIMPA TELA E SAI24#MENS.:# #
O caracter # representa o atributo do campo (brilho, negrito, protegido, etc.).
document.doc 72 de 211
Citação
Três macros Assembler são usadas para definir os mapas: DFHMSD, DFHMDI e DFHMDF.
DFHMSD – Define um MAPSET, ou seja, um conjunto de mapas (um ou mais), e suas características.
DFHMDI – Define cada mapa de um MAPSET.
DFHMDF – Define cada campo de um mapa.
OBSERVAÇÃO: Uma tela contém 24 linhas de 80 colunas cada.
Curso CICS – Nível Pleno
Módulo 09
document.doc 73 de 211
Citação
A Macro DFHMSD define um MAPSET, ou seja, um conjunto de mapas (um ou mais), e suas características.
Curso CICS – Nível Pleno
Módulo 09
9.2 Macro DFHMSD
DFHMSD – Define um MAPSET, ou seja, um conjunto de mapas (um ou mais), e suas características.
Msname DFHMSD TYPE=DSECT/MAP/FINAL,TERM=3270
,LANG=ASM/COBOL/PLI,BASE=bname,MODE=IN/OUT/INOUT
,CTRL=(PRINT,L40/L64/L80/HONEOM,FREEKB,ALARM,FRSET),DATA=FIELD/BLOCK,TIOAPFX=YES/NO
,STORAGE=AUTO,COLOR=DEFAULT/BLUE/RED/GREEN/TUQUOISE/YELLOW/
PINK/NEUTRAL,EXTATT=NO/MAPONLY/YES,HILIGHT=OFF/BLINK/REVERSE/UNDERLINE
,HTAB=mnemonic,OBFMT=YES/NO,PS=BASE/psid;SUFFIX=n,VTAB=tab . . . . .,VALIDN=((mustfill) (,mustenter))
Msname - Nome do MAPSET (1 a 7 caracteres); um caracter é acrescentado como sufixo (tipo do terminal ou parâmetro SUFFIX); esse nome deve estar na PPT.
TYPE – DSECT criará descrição simbólica para o programa de aplicação; MAP especifica o mapa físico usado na execução;
FINAL indica o fim do MAPSET.
TERM – Define o tipo de terminal associado com o MAPSET.
LANG – Especifica a linguagem, para a criação do book (DSECT).
BASE – Permite que uma área de memória seja compartilhada por mais de um DATSET.
MODE – Indica se o mapa será de entrada, saída ou ambos.
CTRL – Especifica o caracter de controle.
DATA – Especifica se os campos serão individuais ou em bloco.
TIOAPFX – Especifica que um prefixo de 12 bytes será acrescentado. Obrigatório para Command Level.
document.doc 74 de 211
Curso CICS – Nível Pleno
Módulo 09
STORAGE – Os mapas de um MAPSET compartilham a mesma área de memória, se ‘AUTO’ for especificado essas áreas serão individuais.
EXTATT – Especifica se os atributos estendidos são suportados (COLOR, HILIGHT, PS, VALIDN).
COLOR – Especifica a cor padrão.
HILIGHT – Especifica brilho.
PS – Indica se os símbolos de programa são utilizados.
VALIDN – Especifica se os campos devem ser completamente preenchidos.
HTAB - Especifica as posições de tabulação horizontal.
VTAB - Especifica as posições de tabulação vertical.
LDC – Especifica o mnemônico para o código do equipamento.
OBFMT - Especifica se a formatação limite de saída é necessária.
SUFFIX – Indica o caracter a ser anexado no nome do MAPSET.
Exemplo:
P01AMS DFMSD TYPE=&DSECT, xTERM=3270,TIOPFX=YES,LAN=COBOL, x
MODE=INOUT, xCTRL=FREEKB, xEXTATT=YES
O &DSECT indica que este parâmetro é simbólico e será substituído em tempo de compilação;
O MAPSET será usado como entrada e saída;
O parâmetro CTRL indica que o teclado será liberado;
document.doc 75 de 211
Curso CICS – Nível Pleno
Módulo 09
Resumo
Foi descrito como se formata uma tela para o CICS, e a parametrização da macro DFHMSD, que define um MAPASET, que por sua vez pode ser composto por um ou mais mapas.
document.doc 76 de 211
Curso CICS – Nível Pleno
Módulo 09
Glossário
Tela formatada – Uma forma organizada da tela (80 colunas x 24 linhas), ou de uma parte
da tela (janela à nn colunas x mm linhas, com nn < 81, e mm < 25);
document.doc 77 de 211
Curso CICS – Nível Pleno
Módulo 09
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop - [email protected]
document.doc 78 de 211
Curso CICS – Nível Pleno
Módulo 10
10. Usando BMS-2
10.1 – Macro DFHMDI
DFHMDI – Define cada mapa de um MAPSET.
Mpname DFHMDI SIZE=(linha,coluna),LINE=numero/NEXT/SAME,COLUMN=numero/NEXT/SAME
,JUSTIFY=(LEFT,FIRST)/(RIGHT,LAST) ,HEADER=YES,TRAILER=YES
,CTRL=(PRINT,L40/L64/L80/HONEOM,FREEKB,ALARM,FRSET),DATA=FIELD/BLOCK,TIOAPFX=YES/NO
,STORAGE=AUTO,COLOR=DEFAULT/BLUE/RED/GREEN/TUQUOISE/YELLOW/
PINK/NEUTRAL,HILIGHT=OFF/BLINK/REVERSE/UNDERLINE
,OBFTM=YES/NO,PS=BASE/psid,SUFFIX=n,VALIDN=((mustfill) (,mustenter))
Mpname - Nome do MAPSET (1 a 7 caracteres); um caracter é acrescentado como sufixo (tipo do terminal ou parâmetro SUFFIX); esse nome deve estar na PPT;
SIZE – Especifica as dimensões do mapa;
LINE – Especifica a linha onde será colocado o mapa;
COLUMN – Especifica a coluna onde será colocado o mapa;
JUSTIFY – Indica se a margem será à direita ou à esquerda da coluna. FIRST especifica uma nova página; LAST especifica o fim da página.
HEADER – O mapa aparecerá no topo se a condição de overflow ocorrer;
TRAILER – O mapa aparecerá no fim se a condição de overflow ocorrer;
Outros parâmetros, idem DFHMSD.
document.doc 79 de 211
DICA: Existem softwares que auxiliam na criação de mapas, por exemplo, o SDF (Screen Definition Facility).
Curso CICS – Nível Pleno
Módulo 10
document.doc 80 de 211
Citação
DFHMDF – Define cada campo de um mapa, com suas características.
Curso CICS – Nível Pleno
Módulo 10
10.2 – Macro DFHMDF DFHMDF – Define cada campo de um mapa
Fieldname DFHMDF POS=number,(linha,coluna),ATTRB=(ASKIP,NUM,BRT,DET,IC,FSET)
PROT DRK UNPROT NORM
,LENGTH=numero,JUSTIFY=(LEFT,BLANK)/(RIGHT,ZERO),INITIAL=’ ‘ / XINIT=’ ‘
,GRPNAME=user group name,OCCURS=number
,PICIN=’value’,PICOUT=’value’
,COLOR=DEFAULT/BLUE/RED/GREEN/TUQUOISE/YELLOW/PINK/NEUTRAL
,HILIGHT=OFF/BLINK/REVERSE/UNDERLINE,OBFTM=YES/NO,PS=BASE/psid,SUFFIX=n,VALIDN=((mustfill) (,mustenter))
Fieldname – Opcional; nome do campo (1 a 7 caracteres); só é necessário se for referenciado no programa de aplicação;
POS – Indica a posição do byte de atributo;
ATTRB – Especifica as características do atributo;
LENGTH – Especifica o tamanho do campo (fora o byte de atributo);
JUSTIFY – para campos numéricos o padrão é alinhar à direita com zeros à esquerda; para não numéricos o alinhamento é à esquerda com brancos à direita;
GRPNAME – Especifica um nome para grupos contíguos;
OCCURS – Especifica o número de vezes que o campo se repetirá;
PICIN – Especifica a PICTURE de entrada associada ao campo;
PICOUT – Especifica a PICTURE de saída associada ao campo;
Outros parâmetros, idem DFHMSD.
document.doc 81 de 211
Curso CICS – Nível Pleno
Módulo 10
Resumo
Foi descrito como se formata uma tela para o CICS, e a parametrização das macros: DFHMDI e DFHMDF, que definem respectivamente, um mapa e os campos de um mapa.
document.doc 82 de 211
Curso CICS – Nível Pleno
Módulo 10
Glossário
SDF – Screen Definition Facility, Produto da IBM, que facilita a criação de mapas, através de menus pré-definidos, que possibilitam a geração de books e de programas objetos de mapas;
document.doc 83 de 211
Curso CICS – Nível Pleno
Módulo 10
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop - [email protected]
document.doc 84 de 211
Curso CICS – Nível Pleno
Módulo 11
11. Conceitos de VSAM
DEFINIÇÃO DE ARQUIVOS VSAM;
OPERAÇÕES PERMITIDAS;
INTEGRIDADE DOS ARQUIVOS.
11.1 – Definição de Arquivos VSAM
Os arquivos são criados via IDCAMS (usando um Job Batch), tipo ESDS ou RSDS; esses arquivos devem ser definidos para o CICS na FCT, onde são informadas as características do arquivo, inclusive os tipos de operação que poderão ser realizadas.
Os arquivos não serão abertos pelo programa de aplicação. Normalmente são abertos pelo CICS, quando um acesso for solicitado; poderão ser abertos ou fechados pelo operador, por exemplo, para inibir atualizações on-line enquanto o arquivo estiver sendo atualizado via processamento batch.
Dentro do programa será definido, na WS, o lay-out do registro e o campo chave (RIDFLD).
11.2 – Operações Permitidas:
São as seguintes as operações permitidas, dependendo da organização do arquivo:
11.2.1 – ESDS (Entry Sequenced Data Set)
Leitura direta através do RBA (Relative Byte Address), contido numa “Word”, (definida como PIC S9(08) COMP);
Leitura sequencial;
Gravação sempre após o último registro existente (a inclusão é sequencial);
Atualização de registros, exceto a chave, sem alteração de seu tamanho;
Não é permitida a Exclusão; os registros são marcados como “excluídos”, por exemplo atualizando o campo “Data de Exclusão”, e periodicamente uma rotina batch fará a limpeza
document.doc 85 de 211
Curso CICS – Nível Pleno
física, selecionando apenas os registros ativos e recriando o arquivo.
document.doc 86 de 211
Curso CICS – Nível Pleno
Módulo 11
document.doc 87 de 211
Citação
Daremos aqui uma breve explanação acerca das características dos arquivos VSAM;não entraremos nos detalhes que fazem parte de um Curso específico de VSAM,
mas só nos deteremos nos pontos essenciais para o entendimento de como o CICS manipula os arquivos VSAM.
Curso CICS – Nível Pleno
Módulo 11
11.2.2 – RRDS (Relative Record Data Set)
Leitura direta através do RRN (Relative Record Number), contido numa “Word”, (definida como PIC S9(08) COMP);
Leitura sequencial;
Gravação de registro no seu respectivo “slot” (seu local físico é calculado por um algoritmo);
Atualização de registros, exceto a chave;
Exclusão de registros;
11.2.3 – KSDS (Key Sequenced Data Set)
Leitura direta através da chave do registro, ou através de um pedaço da chave, limitada pelo campo KEYLENGTH;
Leitura sequencial;
Gravação de registro;
Atualização de registros, exceto a chave;
Exclusão de registros;
É o tipo mais utilizado no CICS.
document.doc 88 de 211
DICA: Em alguns casos, quando a informação do EIBRESP não for suficientemente esclarecedora, na exceção INVREQ, por exemplo, o CICS traz o campo EIBRESP2 para maiores detalhes.
Curso CICS – Nível Pleno
Módulo 11
document.doc 89 de 211
Citação
Segurança é um item essencial quando nós manipulamos nossas bases de informação;daremos então uma visão de como o CICS atua quanto à integridade
dos arquivos VSAM, sendo atualizados sob sua custódia;
Curso CICS – Nível Pleno
Módulo 11
11.3 – INTEGRIDADE DOS ARQUIVOS
O sistema de arquivos deve ser protegido tanto para o caso de interrupções excepcionais, como para a hipótese de dois ou mais usuários tentarem atualizar o mesmo arquivo ao mesmo tempo. Existem dois tipos de proteção:
Controle exclusivo do VSAM:
Quando uma task está atualizando um registro, o CI (Control Interval) que contem o registro sendo atualizado fica preso para essa task até a atualização se consumar; essa proteção funciona de forma automática.
Controle exclusivo do CICS:
O CICS trabalha com um conceito denominado LUW (Logical Unit of Work); uma LUW é criada quando uma task demonstra a intenção de atualizar um arquivo definido para o CICS como recuperável (por exemplo, um READ com UPDATE);
Quando o VSAM libera o CI, o CICS continua prendendo o registro até o fim da LUW, para os arquivos recuperáveis.
Essa LUW permanece “in-flight” (aberta) até o final da task ou até ocorrer um comando SYNCPOINT, quando ocorre a efetivação de todas as atualizações (Commit);
Se ocorrer alguma interrupção antes do término da LUW, o CICS fará uma recuperação de todos os arquivos recuperáveis que foram atualizados (Backout).
document.doc 90 de 211
Curso CICS – Nível Pleno
Módulo 11
Resumo
Foram apresentados os conceitos de arquivos VSAM;
Em seguida foram mostradas as operações permitidas para arquivos VSAM (ESDS, RSDS e KSDS);
Por fim foi descrito como O CICS com VSAM se portam para que seus arquivos possam ter integridade de dados.
document.doc 91 de 211
Curso CICS – Nível Pleno
Módulo 11
Glossário
IDCAMS – Programa que possibilita criar, deletar, recriar, listar e outras funções que se refiram a arquivos VSAM;
document.doc 92 de 211
Curso CICS – Nível Pleno
Módulo 11
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop - [email protected]
document.doc 93 de 211
Curso CICS – Nível Pleno
Módulo 12
12.VSAM-Acesso direto-1
READ
WRITE
12.1 - READ:
EXEC CICS READ FILE (WS-ARQ-NAME)INTO (WS-ARQ-AREA)
LENGTH (WS-ARQ-TAM) RIDFLD (WS-ARQ-CHAVE) [ GTEQ / EQUAL ]
[ UPDATE ] END-EXEC
Condições de erro: FILENOTFND, INVREQ, LENGERR, NOTFND, DUPKEY, ILLOGIC
UPDATE – Parâmetro obrigatório se for atualizar o arquivo; o registro ficará preso até ser emitido um comando REWRITE, UNLOCK, ou até que a transação termine;
LENGERR - Só ocorre se o tamanho do registro lido for maior que o tamanho especificado;
ILLOGIC - Ocorre quando há um erro não previsto nas opções possíveis de um arquivo VSAM;
INVREQ - Ocorre quando se tenta dar um REWRITE sem um prévio READ com UPDATE;
Exemplo:
WORKING STORAGE SETION. 01WS-COMMAREA.
05 WS-ARQ—NAME PIC X(08) VALUE ‘ARQ01A’.05 WS-ARQ-AREA PIC X(100).
05 WS-ARQ-TAM PIC S9(04) VALUE +100.05 WS-ARQ-CHAVE PIC X(05).
MOVE ‘ABCDE’ TO WS-ARQ-CHAVE
EXEC CICS READ FILE (WS-ARQ-NAME)INTO (WS-ARQ-AREA)
LENGTH (WS-ARQ-TAM) RIDFLD (WS-ARQ-CHAVE)
END-EXEC
document.doc 94 de 211
Curso CICS – Nível Pleno
Módulo 12
document.doc 95 de 211
Citação
Para gravação de registros em arquivo VSAMBasta formatar a área da WS e emitir o comando WRITE.
Curso CICS – Nível Pleno
Módulo 12
12.2 - WRITE:
EXEC CICS WRITE FILE (WS-ARQ-NAME)FROM (WS-ARQ-AREA)
LENGTH (WS-ARQ-TAM) RIDFLD (WS-ARQ-CHAVE)
END-EXEC
Condições de erro: FILENOTFND, DUPREC, INVREQ, IOERR, LENGERR, NOTOPEN, NOSPACE, ILLOGIC;
LENGERR - Só ocorre se o tamanho do registro lido for maior que o tamanho especificado;
ILLOGIC - Ocorre quando há um erro não previsto nas opções possíveis de um arquivo VSAM;
INVREQ - Ocorre quando tenta-se dar um REWRITE sem um prévio READ com UPDATE;
Exemplo:
WORKING STORAGE SETION. 01WS-COMMAREA.
05 WS-ARQ—NAME PIC X(08) VALUE ‘ARQ01A’.05 WS-ARQ-AREA PIC X(100).
05 WS-ARQ-TAM PIC S9(04) VALUE +100.05 WS-ARQ-CHAVE PIC X(05).
MOVE ‘ABCDX’ TO WS-ARQ-CHAVE MOVE ….. TO WS-ARQ-AREA
EXEC CICS WRITE FILE (WS-ARQ-NAME)FROM (WS-ARQ-AREA)
LENGTH (WS-ARQ-TAM) RIDFLD (WS-ARQ-CHAVE)
END-EXEC
document.doc 96 de 211
OBSERVAÇÃO: Os registros gravados via comando WRITE, poderão ser lidos tanto por READ direto, como por Browse.
Curso CICS – Nível Pleno
Módulo 12
Resumo
Foi mostrada como se consegue ler registros em arquivos VSAM (READ) e também foi descrita a operação de gravação de registros em arquivos VSAM (WRITE).
document.doc 97 de 211
Curso CICS – Nível Pleno
Módulo 12
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop - [email protected]
document.doc 98 de 211
Curso CICS – Nível Pleno
Módulo 13
13. VSAM-Acesso direto-2
REWRITE
DELETE
UNLOCK
13.1 - REWRITE:
EXEC CICS REWRITE FILE (WS-ARQ-NAME)FROM (WS-ARQ-AREA)
LENGTH (WS-ARQ-TAM) RIDFLD (WS-ARQ-CHAVE)
END-EXEC
Condições de erro:
LENGERR - Só ocorre se o tamanho do registro lido for maior que o tamanho especificado;
ILLOGIC - Ocorre quando há um erro não previsto nas opções possíveis de um arquivo VSAM;
INVREQ - Ocorre quando tenta-se dar um REWRITE sem um prévio READ com UPDATE;
Exemplo:
WORKING STORAGE SETION. 01WS-COMMAREA.
05 WS-ARQ—NAME PIC X(08) VALUE ‘ARQ01A’.05 WS-ARQ-AREA PIC X(100).
05 WS-ARQ-TAM PIC S9(04) VALUE +100.05 WS-ARQ-CHAVE PIC X(05).
MOVE ….. TO WS-ARQ-AREA
EXEC CICS REWRITE FILE (WS-ARQ-NAME)FROM (WS-ARQ-AREA)
LENGTH (WS-ARQ-TAM) RIDFLD (WS-ARQ-CHAVE)
END-EXEC
document.doc 99 de 211
OBSERVAÇÃO: Os registros regravados não poderão ter a sua chave (RIDFLD) modificada.
Curso CICS – Nível Pleno
Módulo 13
document.doc 100 de 211
Citação
Quando se prende um registro para posterior atualização,(READ com opção UPDATE), se por algum motivo desistirmos de atualizar
o mesmo (REWRITE), o registro deve ser liberado (UNLOCK),para que outras transações possam acessá-lo.
Curso CICS – Nível Pleno
Módulo 13
13.2 - DELETE:
EXEC CICS DELETE FILE (WS-ARQ-NAME)RIDFLD (WS-ARQ-CHAVE)[ KEYLENGTH (WS-CHAVE-TAM) ]
END-EXEC
Condições de erro: FILENOTFND, INVREQ, IOERR, NOTFND, NOTOPEN
- NOTFND - Se ocorrer uma condição de erro e a mesma não estiver prevista no programa, este cancelará. Se quisermos tratar essa condição , por exemplo o NOTFND, deveremos colocar em algum ponto antes do DELETE ou do READ:
EXEC CICS HANDLE CONDITIONNOTFND (80-01-
NOTFND) ERROR (80-02-ERROR) END-EXEC
- ERROR - No parágrafo 80-01-NOTFND será tratado a condição de não encontrar o registro para a chave especificada; o parágrafo 80-02-ERROR será acionado se ocorrer qualquer outro tipo de erro.
13.3 - UNLOCK:
EXEC CICS UNLOCK FILE (WS-ARQ-NAME) END-EXEC
Condições de erro: FILENOTFND, IOERR, NOTOPEN, ILLOGIC;
Exemplo:
WORKING STORAGE SETION. 01WS-COMMAREA.
05 WS-ARQ—NAME PIC X(08) VALUE ‘ARQ01A’.05 WS-ARQ-CHAVE PIC X(05).
EXEC CICS DELETE FILE (WS-ARQ-NAME)RIDFLD (WS-ARQ-CHAVE)]
END-EXEC
document.doc 101 de 211
Curso CICS – Nível Pleno
Módulo 13
Resumo
Foi descrito como se atualiza um arquivo VSAM (REWRITE) e explicados seusrespectivos parâmetros;
Foi também explicada a operação de deleção de registros;
Por último foi apresentado o comando UNLOCK, para liberar um registro presopara atualização, que não foi efetivada.
document.doc 102 de 211
Curso CICS – Nível Pleno
Módulo 13
Glossário
NOTFND – Condição de não encontrar um registro, para a chave especificada, o mesmo que “NOT FOUND”, ou seja, “não encontrado”.
document.doc 103 de 211
Curso CICS – Nível Pleno
Módulo 13
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop - [email protected]
document.doc 104 de 211
Curso CICS – Nível Pleno
Módulo 14
14. VSAM – Browse-1
. StartBr
. ReadNext
. EndBr
Os arquivos VSAM do CICS são de acesso direto. Apesar disso podemos acessá-los de modo sequencial, com os comandos que veremos a seguir.
14.1 – StartBr:
Fará com que o FCP solicite ao VSAM que encontre um registro no arquivo cuja chave seja igual ou maior que a especificada em RIDFLD. Se a mesma for encontrada o CICS informa o FCP que por sua vez informa o programa de aplicação; se nenhum registro for encontrado, que satisfaça à condição, a opção NOTFND será acionada. Para recuperarmos os registros, a partir dessa chave, usaremos o comando ReadNext ou ReadPrev.
EXEC CICS STARTBR FILE (‘arquivo’)RIDFLD (WS-BR-CHAVE) [ RBA/RRN ]
[ KEYLENGHT (WS-BR-TAM-CH) ] [ GENERIC ] [ GTEQ / EQUAL]
[ REQID (valor) ][ RESP (WS-BR-RESP) ]
END-EXEC
- FILE – Nome do arquivo;
- RIDFLD – Argumento onde foi montada a chave (total ou genérica);
- KEYLENGTH – Tamanho da chave genérica (se GENERIC especificado);
- GENERIC – Especifica que a chave de pesquisa é genérica (só os primeiros bytes (conforme o tamanho especificado em KEYLENGTH) serão testados;
- GTEQ/EQUAL - São mutuamente exclusivos; EQUAL- Só satisfaz a pesquisa se a chave for igual ao argumento; GTEQ - satisfaz a pesquisa se a chave for igual ou maior;
- REQID - Usada quando se faz browse múltiplo (para mais de um arquivo simultaneamente);
- RESP - Se quisermos testar o retorno (EIBRESP);
document.doc 105 de 211
Curso CICS – Nível Pleno
Módulo 14
document.doc 106 de 211
Citação
O Browse é muito eficiente pois reduz as operações de I/O ao mínimo,Um ReadNext gera apenas uma operação de I/O
para cada bloco de CI (Control Interval).
Curso CICS – Nível Pleno
Módulo 14
14.2 – ReadNext:
EXEC CICS READNEXT FILE (‘arquivo’)INTO (WS-BR-AREA) / SET (LK-PTR-BR-
AREA) [ LENGHT (WS-BR-TAM-AREA) ]RIDFLD (WS-BR-CHAVE)
[ RBA/RRN ] [ KEYLENGTH (WS-BR-TAM-CH) ] REQID (valor)
‘ [ RESP (WS-BR-RESP) ] END-EXEC
- FILE – Nome do arquivo;
- INTO / SET – Área WS / Pointer da área Linkage, onde será colocado o registro;
- LENGTH – Campo da WS onde é colocado o tamanho do registro;
- RIDFLD – Campo que representa a chave do arquivo;
- KEYLENGTH – Tamanho da chave;
- REQID - Usada quando se faz browse múltiplo (para mais de um arquivo simultaneamente);
- RESP - Se quisermos testar o retorno (EIBRESP);
- Podemos utilizar o processamento “Skip Sequential” do VSAM, para dar um salto na pesquisa, pulando para uma chave mais para frente, movendo um valor de chave mais alto para a RIDFLD.
14.3 – EndBr:
Quando tivermos obtido todos os registros que nos convém, emitiremos un EndBr;
EXEC CICS ENDBR FILE (‘arquivo’) END-EXEC
- FILE – Nome do arquivo;
document.doc 107 de 211
IMPORTANTE: Este comando liberará tanto a memória associada a esta pesquisa, como a área utilizada pelo VSAM;
Curso CICS – Nível Pleno
Módulo 14
document.doc 108 de 211
Citação
Vamos a seguir exemplificar o uso dos comandos StartBr, ReadNext e EndBr;
Curso CICS – Nível Pleno
Módulo 14
Exemplo:
WORKING STORAGE SETION. 01WS-DADOS-CICS.
05 WS-BR-CHAVE PIC X(05) VALUE SPACES. 05 WS-BR-RESP PIC X(01) VALUE LOW-VALUE.05 WS-BR-AREA PIC X(50) VALUE SPACES.
PROCEDURE DIVISION.MOVE ‘00005’ TO WS-BR-CHAVE
EXEC CICS STARTBR FILE (‘ARQ001’)RIDFLD (WS-BR-CHAVE)
RESP (WS-BR-RESP) END-EXEC
IF WS-BR-RESP EQUAL DFHRESP(NORMAL)PERFORM UNTIL WS-BR-RESP EQUAL DFHRESP(ENDFILE) EXEC CICS READNEXT FILE (‘ARQ001’)
INTO (WS-BR-AREA)RIDFLD (WS-BR-
CHAVE) RESP (WS-BR-RESP) END-EXEC
END-PERFORMEXEC CICS ENDBR FILE
(‘ARQ001’) END-EXEC ELSE. . .
document.doc 109 de 211
Curso CICS – Nível Pleno
Módulo 14
Resumo
Foram apresentados os comandos StartBr, ReadNext e EndBr, sendo explicados todos os seus parâmetros;
Por fim foram exemplificados os comandos acima citados;
document.doc 110 de 211
Curso CICS – Nível Pleno
Módulo 14
Glossário
Argumento – Chave pela qual um arquivo está ordenado, e pela qual o mesmo pode ser pesquisado;
Control Interval – Bloco onde os registros VSAM ficam agrupados;
document.doc 111 de 211
Curso CICS – Nível Pleno
Módulo 14
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop - [email protected]
document.doc 112 de 211
Curso CICS – Nível Pleno
Módulo 15
15. VSAM – Browse-2
- ReadPrev
- ResetBr
- Condições de Erro
15.1 – ReadPrev:
Semelhante ao READNEXT, só que acessará o registro anterior (ordem descendente);
EXEC CICS READPREV FILE (‘arquivo’)INTO (WS-BR-AREA) / SET (LK-PTR-BR-
AREA) [ LENGHT (WS-BR-TAM-AREA) ]RIDFLD (WS-BR-CHAVE)
[ RBA/RRN ] [ KEYLENGTH (WS-BR-TAM-CH) ] REQID (valor)
‘ [ RESP (WS-BR-RESP) ] END-EXEC
- FILE – Nome do arquivo;
- INTO / SET – Área WS / Pointer da área Linkage, onde será colocado o registro;
- LENGTH – Campo da WS onde é colocado o tamanho do registro;
- RIDFLD – Campo que representa a chave do arquivo;
- KEYLENGTH – Tamanho da chave;
- REQID - Usada quando se faz browse múltiplo (para mais de um arquivo simultaneamente);
- RESP - Se quisermos testar o retorno (EIBRESP);
- A condição de ENDFILE ocorrerá após a leitura do primeiro registro;
document.doc 113 de 211
DICA: É possível mesclar Readprev com
Readnext.
Curso CICS – Nível Pleno
Módulo 15
document.doc 114 de 211
Citação
Quando necessitarmos dar um salto na leitura (para frente ou para trás),ou inverter a direção da leitura, usaremos o comando ResetBr;.
Curso CICS – Nível Pleno
Módulo 15
15.2 – ResetBr:
EXEC CICS RESETBR FILE (‘arquivo’)[ RIDFLD (WS-BR-CHAVE) ] [ RBA/RRN ] [ KEYLENGHT (WS-BR-TAM-CH) ] [ GENERIC ] [ GTEQ / EQUAL][ REQID (valor) ][ RESP (WS-BR-RESP) ]
END-EXEC
- FILE – Nome do arquivo;
- RIDFLD – Argumento onde foi montada a chave (total ou genérica);
- KEYLENGTH – Tamanho da chave genérica (se GENERIC especificado);
- Etc. – Demais campos semelhantes ao StartBr;
15.3 – Condições de Erro:
- FILENOTFND – o Nome do arquivo não está na FCT;
- DUPKEY – Indica, para índices alternados VSAM, que existem mais registros com a mesma chave; esses registros poderão ser obtidos por browse;
- DUPREC – Indica que existe registro no arquivo, com a mesma chave;
- ENDFILE – Indica final (ReadNext) ou início (ReadPrev) de arquivo;
- ILLOGIC – Erro VSAM não determinado pelo CICS; verificar Eibrcode: 1º byte=cod.retorno – 2º byte=cod.erro, ambos em binário;
- INVREQ – Operação não especificada na FCT, para o referido arquivo;
- IOERR – Indica que ocorreu erro de operação de I/O;
- LENGERR – Área de entrada (READ.) insuficiente para receber o registro;
- NOSPACE – Não há espaço suficiente para receber o registro;
- NOTFND – Registro não encontrado para a chave especificada;
document.doc 115 de 211
Curso CICS – Nível Pleno
Módulo 15
Resumo
Foram descritos os comandos ReadPrev e ResetBr, assim como seus parâmetros;
Foram descritos os códigos de retorno para as operações de browsing.
document.doc 116 de 211
Curso CICS – Nível Pleno
Módulo 15
Glossário
Browse – Leitura seqüencial de arquivo VSAM, a partir de uma chave determinada;
document.doc 117 de 211
Curso CICS – Nível Pleno
Módulo 15
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop - [email protected]
document.doc 118 de 211
Curso CICS – Nível Pleno
Módulo 16
16. Comandos de Navegação
Link
Return
Xctl
Nível Lógico
16.1 – Link:
EXEC CICS LINKPROGRAM (WS-PROG-NAME)[ COMMAREA (WS-COMMAREA) ]
[ LENGTH (WS-COMM-TAM) ] END-EXEC
Condição de Erro: PGMIDERR
O programa chamado deverá testar o campo EIBCALEN; se o mesmo for diferente de zero, quer dizer que o programa está recebendo informações do programa chamador. Neste caso os parâmetros COMMAREA e LENGTH devem ser especificados.
A área de dados (COMMAREA) deve ser definida na WS do programa chamador e na Linkage do programa chamado.
Os dos programas são executados sob a mesma task, porém ambos devem estar definidos na PPT.
Ao terminar o programa chamado (RETURN) o controle volta ao programa chamador, na instrução seguinte ao LINK, e este receberá de volta a área de dados, modificada ou não.
16.2 – Return
EXEC CICS RETURN END-EXEC
document.doc 119 de 211
IMPORTANTE: O RETURN sem nenhum parâmetro encerra o programa, passando o controle para o nível lógico superior.
Curso CICS – Nível Pleno
Módulo 16
document.doc 120 de 211
Citação
Uma task pode consistir de um ou mais programas;quando um programa é chamado por outro (LINK ou XCTL),
eles passam a fazer parte da mesma task (tarefa).
Curso CICS – Nível Pleno
Módulo 16
16.3 – Xctl:
Valem as mesmas regras do LINK, exceto: ao terminar o programa chamado (RETURN) o controle não volta ao programa chamador, mas para o programa de nível lógico superior (que passou o controle através de LINK) ou para o CICS.
EXEC CICS XCTL PROGRAM (WS-PROG-NAME)[ COMMAREA (WS-COMMAREA) ]
[ LENGTH (WS-COMM-TAM) ] END-EXEC
Condição de Erro: PGMIDERR
Como o programa chamador não torna a receber o controle, suas áreas são liberadas e não será necessário o comando RETURN no fim do programa.
Quando o campo WS-PROG-NAME for definido na WS, em 8 bytes, ao qual é atribuído o nome do programa a ser chamado, dizemos que essa chamada é “dinâmica”; o contrário ocorre quando o nome do programa for informado na própria instrução, entre apóstrofes;
Exemplo1 (Dinâmico!):
WORKING STORAGE SETION. 77WS-PROG-NAME PIC X(08) VALUE ‘PROG01A’. 01WS-COMMAREA.
05 WS-DADOS PIC X(100).
EXEC CICS XCTL PROGRAM (WS-PROG-NAME)COMMAREA (WS-COMMAREA)
LENGTH (LENGHT OF WS-COMMAREA) END-EXEC
Exemplo2 (Estático?):
WORKING STORAGE SETION. 01WS-COMMAREA.
05 WS-DADOS PIC X(100).
EXEC CICS XCTL PROGRAM (‘PROG01A’)COMMAREA (WS-COMMAREA)
LENGTH (100) END-EXEC
document.doc 121 de 211
Curso CICS – Nível Pleno
Módulo 16
document.doc 122 de 211
Citação
Uma task pode ter diversos níveis lógicos,mas um único programa pode estar ativo, num mesmo nível,
num determinado momento.
Curso CICS – Nível Pleno
Módulo 16
16.4 – Nível lógico de navegação do CICS
Exemplo:
document.doc 123 de 211
CICS
Curso CICS – Nível Pleno
Módulo 16
Resumo
Foi mostrado como se passa o controle para um outro programa, para tornar a receber o controle na instrução seguinte (LINK), passando dados, ou não;
Foi dado um exemplo demonstrando como funcionam os esquemas de nível lógico, que determina os pontos de retorno dos programas “chamados”;
Por fim, foi mostrado como se passa o controle para um outro programa, para não tornar a receber o controle (XCTL) e foi também exemplificado.
document.doc 124 de 211
Curso CICS – Nível Pleno
Módulo 16
Glossário
Nível lógico– Esquema hierárquico que determina os pontos de retorno, quando usamos a navegação, no CICS.
Navegação – Passagem de controle de um programa a outro.
document.doc 125 de 211
Curso CICS – Nível Pleno
Módulo 16
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop - [email protected]
document.doc 126 de 211
Curso CICS – Nível Pleno
Módulo 17
17. Controle de programa-1
17.1 – Tabelas em Assembler:
Exemplo: ”Tabela de Estados”
DC CL17’BAHIA’ DC CL17’ESESPIRITO SANTO’
DC CL17’MGMINAS GERAIS’ DC CL17’PRPARANA’
DC CL17’RJRIO DE JANEIRO’ DC CL17’RSRIO
GRANDE DO SUL’ DCCL17’SCSANTA CATARINA’ DC CL17’SPSAO PAULO’
Trata-se se um programa Assembler composto apenas de constantes.
Esta tabela será compilada, “linkeditada” e cadastrada na PPT do CICS.
Em vez de definir essa tabela na WS (fixa), ou base de dados tradicional, podemos fazer sua a definição do seu layout na LINKAGE, e carregá-la em memória quando quisermos consultá-la.
Com essa técnica podemos ter inúmeras tasks no CICS consultando uma única tabela, através da LINKAGE, possibilitando economia de memória.
document.doc 127 de 211
ATENÇÃO: Se o programa já estiver na memória o LOAD usa essa cópia, caso contrário carrega-o da biblioteca onde reside.
Curso CICS – Nível Pleno
Módulo 17
document.doc 128 de 211
Citação
Com o comando LOAD é possível carregar em memória uma tabela,um mapa, ou outro programa, que podem ser acessados
simultaneamente por diversas tasks.
Curso CICS – Nível Pleno
Módulo 17
17.2 – LOAD:
EXEC CICS LOAD PROGRAM (WS-PROG-NAME)[ SET (WS-PTR-AREA) ]
[ LENGTH (WS-COMM-TAM) ] [ ENTRY (WS-PRT-ENTRY) ] [ HOLD ]
END-EXEC
Condição de Erro: PGMIDERR, LENGERR;
Este comando permite o acesso a tabelas que sofrem freqüente alteração, como Tabela de Taxas, por exemplo, mas serve também para carregar programas e mapas;
O WS-PROG-NAME deve estar na PPT, senão dará PGMIDERR;
A opção SET solicita que a PPT retorne o endereço do programa carregado;
A opção ENTRY indica um ponto de entrada dentro do programa, tabela ou mapa;
A opção HOLD indica que o CICS deve manter o programa na DSA (área de endereçamento dinâmico da memória) até que seja emitido um comando RELEASE, caso contrário o programa será liberado assim que a “task” terminar.
17.3 – RELEASE:
EXEC CICSRELEASE PROGRAM (WS-PROG-NAME) END-EXEC
Condição de Erro: PGMIDERR
Para liberar da DSA o programa, mapa ou tabela anteriormente carregado com a opção HOLD. Esse procedimento precisa ser feito com muito cuidado se for usado, pois, uma vez dado o RELEASE, o programa não terá mais um endereçamento válido para a tabela e poderá causar um “Abend”.
document.doc 129 de 211
Curso CICS – Nível Pleno
Módulo 17
Resumo
Foi mostrado como podemos carregar dinamicamente em um programa, uma tabela, ou mapa, e como liberar as áreas alocadas, quando as mesmas não forem mais necessárias;
document.doc 130 de 211
Curso CICS – Nível Pleno
Módulo 17
Glossário
Assembler – Linguagem de programação, dita do mais baixo nível, isto é, suas instruções espelham a linguagem de máquina, em códigos binários;
document.doc 131 de 211
Curso CICS – Nível Pleno
Módulo 17
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop - [email protected]
document.doc 132 de 211
Curso CICS – Nível Pleno
Módulo 18
18. Controle de programa-2
18.1 – Start:
É possível startar uma task sem intervenção do elemento humano, com base somente no tempo, para isso usamos o comando START;
Para iniciar uma transação, passando dados, procedemos assim:
EXEC CICS START TRANSID (WS-TRAN-NAME)INTERVAL (n) / TIME (HHMMSS)
REQID (WS-TERM-NAME) TERMID (WS-TERM-NAME) FROM (WS-COMMAREA) LENGTH (WS-COMM-TAM) END-EXEC
N à em segundos
Cições de erro: LENGERR, INVREQ, TRANSIDERR, TERMIDERR, EXPIRED
O EIBCALEN será “setado” igual a zeros; usar o comando RETRIEVE para recuperar a Commarea.
TRANSID – Especifica a transação a ser iniciada, que deverá estar na PCT;
INTERVAL e TIME são mutuamente exclusivos;
INTERVAL – Especifica o período de tempo após o qual a transação será iniciada;
TIME – Especifica um horário no qual a transação se iniciará;
REQID – Especifica a identificação da transação, que pode ser útil se quisermos cancelar este START enquanto ainda estiver
esperando;
TERMID – Especifica o terminal em que a task deve ser iniciada;
FROM – Especifica os dados que serão passados;
LENGTH – Especifica o tamanho dos dados que estão sendo passados.
document.doc 133 de 211
Curso CICS – Nível Pleno
Módulo 18
document.doc 134 de 211
Citação
Se mais de um START for emitido para o mesmo Terminal, para o mesmo instante, os mesmos serão enfileirados,
e serão executados um de cada vez, pois apenas uma task pode estar ativa em um determinado terminal,
em um dado momento.
Curso CICS – Nível Pleno
Módulo 18
Exemplo:
EXEC CICS START TRANSID (‘TRN1’)TIME (200000)REQID (‘TRN1RQ01’)
TERMID (T360)FROM (WS-COMMAREA)LENGTH (LENGTH OF WS-
COMMAREA) END-EXEC
18.2 – Retrieve:
EXEC CICSRETRIEVE INTO (WS-COMMAREA) / SET (PRT-COMMAREA)LENGTH (WS-COMM-TAM)QUEUE (WS-TS-FILA)WAIT
END-EXEC
Condição de Erro: LENGERR, ENDDATA, NOTFND;
INTO e SET TIME são mutuamente exclusivos;
INTO – Especifica a área da WS do programa chamado, reservada para os dados;
SET – Especifica o endereço onde queremos que os dados sejam colocados;
LENGHT – Especifica o tamanho da área, quando usamos o parâmetro SET;
QUEUE - Especifica uma área de TS que será acessada;
Se houver a possibilidade de uma outra, ou mais outras tasks estarem aguardando para executar a mesma transação, no mesmo terminal, passando dados, podemos processar um “looping” emitindo comandos RETRIEVE e tratando os dados, até que ocorra a condição de erro “ENDDATA”.
document.doc 135 de 211
SAIBA MAIS: Se a opção WAIT for especificada, a task ficará esperando até todos registros serem acessados, inclusive os já expirados.
Curso CICS – Nível Pleno
Módulo 18
Resumo
Foi explicado como “startar” uma transação com base no fator tempo,Os possíveis parâmetros, e como proceder para recuperar os dados passados;
Foi mostrado o uso do comando Retrieve, para obter os dados passados para uma transação, via Start;
document.doc 136 de 211
Curso CICS – Nível Pleno
Módulo 18
Glossário
Looping – Uma série de procedimentos, realizados de maneira repetitiva, até que uma condição ocorra e quebre esse tabu;
document.doc 137 de 211
Curso CICS – Nível Pleno
Módulo 18
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop - [email protected]
document.doc 138 de 211
Curso CICS – Nível Pleno
Módulo 19
19. Comandos de espera
. DELAY
. CANCEL
. POST
. WAIT
19.1 – Delay:
Comando de controle de tempo – Através do uso do “Interval Control” (controle de intervalo) temos a possibilidade de adiar uma task, ou determinar o horário em que ela deve ser executada.
EXEC CICS DELAY INTERVAL (n) / TIME (HHMMSS)REQID (WS-TERM-NAME)
END-EXEC
- INTERVAL e TIME são mutuamente exclusivos;
- INTERVAL – Especifica o período de tempo após o qual a transação será iniciada;
- TIME – Especifica um horário no qual a transação se iniciará;
- REQID – Especifica a identificação da transação, que pode ser útil se quisermos cancelar este START enquanto ainda estiver
esperando;
Exemplo:
WORKING STORAGE SETION. 01WS-DADOS-CICS.
05 WS-TIME PIC S9X(07) COMP-3 VALUE +110000.
EXEC CICS DELAY TIME (WS-TIME)REQID (‘TRN1RQ01’)
END-EXEC
Obs.: Time = hhmmss, onde ss (segundos) pode conter 00 a 59, mm (minutos) pode conter 00 a 59. hh (horas) pode
conter 00 a 99; quando o valor de horas for maior que 24, ao dar meia-noite o programa de ajuste de tempo irá subtrair 24 de todas as requisições que estiverem pendentes.
document.doc 139 de 211
Curso CICS – Nível Pleno
Módulo 19
document.doc 140 de 211
Citação
O comando CANCEL pode ser usado em combinação com os comandosPOST, START e DELAY.
Se um comando CANCEL for emitido após uma das funções acima,o intervalo à mesma referido se tornará sem efeito.
Curso CICS – Nível Pleno
Módulo 19
19.2 – Cancel:
É possível o cancelamento de uma solicitação, mediante a instrução a seguir:
EXEC CICS CANCEL REQID (nome)TRANSID (nome)
END-EXEC
- REQID – Especifica a identificação da solicitação (1 a 8 caracteres), que se quer cancelar (referente a um START ou um DELAY);
- TRANSID – Especifica a transação a ser cancelada.
Quando esta transação for usada em combinação com comando DELAY, o tempo não pode ter espirado.
19.3 – Post:
O CICS pode notificar uma task a respeito de uma solicitação que envolva o “Control Interval”, que ainda não estiver expirada, do seguinte modo:
EXEC CICS POST INTERVAL (n) / TIME (HHMMSS)SET (WS-PTR-POST)REQID (WS-TERM-NAME)
END-EXEC
- INTERVAL e TIME são mutuamente exclusivos;
- INTERVAL – Especifica o período de tempo após o qual a task será notificada;
- TIME – Especifica um horário no qual a task será notificada;
- SET – Esta opção informa o endereço do ECB (bloco de controle de eventos);
- REQID – Especifica a identificação da transação;
document.doc 141 de 211
SAIBA MAIS: O ECB (Event Control Block) é uma halfword inicializada com low-values; após o tempo estipulado o ECB é enviado sendo mudado para o valor hexadecimal X’40008000’.
Curso CICS – Nível Pleno
Módulo 19
document.doc 142 de 211
Citação
Vamos dar um exemplo envolvendo os comandos POST e WAIT,onde vamos permitir que o programa fique esperando 2 segundos,
antes de prosseguir o processamento da task.
Curso CICS – Nível Pleno
Módulo 19
19.4 – Wait:
É também possível no CICS esperar que um evento ocorra, do seguinte modo:
EXEC CICS WAIT EVENTECADDR (WS-PTR-ECA)
END-EXEC
- ECADDR – Esta opção informa o endereço da área onde o CICS deve pesquisar para ver se o evento ocorreu.
Isto pode ser aplicado para simular um tempo de resposta maior que o normal, então poderemos utilizar uma combinação dos comandos POST e WAIT, como exemplificado abaixo:
WORKING STORAGE SETION. 01 WS-WORK-AREA.
05 WS-REC-TAM PIC S9(04) COMP VALUE +100. 05 WS-REC-CNT PIC 9(02) VALUE +1.COPY PG01AMS.
LINKAGE SETION. 01 LK-PTR-LIST.
05 FILLER PIC S9(08) COMP. 05 LK-PTR-ECB PIC S9(08) COMP.
01 LK-ECB-AREA.05 FILLER PIC X(04).
PROCEDURE DIVISION.
. . .
. . .
EXEC CICS RECEIVE MAP (‘PG01AMP’)MAPSET (‘PG01AMS’)
END-EXEC
EXEC CICS POST INTERVAL (2)SET (LK-PTR-ECB)
END-EXEC
. . .
document.doc 143 de 211
Curso CICS – Nível Pleno
Módulo 19
document.doc 144 de 211
Citação
Após processar o mapa de entrada, verifica se o tempo expirou,
antes de enviar o mapa de saída.
Curso CICS – Nível Pleno
Módulo 19
IF LK-ECB-AREA EQUAL LOW-VALUESEXEC CICS WAIT EVENT
ECADDR (LK-PTR-ECB)END-EXEC
END-IF
EXEC CICS SEND MAP (‘PG01AMP’)MAPSET (‘PG01AMS’)
END-EXEC
EXEC CICS RETURN END-EXEC.
- O comando RECEIVE recebe os dados que foram informados pelo usuário;
- Após o comando POST, pedimos ao CICS que avise quando tiverem decorridos dois segundos. Este comando colocará no pointer LK-PTR-ECB o endereço da LK-ECB-AREA;
- Antes do envio do mapa queremos ter certeza que já decorreram 2 segundos, então é testado o campo LK-ECB-AREA e dá-se o comando WAIT;
19.5 – Condições de erro:
- ENDDDATA : Indica que não existem mais dados a serem obtidos;
- EXPIRED : Indica que o tempo especificado (POST/DELAY) expirou;
- INVREQ : Indica que o comando não é válido;
- INVTSREQ : Indica que a TS não está permitida;
- IOERR : Indica que não existem mais dados a serem obtidos;
- LENGERR : Indica que a área reservada no programa não tem tamanho suficiente para receber os dados;
- NOTFND : Identificador de solicitação (CANCEL) não foi encontrado;
- TERMIDERR : Indica que o terminal especificado não está na TCT;
- TRANSIDERR : Indica que a transação especificada não está na PCT;
document.doc 145 de 211
LEMBRETE: Quando o evento ocorrer o campo LK-ECB-AREA será preenchido e o processamento prosseguirá;
Curso CICS – Nível Pleno
Módulo 19
Resumo
Foram apresentados os comandos DELAY e CANCEL;
Foram mostrados e exemplificados os comandos POST e WAIT;
Por fim foram explicadas as condições de exceção que podem ocorrer para os comandos de “Interval Control”.
document.doc 146 de 211
Curso CICS – Nível Pleno
Módulo 19
Glossário
Interval Control – É uma facilidade do CICS que providencia as funções relacionadas com o tempo; não confundir com CI (Control Interval), que é uma característica dos arquivos VSAM;
document.doc 147 de 211
Curso CICS – Nível Pleno
Módulo 19
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop - [email protected]
document.doc 148 de 211
Curso CICS – Nível Pleno
Módulo 20
20. Endereçamento
Getmain
Freemain
Assign
Address
20.1 – Getmain:
O CICS possibilita que um programa solicite uma área de memória, através do comando abaixo:
EXEC CICS GETMAIN SET (LK-PRT-MAIN)LENGTH / FLENGTH (WS-MAIN-TAM)[ INITMG (data-value) ][ SHARED ]
END-EXEC
- SET – Esta opção informa o endereço da área de memória, na Linkage;
- LENGTH – Especifica o tamanho da área sendo adquirida;
- INITMG – Especifica 1 byte com caracter de preenchimento da área;
- SHARED – Uma área obtida com esta condição não será liberada, até que um FREEMAIN seja emitido; isto permite a comunicação task a task;
Condição de Erro: LENGERR(tamanho = 0); INVREQ (requisição inválida);NOSTG (memória requisitada não disponível -
suspender a task até que haja memória disponível).
20.2 – Freemain:
A Liberação de uma área de memória solicitada é feita da seguinte maneira:
EXEC CICS FREEMAIN DATA (LK-MAIN-AREA) END-EXEC
document.doc 149 de 211
LEMBRETE: O Getmain obtêm uma área da DSA, alinhadas em múltiplos de dupla palavra.
Curso CICS – Nível Pleno
- DATA – Esta opção informa a área da Linkage anteriormente adquirida;
document.doc 150 de 211
Curso CICS – Nível Pleno
Módulo 20
document.doc 151 de 211
Citação
Veremos a seguir os comandos que tratam diretamente com endereços,o ASSIGN (obtém tamanho de áreas na WS),
e o ADDRESS (obtém endereço de áreas na Linkage).
Curso CICS – Nível Pleno
Módulo 20
20.3 – Assign:
EXEC CICS ASSIGN option1 (WS-LEN-1)option2 (WS-LEN-2)
. . . END-EXEC
- options – CSALENG, CWALENG, TCTUALENG, TWALENG;
20.4 – Address:
EXEC CICS ADDRESS option1 (LK-PTR-1)option2 (LK-PTR-2) . . .
END-EXEC
- options – CSA, CWA, TCTUA, TWA;
- Condição de Erro: INVREQ
- Exemplo:
WORKING STORAGE SETION. 01 WS-WORK-AREA.
05 WS-LEN-CWA PIC S9(04) COMP VALUE +100.
LINKAGE SETION. 01 LK-PTR-LIST.
05 FILLER PIC S9(08) COMP. 05 LK-PTR-CWA PIC S9(08) COMP.
01 LK-CWA-AREA.05 FILLER PIC X(1O0).
PROCEDURE DIVISION. . . .
. . .
EXEC CICS ASSIGN CWALENG (WS-LEN-CWA) END-EXEC
IF WS-LEN-CWA GREATER ZEROSEXEC CICS ADDRESS CWA (ADRESS OF LK-CWA-AREA)END-EXEC
END-IF
document.doc 152 de 211
Curso CICS – Nível Pleno
Módulo 20
Resumo
Foi mostrado como se obtêm memória, na Linkage, e como se libera a memória obtida, quando esta não é mais necessária;
Foi apresentado e exemplificado como se obtêm o endereçamento de uma área especial do CICS.
document.doc 153 de 211
Curso CICS – Nível Pleno
Módulo 20
Glossário
Endereçamento – É uma palavra onde é colocado um valor hexadecimal que representa a localização relativa de um campo, ou de uma área numa região de memória;
document.doc 154 de 211
Curso CICS – Nível Pleno
Módulo 20
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop - [email protected]
document.doc 155 de 211
Curso CICS – Nível Pleno
Módulo 21
21. Conceito de TS
- Armazenamento Temporário
- Uso de TS em programa pseudo-conversacional
21.1 – Armazenamento Temporário:
- A passagem de dados via COMMAREA é rápido, porém tem um inconveniente: os dados não podem ser recuperados em caso de fim anormal. A solução é usar o recurso de Temporary Storage (TS);
- Essa área pode residir na memória principal ou em memória auxiliar, em arquivo VSAM, sendo esta última forma ideal para se armazenar grande quantidade de dados, sem problemas;
- Estas informações são guardadas como registros de tamanho variável, em filas seqüenciais; estas filas recebem um nome de até 8 posições que só precisam ser definidos previamente em tabela do CICS, a TST (Temporary Storage Table), para caso de recuperação por fim anormal;
- Um ou mais programas podem gravar itens em uma mesma fila (WRITEQ TS), e um ou mais programas podem acessar os itens dessa fila (READQ TS). Deve-se, contudo, prever em que momento essa fila já foi processada, ou não será mais necessária e providenciar a deleção da mesma (DELETEQ TS);
document.doc 156 de 211
SAIBA MAIS: Outra técnica consiste em fazer, antes de iniciar a gravação de uma fila específica, um teste para verificar se a fila já existe; em caso afirmativo deletá-la.
Curso CICS – Nível Pleno
Módulo 21
document.doc 157 de 211
Citação
Vamos apresentar um exemplo de como podemos aplicar as características da TSpara controlar a execução de uma transação, em fases,
que caracteriza o processamento pseudoconversacional.
Curso CICS – Nível Pleno
Módulo 21
21.2 – Uso de TS em programa pseudoconversacional:
- TS (Temporary Storage) é um recurso que permite o armazenamento de dados por um período indefinido (até que sejam deletados);
- Os dados podem ser direcionados para o mesmo programa por “RETURN TRANSID”, determinando etapas do processamento (o número da etapa deve ser um dos campos gravados na TS), por exemplo:
- Etapa 1 – Procedimentos iniciais (padrão da instalação); Mensagem = ’Digite os dados e tecle ENTER’;
Envio da tela inicial (mapa);TS é gerada; Etapa = 2;
- Etapa 2 – Recebimento do mapa inicial; Verificação das teclas de função; Consistência dos dados;
Se houver erro, envia mensagem; Se não houver erro Etapa = 3;
- Etapa 3 – Recebimento do mapa; Prepara a execução da operação solicitada (Consulta / Inclusão
/ Alteração / Exclusão / Lista por chave / Impressão, etc.); Em caso de não modificar a base de dados,
Mensagem = ‘Operação efetuada’, Re-envio da tela inicial (mapa); Etapa = 2; Em caso de modificação da base de dados, Mensagem = ‘Tecle PFn; Etapa = 4;
- Etapa 4 – Efetua atualização efetiva na base de dados; Mensagem = ‘Operação efetuada’;
Re-envio da tela inicial (mapa); Etapa = 2;
- Ao teclar CELAR ou PFn, encerrar o processamento (RETURN); delatar a TS;
- (Obs.: O exemplo acima é meramente sugestivo).
- Os dados podem ser passados para outro programa, ou grupo de programas (LINK ou XCTL), por exemplo:
Um programa Menu obtêm informações sobre uma “Chave”;Uma operação é solicitada para essa “Chave”;
Dependendo da operação o controle é desviado para um programa específico, passando informações via TS;
Cada programa chamado pode completar as informações iniciais; Quando a operação for encerrada, ou abandonada, a TS é deletada;
document.doc 158 de 211
Curso CICS – Nível Pleno
Módulo 21
Resumo
Foram apresentados conceitos para utilização de TS (Temporary Storage);
Foi dado um exemplo prático de como podemos aproveitar os conceitos de TS,no processamento de transações pseudoconversacionais.
document.doc 159 de 211
Curso CICS – Nível Pleno
Módulo 21
Glossário
Pseudoconversacional – É um esquema que simula uma conversação entre o programa de aplicação e o usuário de uma transação; porém, a cada passo dessa conversação as informações necessárias para o prosseguimento do processo são salvas e os recursos do CICS são liberados
document.doc 160 de 211
Curso CICS – Nível Pleno
Módulo 21
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop - [email protected]
document.doc 161 de 211
Curso CICS – Nível Pleno
Módulo 22
22. Operações com TS-1
- Gravando a TS
- Lendo a TS
22.1 – Gravando a Temporary Storage:
EXEC CICS WRITEQ TS QUEUE (nome)FROM (WS-TS-AREA)LENGTH (WS-TS-TAM) [ ITEM (WS-TS-ITEM) ][ MAIN / AUXILIARY ][ RESP (WS-TS-RESP) ]
END-EXEC
- QUEUE – Especifica o nome da fila na qual os registros serão armazenados;
- FROM – Especifica a área da WS onde estão os dados que serão gravados;
- LENGTH – Especifica o tamanho dos dados que vão ser gravados;
- ITEM – Especifica o campo onde o CICS devolverá o número seqüencial do registro que acabou de ser gravado;
- MAIN – Especifica que os dados que serão gravados na memória principal (sem ocorrência de I/O);
- AUXILIARY – Especifica que os dados que serão gravados em memória auxiliar (disco, c/ ocorrência de I/O); essa opção será assumida se nenhuma for especificada;
- RESP – Especifica o campo onde o CICS devolverá o EIBRESP para que o programa teste o sucesso da operação; ITEMERR indicará que não existem mais itens para ler, ou seja, ocorreu fim da fila de TS;
- Exemplo:
WORKING STORAGE SETION. 01 WS-WORK-AREA.
05 WS-TS-AREA PIC X(100).05 WS-TS-ITEM PIC S9(04) COMP VALUE ZEROS.
05 WS-TS-RESP PIC X(01).
EXEC CICS WRITEQ TS QUEUE (‘TERMX01A’)FROM (WS-TS-AREA) à preenchidoITEM (WS-TS-ITEM) à CICS devolveRESP (WS-TS-RESP) à CICS devolve
END-EXEC
document.doc 162 de 211
Curso CICS – Nível Pleno
Módulo 22
document.doc 163 de 211
Citação
Com o comando READQ é possível recuperar uma TS gravada conforme veremos adiante.
Curso CICS – Nível Pleno
Módulo 22
22.2 – Lendo a Temporary Storage:
EXEC CICS READQ TS QUEUE (nome)INTO (WS-TS-AREA) / SET (LK-PTR-TS-AREA)
LENGTH (WS-TS-TAM) [ ITEM (WS-TS-ITEM) / NEXT ][ NUMITENS (WS-TS-QT-IT) ]
[ RESP (WS-TS-RESP ] END-EXEC
- QUEUE – Especifica o nome da fila que desejamos acessar;
- INTO – Especifica a área da WS onde o registro será colocado;
- SET – Especifica a área da Linkage onde está o endereço da área na qual o registro será colocado;
- LENGTH – Especifica o tamanho da área receptora;
- ITEM – Especifica o campo com o número do registro desejado;
- NEXT – Especifica que será lido o próximo registro seqüencial da fila; esta opção será assumida, se nenhuma for especificada;
- NUMITENS – Especifica o campo onde o CICS devolverá a quantidade total de itens gravados;
- RESP – Especifica o campo onde o CICS devolverá o EIBRESP para que o programa teste o sucesso da operação; ITEMERR indicará que não existem mais itens para ler, ou seja, ocorreu fim da fila de TS;
- Exemplo:
EXEC CICS READQ TSQUEUE (WS-DESCRQ)SET (WS-PTR-PREF)LENGTH (WS-LENG)NEXT
END-EXEC
document.doc 164 de 211
OBSERVAÇÃO: O pointer é posicionado com o endereço do dado acessado, até o próximo Readq TS, a menos que seja modificado pelo programa.
Curso CICS – Nível Pleno
Módulo 22
Resumo
Foi descrita a operação de gravação de uma TS e seus respectivos parâmetros;também foi detalhada a operação de gravação de uma TS e seus respectivos parâmetros;
Foram exemplificadas as operações acima mencionadas.
document.doc 165 de 211
Curso CICS – Nível Pleno
Módulo 22
Glossário
Fila – Diz-se de um conjunto de informações gravadas na TS, formando uma espécie de arquivo;
document.doc 166 de 211
Curso CICS – Nível Pleno
Módulo 22
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop – [email protected]
document.doc 167 de 211
Curso CICS – Nível Pleno
Módulo 23
23. Operações com TS-2
- Deleção de TS
- Regravação de TS
- Condições de erro no uso de TS
23.1 – Deleção de TS:
EXEC CICS DELETEQ TS QUEUE (nome) END-EXEC
- QUEUE – Especifica o nome da fila que desejamos deletar;
23.2 – Regravação de TS:
EXEC CICS WRITEQ TS QUEUE (nome)FROM (WS-TS-AREA)REWRITE [ NOSUSPEND ][ ITEM (WS-TS-ITEM) ][ RESP (WS-TS-RESP) ]
END-EXEC
- QUEUE: Especifica o nome da fila na qual os registros serão armazenados;
- FROM: Especifica a área da WS onde estão os dados que serão gravados;
- REWRITE : Indica que vai ser feita uma regravação;
- ITEM: Especifica o campo onde está o item a ser regravado;
- RESP: Especifica o campo onde o CICS devolverá o EIBRESP para que o programa teste o sucesso da operação;
- O programa não deve emitir m WRITEQ TS, se já foi emitido um DELETEQ TS para a mesma unidade lógica de trabalho, até que a task termine.
document.doc 168 de 211
Curso CICS – Nível Pleno
Módulo 23
document.doc 169 de 211
Citação
Vamos apresentar agora as condições de erro possíveis,ao tratarmos com os comandos de TS.
Curso CICS – Nível Pleno
Módulo 23
23.3 – Condições de erro:
- INVREQ : Erro na gravação, tamanho zero ou tamanho maior que o tamanho do CI (Control Interval) da TS;
- IOERR : Indica erro de operação de I/O;
- ITEMERR : Item não encontrado na leitura ou regravação da TS;
- LENGERR : Área reservada não tem tamanho suficiente p/ receber o registro;
- NOSPACE : Não há espaço suficiente (na memória) para armazenar o registro;
- QIDERR : Nome não encontrado (leitura/deleção/regravação), nem na memória auxiliar (disco), nem na principal;
document.doc 170 de 211
ATENÇÃO: Se não há espaço suficiente para a gravação da TS, a task ficará suspensa até que o espaço seja liberado; mas se a opção NOSUSPEND foi especificada, ocorrerá a condição de NOSPACE.
Curso CICS – Nível Pleno
Módulo 23
Resumo
Foi descrito o comando para se fazer a deleção de filas de da TS (Deleteq) e também o comando para se proceder à atualização dessas filas (Writeq c/ opção Rewrite);
Por fim foram explicadas as condições de exceção, correspondentes ao uso da Temporary Storage.
document.doc 171 de 211
Curso CICS – Nível Pleno
Módulo 23
Glossário
Memória auxiliar – Se refere a uma área em disco (arquivo), não um espaço da região onde o CICS está rodando;
document.doc 172 de 211
Curso CICS – Nível Pleno
Módulo 23
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop – [email protected]
document.doc 173 de 211
Curso CICS – Nível Pleno
Módulo 24
24. Aplicação de TS
- Modelo de mapa com paginação
- Uso de TS para paginação de mapas
24.1 – Modelo de mapa com paginação:
- Por exemplo, numa consulta de produtos podemos ter a tela abaixo:
1...5...10...15...20...25...30...35...40...45...50...55...60...65...70...75...80 01#04/01/2005 #POLITEC #PROGR01A 02#08:29:59 #Página #nnn 03 #LISTA DE PRODUTOS #Depto #nnn 04 05#OP COD.PROD. DESCRIÇÃO DO PRODUTO QTDE. VALOR ESTOQUE 06#XX 9999 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 9.999.999 999.999.999.999,99 07#XX 9999 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 9.999.999 999.999.999.999,99 08#XX 9999 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 9.999.999 999.999.999.999,99 09#XX 9999 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 9.999.999 999.999.999.999,99 10#XX 9999 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 9.999.999 999.999.999.999,99 11#XX 9999 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 9.999.999 999.999.999.999,99 12#XX 9999 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 9.999.999 999.999.999.999,99 13#XX 9999 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 9.999.999 999.999.999.999,99 14#XX 9999 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 9.999.999 999.999.999.999,99 15#XX 9999 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 9.999.999 999.999.999.999,99 16#XX 9999 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 9.999.999 999.999.999.999,99 17#XX 9999 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 9.999.999 999.999.999.999,99 18#XX 9999 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 9.999.999 999.999.999.999,99 19#XX 9999 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 9.999.999 999.999.999.999,99 20#XX 9999 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 9.999.999 999.999.999.999,99 21 22# PF1=Help PF3=Volta PF4=Menu PF7=Prox.Pag. PF8=Pag.Ant Clear=Sai do CICS 23 24#MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
document.doc 174 de 211
Curso CICS – Nível Pleno
Módulo 24
document.doc 175 de 211
Citação
Uma possibilidade real é o uso de TS para paginação de mapas;
Verifique as considerações a seguir e veja como isso é possível.
Curso CICS – Nível Pleno
Módulo 24
24.1 – Uso de TS para paginação de mapas:
Considerações sobre a tela da página anterior:
- Com 15 linhas por página, se tivermos, num determinado departamento, 1200 produtos, será gerada uma lista de 80 páginas;
- Ao usuário, num determinado momento, pode interessar só as 3 primeiras páginas, e após consultá-las, sairá da transação; ou pode se interessar só pela primeira e pela última; e assim por diante;
- Uma solução é formatar a página 1 (com 15 primeiros produtos, IND=1 a 15), e gravá-la no ITEM 1 de uma TS, depois formatar a página 2 (com outros 15 produtos, IND=16 a 30), e gravá-la no ITEM 2 da TS, até terminarem os produtos;
- Isso feito mostramos a página 1 (= ITEM 1), e guardamos na COMMAREA, ou numa TS de controle, o nome da TS e o número do ITEM corrente (= 1);
- Poderemos então navegar para frente (PF8 = se item corrente < NUMITENS, item corrente + 1), para trás (PF7 = se item corrente > 1, item corrente - 1 ), poderemos ter uma PF para mostrarmos a última página (NUMITENS) e uma PF para voltar imediatamente para a primeira página;
- A coluna “OP” será mostrada desprotegida e, através de códigos estabelecidos, será possível fazer uma operação de consulta para o produto selecionado, abrindo uma tela ou janela, com mais detalhes, voltando a seguir para a página corrente da paginação;
- Igualmente poderá ser aberta uma tela para alteração do produto selecionado e, findada esta operação, voltar para a página corrente da paginação, devidamente atualizada (REWRITE);
- Para desta forma se proceder a deleções, o campo “OP” correspondente passará a aparecer protegido (REWRITE);
- Se forem feitas inclusões, os novos produtos não serão demonstrados, até que se determine um “Refresh” da TS toda;
- Opcionalmente poderá ser demonstrada na última uma totalização das quantidades e valores;
document.doc 176 de 211
Curso CICS – Nível Pleno
document.doc 177 de 211
LEMBRETE: Poderão ser demonstradas totalizações intermediárias e quebras de página, mas não entraremos nestes detalhes de lógica de programa.
Curso CICS – Nível Pleno
Módulo 24
Resumo
Foi dado um exemplo de mapa com paginação;
A seguir foram tecidas considerações a respeito da montagem da paginação.
document.doc 178 de 211
Curso CICS – Nível Pleno
Módulo 24
Glossário
Paginação – É o processo em que se mostra uma espécie de relatório on-line, navegando-se para frente e para trás, para acessar as páginas do mesmo.
document.doc 179 de 211
Curso CICS – Nível Pleno
Módulo 24
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop - [email protected]
document.doc 180 de 211
Curso CICS – Nível Pleno
Módulo 25
25. Conceitos de TD
- Armazenamento Transiente
- Writeq TD
25.1 – Armazenamento Transiente:
- O TDP (Transient Data Program) cria dados em filas transitórias, que pode ser “Extrapartition” ou “Intrapartition”, de tamanho fixo ou variável;
- Cada fila “Extrapartition” corresponde a um arquivo sequencial, de organização QSAM, definidos da DCT (Destination Control Table); estes arquivos podem ser utilizados fora do CICS, via Job’s Batch, como input ou output; eles podem ser lidos e relidos, mas não podem ser atualizados ou deletados fisicamente dentro do CICS;
- As filas “Intrapartition” são direcionadas para um arquivo VSAM ESDS chamado DFHINTRA, que são gravados e lidos sequencialmente em filas definidas na DCT; só podem ser acessados uma única vez pois a leitura é destrutiva;
- Fluxo básico do processamento CICS, usando Transient Data:
Extrapartition
document.doc 181 de 211
DF
HT
DP
PR
OG
RA
MA
EX
EC
CIC
S
RE
AD
Q/W
RIT
EQ
TD
DF
HD
CT
DE
ST
ID
DF
HIN
TR
A
BA
TC
H
RE
GIO
N
Curso CICS – Nível Pleno
Módulo 25
document.doc 182 de 211
Citação
Definição de uma fila Extrapartition:DFHDCT TYPE=EXTRA,
DESTID=E01A,DSCNAME=DDEA01, à Aponta para o DDNAME, no JCL OPEN=INITIA
Definição de uma fila Intrapartition:DFHDCT TYPE=INTRA,
DESTID=E01A à É o nome de uma QueueDESTFAC=TERMNAL
TRANSID=T01ATRIGLEV=1
Curso CICS – Nível Pleno
Módulo 25
25.2 – Gravando a Transient Data:
EXEC CICS WRITEQ TD QUEUE (nome)FROM (WS-TS-AREA)LENGTH (WS-TS-TAM) [ RESP (WS-TS-RESP) ]
END-EXEC
- QUEUE – Especifica o nome da fila na qual os registros serão gravados;
- FROM – Especifica a área da WS onde estão os dados que serão gravados;
- LENGTH – Especifica o tamanho do registro que vai ser gravado;
- RESP – Especifica o campo onde o CICS devolverá o EIBRESP para que o programa teste o sucesso da operação;
- Exemplo:
WORKING STORAGE SETION. 01 WS-WORK-AREA. 05 WS-TD-AREA PIC X(100) VALUE SPACES. 05 WS-TD-RESP PIC X(01).
EXEC CICS WRITEQ TD QUEUE (‘X01A’)FROM (WS-TD-AREA) à preenchidoRESP (WS-TD-RESP) à CICS devolve
END-EXEC
document.doc 183 de 211
OBSERVAÇÃO: Cada fila de TD está associada a um arq. Seqüencial, fora do
CICS, de tam. Fixo ou variável, blocado ou não;
.
Curso CICS – Nível Pleno
Módulo 25
Resumo
Foi descrita a armazenagem de uma Transient Data (TD);
Foi detalhada a operação de gravação de uma TD, e seus respectivos parâmetros;
Foi exemplificada a operação acima mencionada;
document.doc 184 de 211
Curso CICS – Nível Pleno
Módulo 25
Glossário
Fila Intrapartition – Informações que são passadas de uma transação para outra, dentro do CICS;
Fila Extrapartition – Registros que, além de serem passados de uma transação
para outra dentro do CICS, ficam gravados em arquivo seqüencial, disponível para acesso fora do CICS, via Batch;
document.doc 185 de 211
Curso CICS – Nível Pleno
Módulo 25
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop – [email protected]
document.doc 186 de 211
Curso CICS – Nível Pleno
Módulo 26
26. Operações com TD
- Readq TD
- Deleteq TD
- Condições de erro
26.1 – Lendo a Transient Data:
EXEC CICS READQ TD QUEUE (nome)INTO (WS-TD-AREA) / SET (LK-PTR-TD-AREA)
LENGTH (WS-TD-TAM) [ RESP (WS-TD-RESP ]
END-EXEC
- QUEUE– Especifica o nome da fila (1 a 4 caracteres), que desejamos acessar;
- INTO – Especifica a área da WS onde o registro será colocado;
- SET – Especifica a área da Linkage onde está o endereço da área na qual o registro será colocado;
- LENGTH – Especifica o tamanho do registro;
- RESP – Especifica o campo onde o CICS devolverá o EIBRESP para que o programa teste o sucesso da operação
- Exemplo:
WORKING STORAGE SETION. 01 WS-WORK-AREA. 05 WS-TD-AREA PIC X(100) VALUE SPACES.
05 WS-TD-RESP PIC X(01).
EXEC CICS READQ TD QUEUE (‘X01A’)INTO (WS-TD-AREA) à CICS devolveRESP (WS-TD-RESP) à CICS devolve
END-EXEC
document.doc 187 de 211
Curso CICS – Nível Pleno
Módulo 26
document.doc 188 de 211
Citação
Após a leitura dos registros da TD, podem ser excluídas as filas que não são mais necessárias, através do comando Deletq.
Curso CICS – Nível Pleno
Módulo 26
26.2 – Deletando a Transient Data:
EXEC CICS DELETQ TD QUEUE (nome)[ RESP (WS-TD-RESP ]
END-EXEC
- QUEUE– Especifica o nome da fila (1 a 4 caracteres), que desejamos deletar;
26.3 – Condições de erro:
- IOERR – Indica que ocorreu erro de operação de I/O;
- LENGERR – Área de entrada (READQ.) insuficiente para receber o registro; área de saída maior que o máximo especificado na DCT;
- NOSPACE – Não há mais espaço para gravação de registros na TD;
- QBUSY – A fila que está querendo ser lida, está sendo gravada ou excluída; esperar até que a fila não esteja mais ocupada;
- QIDERR – O nome da fila não foi encontrado na DCT;
- QZERO – Fim de fila; não existem mais registros para serem lidos;
document.doc 189 de 211
OBSERVAÇÃO: Os dados são lidos uma única vez; o CICS atualiza o pointer,Indicando onde será a próxima leitura;
Curso CICS – Nível Pleno
Módulo 26
Resumo
Foi detalhada a operação de leitura de uma TD, e seus respectivos parâmetros;
Foi também explicado como se deleta uma fila de TD;
Foram exemplificadas as operações acima mencionadas;
Por fim foram apresentadas as condições de erro para TD.
document.doc 190 de 211
Curso CICS – Nível Pleno
Módulo 26
Glossário
Transient Data – Dados transitórios criados em filas passadas a outras transações do CICS, ou gravados em arquivos para uso fora do CICS;
document.doc 191 de 211
Curso CICS – Nível Pleno
Módulo 26
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop – [email protected]
document.doc 192 de 211
Curso CICS – Nível Pleno
Módulo 27
27. Manuseio de Datas
- AskTime
- FormatTime
- Condições de erro no manuseio de Datas
27.1 – AskTime:
Para obtermos a data e hora do dia, usa-se o seguinte comando:
EXEC CICS ASKTIMEABSTIME (WS-ABSTIME)
END-EXEC
- ABSTIME - E uma dupla palavra, em binário, onde são colocadas a Data e a Hora (até milésimos de segundo);
27.2 – FormatTime:
EXEC CICS ASKTIMEABSTIME (WS-ABSTIME)YYDDD (WS-YYDDD)
YYMMDD (WS-YYMMDD)YYDDMM (WS-YYDDMM)DDMMYY (WS-DDMMYY)MMDDYY (WS-MMDDYY)DATEFORM (WS-DATEFORM)DATE (WS-DATE)DATESEP (valor)
DAYCOUNT (WS-DAY-COUNT)DAYOFWEEK (WS-DAY-WEEK)
DAYOFMONTH (WS-DAY-MONTH)MONTHOFYEAR (WS-MONTH)YEAR (WS-YEAR)TIME (WS-TIME)TIMESEP (WS-TIMESEP)
END-EXEC
document.doc 193 de 211
OBSERVAÇÃO: Os campos EIBDATE e EIBTIME serão atualizados no EIB; Este comando é preferível a outras rotinas usadas no programa de aplicação.
Curso CICS – Nível Pleno
Módulo 27
document.doc 194 de 211
Citação
Existem muitas maneiras de formatarmos uma data ou um horário,Veja a seguir como isso pode ser feito;
Curso CICS – Nível Pleno
Módulo 27
- ABSTIME - É uma dupla palavra (em Cobol: PIC S9(15) COMP-3), onde são colocadas a Data e a Hora (até milésimos de segundo);
- YYDDD - Campo de 6 bytes com data em formato juliano; separador opcional (se opção DATESEP especificada);
- YYMMDD / YYDDMM / DDMMYY / MMDDYY – Campo de 8 bytes com data no formato especificado; separador opcional (se opção DATESEP especificada);
- DATEFORM - Área de 6 bytes com o formato de data padrão da instalação (um dos formatos do parágrafo anterior);
- DATE - Campo de 8 bytes com data no formato padrão da instalação; separador opcional (se opção DATESEP especificada);
- DATESEP - Caracter a ser usado como separador de data; se omitido ‘/’’ será assumido;
- DAYCOUNT - É uma palavra, em binário, onde será colocado o número dias decorridos desde o dia primeiro de janeiro;
- DAYOFWEEK - É uma palavra, em binário, onde será colocado o número correspondente ao dia da semana (1=Domingo, etc.);
- DAYOFMONTH - É uma palavra, em binário, onde será colocado dia dentro do mês;
- MONTHOFYEAR – É uma palavra, em binário, onde será colocado o número do mês no ano (1=janeiro, etc.);
- YEAR - É uma palavra, em binário, onde será colocado o ano com 4 dígitos;
- TIME - Campo de 8 bytes com hora em formato hhmmss; separador opcional (se opção TIMESEP especificada);
- TIMESEP - Caracter a ser usado como separador de horário; se omitido ‘:’’ será assumido;
27.3 – Condições de erro:
- INVREQ - ABSTIME com formato incorreto;
document.doc 195 de 211
Curso CICS – Nível Pleno
Módulo 27
Resumo
Foram os modos de se obter a data e o horário, em seus diversos formatos.
document.doc 196 de 211
Curso CICS – Nível Pleno
Módulo 27
Glossário
DD – Day (dia, com 2 dígitos);
MM – Month (mês, com 2 dígitos);
YY – Year (ano, com 2 dígitos);
document.doc 197 de 211
Curso CICS – Nível Pleno
Módulo 27
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop - [email protected]
document.doc 198 de 211
Curso CICS – Nível Pleno
Módulo 28
28. Envio de Mapas
. Send Map
. Receive Map
. Condições de erro
28.1 – Send Map:
O Send Map pega os dados do mapa simbólico (WS), agrega-os ao mapa físico (compilado) e envia para o terminal do usuário.
EXEC CICS SEND MAP (‘P01AMP1’)MAPSET (‘P01MAS’) [ FROM (P01AMP1O) ] [LENGTH (valor) ][ CURSOR (VALOR) ][ ALARM ] [ FREEKB ][ MAPONLY / DATONLY ][ ERASE / ERASEAUP ][ FRSET ] [ PRINT ][ RESP (WS-BR-RESP) ]
END-EXEC
- MAP – Nome do mapa;
- MAPSET – Nome do Mapset;
- FROM – Nome da área do mapa simbólico, se o mesmo não for o MAP DSECT;
- LENGTH – Tamanho do mapa simbólico, usando a cláusula FROM;
- CURSOR - Usada para modificar o posicionamento do Cursor, por exemplo, quando um campo está inconsistente;
- ALARM - Emite um som de alerta, quando envia a tela;
- FREEKB - O teclado do terminal é liberado após o envio do mapa;
document.doc 199 de 211
ATENÇÃO: Para ligar o MDT use o atributo = FSET;
Curso CICS – Nível Pleno
Módulo 28
document.doc 200 de 211
Citação
Não é movendo Spaces que se limpa a tela, mas sim usando o parâmetro Erase;
Mover Low-values também não limpa a tela, mas mantém os campos como estão;
Quando for especificado o parâmetro Cursor, ele tem primazia sobre o atributo IC do mapa físico;.
Curso CICS – Nível Pleno
Módulo 28
- MAPONLY / DATONLY – São mutuamente exclusivos; servem para economizar transmissão de dados;
- MAPONLY - Faz que seja enviado ao terminal apenas o mapa físico (mapa limpo); normalmente se faz isso na primeira execução de uma transação;
- DATONLY - Faz que seja enviado ao terminal apenas os dados do mapa simbólico, fazendo um “refresh” da tela (o mapa físico já deve ter sido enviando anteriormente;
- ERASE / ERASEAUP – São mutuamente exclusivos;
- ERASE - Limpa a tela antes de enviar o mapa;
- ERASEAUP - Limpa somente os campos não protegidos da tela, antes de enviar o mapa;
- FRSET -
- PRINT -
- RESP - Se quisermos testar o retorno (EIBRESP);
document.doc 201 de 211
OBSERVAÇÃO: Para posicionar o Cursor no comando Send, mover (-1) para o campo com sufixo “L”;
Curso CICS – Nível Pleno
Módulo 28
document.doc 202 de 211
Citação
Vamos apresentar, a seguir o comando RECEIVE MAP,com ele disponibilizaremos no programa de aplicação
a posição das tela alterada pelo usuário, em sua última interação.
Curso CICS – Nível Pleno
Módulo 28
28.2 – Receive Map:
EXEC CICS SEND MAP (‘P01AMP1’)MAPSET (‘P01MAS’)
INTO (WS-MP-AREA) / SET (LK-PRT-MP-AREA) [ FROM (P01AMP1O) ] [LENGTH (valor) ]
[ RESP (WS-BR-RESP) ] END-EXEC
- MAP - Nome do mapa;
- MAPSET - Nome do Mapset;
- INTO / SET - São mutuamente exclusivos;
- INTO - Nome da área do mapa simbólico, na WS, se a mesmo não for o MAP DSECT;
- SET - Idem acima, se a área for na Linkage;
- FROM / LENGTH – São usados se os dados a serem mapeados já estão disponíveis para o programa;
- RESP - Se quisermos testar o retorno (EIBRESP);
document.doc 203 de 211
Curso CICS – Nível Pleno
Módulo 28
document.doc 204 de 211
Citação
A condição de MAPFAIL pode ocorrer nas seguintes condições:
- tela em branco (limpa) no momento do Receive Map;- tela com um mapa, porém nenhum campo com MDT On;- O usuário tecla CLEAR ou PAn;- conteúdo da tela composto de dados não formatados;
Curso CICS – Nível Pleno
Módulo 28
28.3 – Condições de erro:
INVMPSZ - Indica que o mapa sendo enviado não está de acordo com o terminal;
MAPFAIL - Conjunto de dados não formatados ou não existem dados;
EOC - Ocorre se a unidade recebe um indicador de “end-of-chain”;
INVREQ - Ocorre se o terminal associado à task não é reconhecido pelo CICS;
IGREQCD- Terminal requisitado pelo SEND está dedicado a outra requisição;
OVERFLOW- O mapa não cabe na página corrente;
TSIOERR - Irrecuperável erro de I/O na TS;
document.doc 205 de 211
Curso CICS – Nível Pleno
Módulo 28
Resumo
Foi apresentado o comando Send Map sendo explicados todos os seus parâmetros;
Foi apresentado o comando Receive Send Map sendo explicados todos os seus parâmetros;
Por fim foram apresentadas as condições de exceção;
document.doc 206 de 211
Curso CICS – Nível Pleno
Módulo 28
Glossário
Mapa físico – Constantes e atributos definidos na criação do mapa (Macro DFHMDF);
Mapa simbólico – Variáveis do mapa que fazem parte do book gerado;
document.doc 207 de 211
Curso CICS – Nível Pleno
Módulo 28
Bibliografia
CICS: programando usando Cobol / William G. Bruno – Ed. Campus.
CICS/VS – Aplic. Progr. Ref. – SC33 – 0077 - IBM
CICS/VS – Aplic. Progr. Ref. (Macro) – SC33 – 0079 – IBM
CICS/VS – Operator’s Guide – SC33 – 0080 – IBM
CICS – Introdução – Coleoar-GSO-Disop - [email protected]
document.doc 208 de 211
Curso CICS – Nível Pleno
document.doc 209 de 211
Curso CICS – Nível Pleno
document.doc 210 de 211
Politec Informática Ltda.Rua Profa Helena Moura Lacerda, 131
Vl. Leopoldina – São Paulo - SPCEP 05319-010www.politec.com.br