248

Curso CICS – Nível Pleno.DOC

Embed Size (px)

Citation preview

Page 1: Curso CICS – Nível Pleno.DOC

CICSNível Pleno

Page 2: Curso CICS – Nível Pleno.DOC

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

Page 3: Curso CICS – Nível Pleno.DOC

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

Page 4: Curso CICS – Nível Pleno.DOC

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

Page 5: Curso CICS – Nível Pleno.DOC

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

Page 6: Curso CICS – Nível Pleno.DOC

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

Page 7: Curso CICS – Nível Pleno.DOC

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

Page 8: Curso CICS – Nível Pleno.DOC

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

Page 9: Curso CICS – Nível Pleno.DOC

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

Page 10: Curso CICS – Nível Pleno.DOC

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.

Page 11: Curso CICS – Nível Pleno.DOC

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.

Page 12: Curso CICS – Nível Pleno.DOC

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.

Page 13: Curso CICS – Nível Pleno.DOC

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

Page 14: Curso CICS – Nível Pleno.DOC

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

Page 15: Curso CICS – Nível Pleno.DOC

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

Page 16: Curso CICS – Nível Pleno.DOC

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

Page 17: Curso CICS – Nível Pleno.DOC

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);

Page 18: Curso CICS – Nível Pleno.DOC

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.

Page 19: Curso CICS – Nível Pleno.DOC

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

Page 20: Curso CICS – Nível Pleno.DOC

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

Page 21: Curso CICS – Nível Pleno.DOC

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

Page 22: Curso CICS – Nível Pleno.DOC

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

Page 23: Curso CICS – Nível Pleno.DOC

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.

Page 24: Curso CICS – Nível Pleno.DOC

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.

Page 25: Curso CICS – Nível Pleno.DOC

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

Page 26: Curso CICS – Nível Pleno.DOC

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

Page 27: Curso CICS – Nível Pleno.DOC

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.

Page 28: Curso CICS – Nível Pleno.DOC

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

Page 29: Curso CICS – Nível Pleno.DOC

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

Page 30: Curso CICS – Nível Pleno.DOC

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

Page 31: Curso CICS – Nível Pleno.DOC

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

Page 32: Curso CICS – Nível Pleno.DOC

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.

Page 33: Curso CICS – Nível Pleno.DOC

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.

Page 34: Curso CICS – Nível Pleno.DOC

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

Page 35: Curso CICS – Nível Pleno.DOC

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

Page 36: Curso CICS – Nível Pleno.DOC

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.

Page 37: Curso CICS – Nível Pleno.DOC

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

Page 38: Curso CICS – Nível Pleno.DOC

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

Page 39: Curso CICS – Nível Pleno.DOC

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

Page 40: Curso CICS – Nível Pleno.DOC

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

Page 41: Curso CICS – Nível Pleno.DOC

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

Page 42: Curso CICS – Nível Pleno.DOC

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

Page 43: Curso CICS – Nível Pleno.DOC

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.

Page 44: Curso CICS – Nível Pleno.DOC

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.

Page 45: Curso CICS – Nível Pleno.DOC

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.

Page 46: Curso CICS – Nível Pleno.DOC

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

Page 47: Curso CICS – Nível Pleno.DOC

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

Page 48: Curso CICS – Nível Pleno.DOC

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

Page 49: Curso CICS – Nível Pleno.DOC

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

Page 50: Curso CICS – Nível Pleno.DOC

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.

Page 51: Curso CICS – Nível Pleno.DOC

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.

Page 52: Curso CICS – Nível Pleno.DOC

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

Page 53: Curso CICS – Nível Pleno.DOC

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

Page 54: Curso CICS – Nível Pleno.DOC

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

Page 55: Curso CICS – Nível Pleno.DOC

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

Page 56: Curso CICS – Nível Pleno.DOC

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

Page 57: Curso CICS – Nível Pleno.DOC

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.

Page 58: Curso CICS – Nível Pleno.DOC

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.

Page 59: Curso CICS – Nível Pleno.DOC

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

Page 60: Curso CICS – Nível Pleno.DOC

Curso CICS – Nível Pleno

Módulo 07

Glossário

Dump – Representação hexadecimal de uma área

document.doc 60 de 211

Page 61: Curso CICS – Nível Pleno.DOC

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

Page 62: Curso CICS – Nível Pleno.DOC

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

Page 63: Curso CICS – Nível Pleno.DOC

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

Page 64: Curso CICS – Nível Pleno.DOC

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

Page 65: Curso CICS – Nível Pleno.DOC

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.

Page 66: Curso CICS – Nível Pleno.DOC

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.

Page 67: Curso CICS – Nível Pleno.DOC

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.

Page 68: Curso CICS – Nível Pleno.DOC

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

Page 69: Curso CICS – Nível Pleno.DOC

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

Page 70: Curso CICS – Nível Pleno.DOC

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

Page 71: Curso CICS – Nível Pleno.DOC

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

Page 72: Curso CICS – Nível Pleno.DOC

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.

Page 73: Curso CICS – Nível Pleno.DOC

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.

Page 74: Curso CICS – Nível Pleno.DOC

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

Page 75: Curso CICS – Nível Pleno.DOC

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

Page 76: Curso CICS – Nível Pleno.DOC

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

Page 77: Curso CICS – Nível Pleno.DOC

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

Page 78: Curso CICS – Nível Pleno.DOC

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

Page 79: Curso CICS – Nível Pleno.DOC

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

Page 80: Curso CICS – Nível Pleno.DOC

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.

Page 81: Curso CICS – Nível Pleno.DOC

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

Page 82: Curso CICS – Nível Pleno.DOC

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

Page 83: Curso CICS – Nível Pleno.DOC

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

Page 84: Curso CICS – Nível Pleno.DOC

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

Page 85: Curso CICS – Nível Pleno.DOC

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

Page 86: Curso CICS – Nível Pleno.DOC

Curso CICS – Nível Pleno

física, selecionando apenas os registros ativos e recriando o arquivo.

document.doc 86 de 211

Page 87: Curso CICS – Nível Pleno.DOC

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.

Page 88: Curso CICS – Nível Pleno.DOC

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.

Page 89: Curso CICS – Nível Pleno.DOC

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;

Page 90: Curso CICS – Nível Pleno.DOC

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

Page 91: Curso CICS – Nível Pleno.DOC

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

Page 92: Curso CICS – Nível Pleno.DOC

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

Page 93: Curso CICS – Nível Pleno.DOC

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

Page 94: Curso CICS – Nível Pleno.DOC

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

Page 95: Curso CICS – Nível Pleno.DOC

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.

Page 96: Curso CICS – Nível Pleno.DOC

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.

Page 97: Curso CICS – Nível Pleno.DOC

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

Page 98: Curso CICS – Nível Pleno.DOC

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

Page 99: Curso CICS – Nível Pleno.DOC

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.

Page 100: Curso CICS – Nível Pleno.DOC

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.

Page 101: Curso CICS – Nível Pleno.DOC

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

Page 102: Curso CICS – Nível Pleno.DOC

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

Page 103: Curso CICS – Nível Pleno.DOC

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

Page 104: Curso CICS – Nível Pleno.DOC

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

Page 105: Curso CICS – Nível Pleno.DOC

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

Page 106: Curso CICS – Nível Pleno.DOC

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

Page 107: Curso CICS – Nível Pleno.DOC

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;

Page 108: Curso CICS – Nível Pleno.DOC

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;

Page 109: Curso CICS – Nível Pleno.DOC

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

Page 110: Curso CICS – Nível Pleno.DOC

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

Page 111: Curso CICS – Nível Pleno.DOC

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

Page 112: Curso CICS – Nível Pleno.DOC

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

Page 113: Curso CICS – Nível Pleno.DOC

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.

Page 114: Curso CICS – Nível Pleno.DOC

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

Page 115: Curso CICS – Nível Pleno.DOC

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

Page 116: Curso CICS – Nível Pleno.DOC

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

Page 117: Curso CICS – Nível Pleno.DOC

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

Page 118: Curso CICS – Nível Pleno.DOC

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

Page 119: Curso CICS – Nível Pleno.DOC

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.

Page 120: Curso CICS – Nível Pleno.DOC

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

Page 121: Curso CICS – Nível Pleno.DOC

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

Page 122: Curso CICS – Nível Pleno.DOC

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.

Page 123: Curso CICS – Nível Pleno.DOC

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

Page 124: Curso CICS – Nível Pleno.DOC

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

Page 125: Curso CICS – Nível Pleno.DOC

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

Page 126: Curso CICS – Nível Pleno.DOC

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

Page 127: Curso CICS – Nível Pleno.DOC

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.

Page 128: Curso CICS – Nível Pleno.DOC

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.

Page 129: Curso CICS – Nível Pleno.DOC

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

Page 130: Curso CICS – Nível Pleno.DOC

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

Page 131: Curso CICS – Nível Pleno.DOC

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

Page 132: Curso CICS – Nível Pleno.DOC

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

Page 133: Curso CICS – Nível Pleno.DOC

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

Page 134: Curso CICS – Nível Pleno.DOC

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.

Page 135: Curso CICS – Nível Pleno.DOC

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.

Page 136: Curso CICS – Nível Pleno.DOC

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

Page 137: Curso CICS – Nível Pleno.DOC

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

Page 138: Curso CICS – Nível Pleno.DOC

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

Page 139: Curso CICS – Nível Pleno.DOC

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

Page 140: Curso CICS – Nível Pleno.DOC

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.

Page 141: Curso CICS – Nível Pleno.DOC

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

Page 142: Curso CICS – Nível Pleno.DOC

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.

Page 143: Curso CICS – Nível Pleno.DOC

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

Page 144: Curso CICS – Nível Pleno.DOC

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.

Page 145: Curso CICS – Nível Pleno.DOC

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á;

Page 146: Curso CICS – Nível Pleno.DOC

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

Page 147: Curso CICS – Nível Pleno.DOC

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

Page 148: Curso CICS – Nível Pleno.DOC

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

Page 149: Curso CICS – Nível Pleno.DOC

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.

Page 150: Curso CICS – Nível Pleno.DOC

Curso CICS – Nível Pleno

- DATA – Esta opção informa a área da Linkage anteriormente adquirida;

document.doc 150 de 211

Page 151: Curso CICS – Nível Pleno.DOC

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

Page 152: Curso CICS – Nível Pleno.DOC

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

Page 153: Curso CICS – Nível Pleno.DOC

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

Page 154: Curso CICS – Nível Pleno.DOC

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

Page 155: Curso CICS – Nível Pleno.DOC

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

Page 156: Curso CICS – Nível Pleno.DOC

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.

Page 157: Curso CICS – Nível Pleno.DOC

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.

Page 158: Curso CICS – Nível Pleno.DOC

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

Page 159: Curso CICS – Nível Pleno.DOC

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

Page 160: Curso CICS – Nível Pleno.DOC

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

Page 161: Curso CICS – Nível Pleno.DOC

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

Page 162: Curso CICS – Nível Pleno.DOC

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

Page 163: Curso CICS – Nível Pleno.DOC

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.

Page 164: Curso CICS – Nível Pleno.DOC

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.

Page 165: Curso CICS – Nível Pleno.DOC

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

Page 166: Curso CICS – Nível Pleno.DOC

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

Page 167: Curso CICS – Nível Pleno.DOC

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

Page 168: Curso CICS – Nível Pleno.DOC

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

Page 169: Curso CICS – Nível Pleno.DOC

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.

Page 170: Curso CICS – Nível Pleno.DOC

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.

Page 171: Curso CICS – Nível Pleno.DOC

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

Page 172: Curso CICS – Nível Pleno.DOC

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

Page 173: Curso CICS – Nível Pleno.DOC

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

Page 174: Curso CICS – Nível Pleno.DOC

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

Page 175: Curso CICS – Nível Pleno.DOC

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.

Page 176: Curso CICS – Nível Pleno.DOC

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

Page 177: Curso CICS – Nível Pleno.DOC

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.

Page 178: Curso CICS – Nível Pleno.DOC

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

Page 179: Curso CICS – Nível Pleno.DOC

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

Page 180: Curso CICS – Nível Pleno.DOC

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

Page 181: Curso CICS – Nível Pleno.DOC

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

Page 182: Curso CICS – Nível Pleno.DOC

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

Page 183: Curso CICS – Nível Pleno.DOC

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;

.

Page 184: Curso CICS – Nível Pleno.DOC

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

Page 185: Curso CICS – Nível Pleno.DOC

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

Page 186: Curso CICS – Nível Pleno.DOC

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

Page 187: Curso CICS – Nível Pleno.DOC

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

Page 188: Curso CICS – Nível Pleno.DOC

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.

Page 189: Curso CICS – Nível Pleno.DOC

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;

Page 190: Curso CICS – Nível Pleno.DOC

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

Page 191: Curso CICS – Nível Pleno.DOC

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

Page 192: Curso CICS – Nível Pleno.DOC

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

Page 193: Curso CICS – Nível Pleno.DOC

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.

Page 194: Curso CICS – Nível Pleno.DOC

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;

Page 195: Curso CICS – Nível Pleno.DOC

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

Page 196: Curso CICS – Nível Pleno.DOC

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

Page 197: Curso CICS – Nível Pleno.DOC

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

Page 198: Curso CICS – Nível Pleno.DOC

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

Page 199: Curso CICS – Nível Pleno.DOC

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;

Page 200: Curso CICS – Nível Pleno.DOC

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

Page 201: Curso CICS – Nível Pleno.DOC

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”;

Page 202: Curso CICS – Nível Pleno.DOC

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.

Page 203: Curso CICS – Nível Pleno.DOC

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

Page 204: Curso CICS – Nível Pleno.DOC

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;

Page 205: Curso CICS – Nível Pleno.DOC

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

Page 206: Curso CICS – Nível Pleno.DOC

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

Page 207: Curso CICS – Nível Pleno.DOC

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

Page 208: Curso CICS – Nível Pleno.DOC

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

Page 209: Curso CICS – Nível Pleno.DOC

Curso CICS – Nível Pleno

document.doc 209 de 211

Page 210: Curso CICS – Nível Pleno.DOC

Curso CICS – Nível Pleno

document.doc 210 de 211

Page 211: Curso CICS – Nível Pleno.DOC

Politec Informática Ltda.Rua Profa Helena Moura Lacerda, 131

Vl. Leopoldina – São Paulo - SPCEP 05319-010www.politec.com.br