91903584 CICS Portugues

58
CICS - Componentes do CICS e suas funções O Customer Information Control System (CICS) é um produto IBM que manuseia aplicacoes on-line. Ele atua como uma interface entre o sistema operacional e seus programas de aplicacao. Para o sistema operacional, ele funciona como uma tarefa unica sendo executada em uma particao. O software CICS é composto por: Módulos de gerência: São programas que gerenciam o ambiente on-line e fazem o interface entre o sistema operacional e os programas de aplicação. Cada módulo de gerencia realiza uma função especial. Exemplos: FILE CONTROL PROGRAM ( FCP ) - operações de leitura e gravação em arquivos TERMINAL CONTROL PROGRAM ( TCP ) - operações de envio e recepção de dados ao terminal Tabelas do sistema: São utilizadas pelo CICS para se definir os equipamentos que podem ser utilizados, bem como os recursos que serão utilizados em termos de arquivos, programas, transações, etc. São geradas pelo analista de sistemas responsável pelo gerenciamento do CICS. Em virtude dos equipamentos estarem pre-definidos em uma tabela, nao há a necessidade da definição no programa de aplicação. Exemplos: FILE CONTROL TABLE ( FCT ) - definição dos arquivos utilizados por cada programa de aplicação TERMINAL CONTROL TABLE ( TCT ) - definição de cada terminal da rede Blocos de controle: são utilizados pelo CICS para acesso e atualização das informações modificáveis (dinamicas), necessárias para a execução do programa de aplicação. 1

description

Cics

Transcript of 91903584 CICS Portugues

Page 1: 91903584 CICS Portugues

CICS - Componentes do CICS e suas funções

O Customer Information Control System (CICS) é um produto IBM que manuseia aplicacoes on-line.Ele atua como uma interface entre o sistema operacional e seus programas de aplicacao.Para o sistema operacional, ele funciona como uma tarefa unica sendo executada em uma particao.

O software CICS é composto por:

Módulos de gerência:

São programas que gerenciam o ambiente on-line e fazem o interface entre o sistema operacional e os programas de aplicação. Cada módulo de gerencia realiza uma função especial.

Exemplos:

FILE CONTROL PROGRAM ( FCP ) - operações de leitura e gravação em arquivosTERMINAL CONTROL PROGRAM ( TCP ) - operações de envio e recepção de dados ao terminal

Tabelas do sistema:

São utilizadas pelo CICS para se definir os equipamentos que podem ser utilizados, bem como os recursos que serão utilizados em termos de arquivos, programas, transações, etc. São geradas pelo analista de sistemas responsável pelo gerenciamento do CICS.Em virtude dos equipamentos estarem pre-definidos em uma tabela, nao há a necessidade da definição no programa de aplicação.

Exemplos:

FILE CONTROL TABLE ( FCT ) - definição dos arquivos utilizados por cada programa de aplicaçãoTERMINAL CONTROL TABLE ( TCT ) - definição de cada terminal da rede

Blocos de controle:

são utilizados pelo CICS para acesso e atualização das informações modificáveis (dinamicas), necessárias para a execução do programa de aplicação.

Exemplo:

TASK CONTROL AREA ( TCA ) - contém indicadores de localização para o programa de aplicação e para a entrada do terminal na TCT

Todos os componentes acima ficam 'residentes' na memória real.

Programas de aplicação:

São os programas escritos pelos usuários para processamento on-

1

Page 2: 91903584 CICS Portugues

line de um determinado tipo de serviço.Não fica 'residente' na memória real.

CICS - Conceitos da execucao de uma tarefa em CICS Pontos principais:

O CICS opera como programa principalOs programas de aplicação operam sob o CICSO fluxo de informações entre o usuário e o programa é controlado pelo CICSTipicamente, uma transação consiste numa entrada, processamento e uma resposta imediata (REAL-TIME)Normalmente, uma transacao e' composta de um programa pequeno e simples para tratamento de um evento especifico e em tempo realOs programas nao podem alterar instruções dinâmicas (reentrantes) conforme veremos adianteA tarefa (TASK) recebe o controle do CICS e deve devolvê-lo ao CICS

Transação conversacional:

A transação fica sempre ativaDetem sempre o controleEsta' sempre esperando intervenção do operadorMuitos recursos ficam 'presos' pela transaçãoSó devolve o controle ao cics quando o operador terminar o serviço

Transação pseudo-conversacional:

A transação só está ativa quando está sendo executadaRecebe o controle do CICS e o devolve, apos sua execuçãoNão há intervenção do operador na execuçãoPrende muito pouco os recursosA codificação de transações conversacionais comprometem a eficiência e performance do CICS, portanto a sua utilização é desaconselhada.

Típico uso 'BATCH'

+------------------+ I INICIO I +------------------+ I CONSISTENCIA I . Um programa grande +------------------+ . Existe em memória código que I TESTE DE CODIGOS I não é usado simultaneamente +------------------+ ou seja, se for feito apenas I MODULO PRINCIPAL I inclusão, todos os módulos, +------------------+ mesmo os não utilizados, es- I INCLUSAO I tarão residentes na memória +------------------+ I EXCLUSAO I +------------------+ I ATUALIZACAO I +------------------+ I FIM I +------------------+

Típico uso 'REAL TIME'

2

Page 3: 91903584 CICS Portugues

+------------------+ I I ____________________________________ I I I I I ______________________ I I MODULO PRINCIPAL I I I I I _______ I I I I I I I I I +----------+ +----------+ +-----------+ +------------------+ I INCLUSAO I I EXCLUSAO I I ALTERACAO I I I +----------+ +----------+ +-----------+ I I I I I I . Pode ser composto por varios I I programas +------------------+ . Tamanhos pequenos e parecidos I CONSISTENCIA I . Só está na memoria o neces- +------------------+ sario, ou seja, se não for feita nenhuma exclusão, o mó- dulo de exclusão nao será carregado

CICS - Formato geral do comando CICS

O CICS possui o seu próprio formato de comando, como a seguir:

EXEC CICS FUNCAO OPCAO (ARG) END-EXEC.Onde:

Função : É uma palavra-chave que descreve a operacao solicitada.Exemplo: READ, SEND, HANDLE, ETC.

Opção : É uma palavra chave que descreve recursos a disposição em cada função. algumas opções são seguidas por um argumento entre parenteses.

END-EXEC: Delimitador para comandos para programas cobol. Indica o final de um comando CICS.

Exemplo para programa COBOL:

EXEC CICS LINK PROGRAM (PROG01) COMMAREA (WORK-COMMA) LENGTH (+150) END-EXEC.Como o programa codificado em CICS possui os comandos do CICS e visto que em COBOL não existe tais comandos, antes de ser compilado ou montado, o programa de aplicação é processado por

3

Page 4: 91903584 CICS Portugues

um tradutor de comandos, que muda os comandos do CICS em comandos MOVE e CALL que existem no COBOL.

Durante a execução do programa, estes comandos CALL chamam a rotina de interface do nível de comando e passam os parâmetros apropriados para a rotina.

A rotina de interface então chama o módulo de gerencia do CICS que é indicado pela função do comando no programa de aplicação.

CICS - Acesso as informações do sistema O CICS mantém acompanhamento de certos dados que o programa de aplicação pode necessitar durante a execução, dados tais como numero da tarefa, hora e data.

O CICS registra este tipo de dados internos em áreas que o programa de aplicação nao tem acesso direto.Contudo, o CICS copia os dados num bloco de interface de execução (EIB) que é criado na hora em que a tarefa é iniciada. Existe um EIB por tarefa. O tradutor de comandos automaticamente inclui uma copia do EIB no programa de aplicação.

O EIB para uma tarefa armazena informações que o programa de aplicação pode então pesquisar usando-se os nomes dos campos. segue os nomes de alguns campos e seus conteúdos.

Campo Tamanho Explicação

EIBDATE S9(007) Data em que teve inicio a tarefa. Este campo está no formato decimal compactado com o seguinte layout: 00AADDD

EIBTIME S9(007) Hora em que teve inicio a tarefa. Este campo está no formato decimal compactado com o seguinte layout: 0HHMMSS

EIBTRNID X(004) Identificação da tarefa

EIBTRMID X(004) Identificação do terminal que está associado a tarefa

EIBAID X(001) Contém a última tecla de 'função programada' digitada pelo operador

EIBPOSN S9(004) Posição do cursor na tela na hora da última entrada. este campo está no formato computational (COMP)

EIBCALEN S9(004) Contem o tamanho da area de comunicacao (COMMAREA) passada para a TASK. Se nao foi passada nenhuma COMMAREA, este campo terá o valor igual a zeros. Este campo está no formato computational (COMP)

Para a atualização da data e hora do sistema há o comando ASKTIME que atualiza os campos EIBTIME e EIBDATE do EIB, com a data e a hora em que o comando é executado.

Exemplo para programa COBOL:

4

Page 5: 91903584 CICS Portugues

EXEC CICS ASKTIME END-EXEC.

CICS - Definição de telas - BASIC MAPPING SUPPORT ( BMS ) Para a execução de um programa on-line, normalmente há uma tela, onde o usuario interage com o terminal.Nesta tela ele digita os dados e recebe as informações que necessita.

Esta tela é definida pelo programador, utilizando os recursos oferecidos pelo BASIC MAPPING SUPPORT ( BMS ), que tem a função de fazer o interface entre o programa de aplicação e o 'TERMINAL CONTROL PROGRAM ( TCP )'.

O BMS oferece algumas vantagens tais como, independência de dispositivos e independência de formato de dados.

O BMS trabalha com dois tipos de mapas:

1 - Mapa físico ( MAPSET ) que é catalogado na CIL em formato de 'PHASE'. E' constituído por caracteres de controle, constantes e dados variáveis do aplicativo.2 - Mapa lógico ( MAP ) catalogado na SOURCE ( BIBLIOTECA DE DADOS ) em formato de 'BOOK'. e' constituído somente pelos dados variáveis.

O BMS na entrada remove os caracteres de controle e transfere somente os dados para o programa de aplicação. na saida, o BMS obtem os dados variáveis do programa de aplicação e intercala com os caracteres de controle mais as constantes do mapa.

A definição de mapas físicos e lógicos é feita utilizando-se 'MACROS' que seguem a regra 'ASSEMBLER' para a sua codificação.

Para a codificação, deve-se respeitar algumas regras de sintaxe, as quais trancreve-se abaixo:

O nome dos mapas e campos devem comecar na coluna 1 e a codificação das macros, apesar de poder começar na coluna 2, costuma-se codificar começando na coluna 10. costuma-se, tambem, codificar os parâmetros necessários para cada macro, a partir da coluna 16, exceto na primeira linha onde comeca-se a definir na coluna 17.

A codificaçao pode ir até a coluna 71.

A coluna 72 é reservada para ser usada quando deseja-se continuar a definição de uma macro em uma outra linha, sendo que, a linha a ser continuada deve ter, na coluna 72, um caracter de continuação diferente de branco e a linha de continuação deve ter a sua codificação iniciada na coluna 16.

MACRO DFHMSD

Esta macro é utilizada para definir o conjunto de mapas ( MAPSET ). Um MAPSET pode conter 'um ou mais' mapas.

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

LABEL DFHMSD TYPE=(MAP/DSECT/FINAL), *

5

Page 6: 91903584 CICS Portugues

LANG=(ASM/COBOL/PL/I), * TIOAPFX=(YES/NO), * MODE=(IN/OUT/INOUT), * STORAGE=AUTO, * CTRL=OPCOES, * TERM=MODELO, * DATA=(FIELD/BLOCK)

Parâmetros para a macro DFHMSD:

LABEL : deve ser especificado o nome do MAPSET, com, no máximo 7 caracteres

TYPE : MAP - criar mapa fásico. DSECT - criar mapa lógico. FINAL - encerra a definição do conjunto de mapas.

LANG : ASM - será gerado o mapa lógico em ASSEMBLER ( DEFAULT ). COBOL - será gerado o mapa lógico em COBOL. PL/I - será gerado o mapa lógico em PL/I.

TIOAPFX : YES - indica que deve ser reservada uma área de 12 bytes no início do mapa, para o prefixo da TIOA ( TERMINAL

INPUT OUTPUT AREA ). Nesta área existem caracteres de controle que um programa em COMMAND LEVEL não pode utilizar. NO - sem bytes de controle ( DEFAULT ).

MODE : indica o tipo de utilização do MAPSET. Também será utilizado na geração do mapa lógico. IN - indica que qualquer mapa do MAPSET somente poderá ser recebido pelo programa de aplicação. OUT - Indica que qualquer mapa do MAPSET somente poderá ser enviado pelo programa de aplicação. INOUT - Indica que o programa de aplicação poderá receber e enviar qualquer mapa do MAPSET.

STORAGE : AUTO - Será alocada automaticamente uma área para cada mapa do MAPSET. Se este parâmetro nao for especificado, os mapas dentro de um MAPSET serao 'redefinidos'.

CTRL : Define as caracteristicas a serem aplicadas ao terminal quando do envio de qualquer mapa do MAPSET. ALARM - emite o sinal sonoro ( alarme ) ao

6

Page 7: 91903584 CICS Portugues

enviar o mapa. FREEKB - destrava o teclado logo apos o envio do mapa para permitir ao opera- dor entrar com os dados. FRSET - restaura o MDT (MODIFIED DATA TAG) de todos os campos variaveis do mapa, ou seja, os dados variaveis do mapa sempre serao transmitidos para o programa de aplicacao, mesmo que o operador nao tenha 'alterado' nenhum dado.

TERM : MODELO - modelo do terminal (3270 / 3270-2 /3270-4, etc)

DATA : Especifica o formato dos dados FIELD - area de trabalho em formato de campos.

formato:

+----------------+ I LL I A I DADOS I +----------------+

onde: LL - tamanho do campo ( 2 bytes binarios - HALF - WORD - PIC S9(04) COMP. A - byte de atributo do campo BLOCK - Área de trabalho em formato de bloco. seu uso nao É recomendado.

MACRO DFHMDI

Esta macro é utilizada para definir um mapa dentro de um conjunto de mapas.

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

LABEL DFHMDI SIZE=(LINHAS,COLUNAS), * LINE=LINHA, * COLUMN=COLUNA, * JUSTIFY=(LEFT/RIGHT,FIRST/LAST), * HEADER=YES/TRAILER=YES, * TIOAPFX=(YES/NO)

Parâmetros para a macro DFHMDI:

LABEL : Deve ser especificado o nome do mapa lógico, com, no máximo 7 caracteres.

7

Page 8: 91903584 CICS Portugues

SIZE : Especifica as dimensões do mapa, e termos de linhas e colunas. LINHAS - número máximo de linhas do mapa. COLUNAS - número máximo de colunas do mapa.

LINE : Especifica qual é a linha inicial do mapa no terminal.

COLUMN : Especifica qual é a coluna inicial do mapa no terminal.

JUSTIFY : Especifica qual é o alinhamento do mapa: LEFT - O alinhamento do mapa será a esquerda ( DEFAULT ). RIGHT - O alinhamento do mapa será a direita.

FIRST - Especifica que o mapa é para ser posicionado como o primeiro mapa de uma nova tela.

LAST - Especifica que o mapa é para ser posicionado no final da tela que está sendo montada.

HEADER : Especifica que o mapa é um mapa de cabeçalho. Deve ser usado em conjunto com a opção 'JUSTIFY=FIRST'. Usado em paginação.

TRAILER : Especifica que o mapa é um mapa de rodapé. Deve ser usado em conjunto com a opção 'JUSTIFY=LAST'. Usado em paginação.

TIOAPFX : YES - Indica que deve ser reservada uma área de 12 bytes no inicio do mapa, para o prefixo da TIOA ( TERMINAL INPUT OUTPUT AREA ). Nesta área existem caracteres de controle que um programa em COMMAND LEVEL não pode utilizar. NO - Sem bytes de controle ( DEFAULT )

MACRO DFHMF

Esta macro é utilizada para definir os campos variáves e as constantes dentro do mapa.

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

LABEL DFHMDF POS=(LINHA,COLUNA), * LENGTH=TAMANHO, * ATTRB=LISTA DE ATRIBUTOS, * INITIAL='CONSTANTE', * JUSTIFY=(LEFT/RIGHT,BLANK/ZERO), *

8

Page 9: 91903584 CICS Portugues

GRPNAME=ITEM DE GRUPO, * OCCURS=NNN, * PICIN='MASCARA', * PICOUT='MASCARA'

Parâmetros para a macro DFHMDF:

LABEL : Deve ser especificado o nome do campo, com, no máximo 7 caracteres. Se o label for omitido, o campo nao poderá ser acessado pelo programa de aplicação, ou seja, será definido apenas uma constante para o mapa.

POS : Especifica a posição do atributo do campo em relação ao mapa e não a posicao fisica. Em todas as macros DFHMDF de um determinado mapa, as posições dos campos devem estar definidos em uma sequencia crescente, sendo definidos de cima para baixo e da esquerda para a direita.

LENGTH : Especifica o tamanho do campo ( nao considerar a posição utilizada pelo atributo ). O tamanho pode variar de 1 a 256 caracteres.

ATTRB : Especifica as caracteristicas do campo. Somente para terminais do tipo 3270-X. Para determinar as caracteristicas do campo, os atributos podem ser combinados ASKIP - Provoca um salto automático do CURSOR, ou seja, não é possível o operador entrar com dados neste campo. Pode ser utilizado para definir constantes. O campo fica protegido e com brilho normal. PROT - O campo fica protegido. UNPROT - O campo fica disponível para a entrada de dados. É UTilizado para definir campos variáveis. O campofica desprotegido, com brilho normal e alfanumerico. NUM - O campo fica disponível para a entrada de dados numéricos e o hífen ( - ). É utilizado em conjunto com o atributo UNPROT. O campo fica desprotegido, com brilho normal e numérico. BRT - O campo fica brilhante. NORM - O campo fica com brilho normal. DRK - Indica que embora o campo exista na tela, não será exibido, mesmo que existam dados. É utilizado, por exemplo para definir campos onde será digitada uma senha. IC - Indica que o CURSOR ficará posicionado no campo após o envio do mapa. Caso haja mais de um IC, o CURSOR ficará posicionado no campo em que estiver o ultimo IC. Se este parâmetro for omitido, o CURSOR será posicionado na primeira linha e na primeira coluna. FSET - Liga o MDT, ou seja, o campo será transmitido no envio e na recepção do mapa, independente se o campo foi ou nao alterado. O DEFAULT é o MDT desligado.

9

Page 10: 91903584 CICS Portugues

Observacao - Qualquer um dos atributos poderá ser alterado pelo programa de aplicação. - Se o parâmetro ATTRB for omitido, o campo será considerado com o atributo ASKIP. - Se qualquer das opções de ATTRB for codificada, o campo terá as opções de UNPROT e NORM em acréscimo ao atributo especificado.

INITIAL : Define um conteudo inicial para o campo.

JUSTIFY : Define o alinhamento/preenchimento do campo LEFT - O alinhamento do campo será a esquerda. RIGHT - O alinhamento do campo será a direita. BLANK - O campo será preenchido com brancos. ZERO - O campo será preenchido com zeros. Observação - O DEFAULT para JUSTIFY é: RIGHT, ZERO se o campo for numérico LEFT, BLANK se o campo for alfanumérico

GRPNAME : Permite que um campo seja subdividido e manipulado pelo programa de aplicação, ou seja, permite que seja definido um item de grupo com itens elementares. As caracterpisticas físicas do item de grupo são igualmente aplicáveis a todos os itens elementares. Todos os itens elementares do item de grupo devem ter os mesmos parâmetros, caso isto não ocorra será considerado as características do primeiro item elementar deste item de grupo.

OCCURS : Define n campos de uma só vez. Semelhante a cláusula OCCURS do COBOL. este parâmetro não pode ser utilizado em conjunto com o parâmetro 'GRPNAME' na mesma macro DFHMDF.

PICIN : Define uma máscara de entrada de dados para o campo.

PICOUT : Define uma máscara de saida de dados para o campo.

OBSERVACAO - Caso seja especificado os parâmetros PICIN e PICOUT para um mesmo campo, as máscaras devem ser do mesmo tamanho quanto ao número de posições ocupadas.

Exemplo de definicao de MAPSET

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

XZ00001 DFHMSD TYPE=&SYSPARM, * LANG=COBOL, * CTRL=(FREEKB,FRSET,ALARM), * MODE=INOUT,

10

Page 11: 91903584 CICS Portugues

* STORAGE=AUTO*MZ0001A DFHMDI SIZE=(22,80),LINE=1,COLUMN=1,JUSTIFY=(LEFT,FIRST)TRANS DFHMDF POS=(01,01),LENGTH=04,ATTRB=(ASKIP,BRT,FSET), * INITIAL='CURS'SALVA DFHMDF POS=(01,08),LENGTH=04,ATTRB=(ASKIP,DRK) DFHMDF POS=(01,20),LENGTH=40,ATTRB=(ASKIP,BRT), * INITIAL='*** EXEMPLO DE DEFINICAO DE MAPSET ***'DIA DFHMDF POS=(01,70),LENGTH=02,ATTRB=ASKIP,GRPNAME=DATAMES DFHMDF POS=(01,72),LENGTH=02,GRPNAME=DATAANO DFHMDF POS=(01,74),LENGTH=02,GRPNAME=DATA DFHMDF POS=(05,01),LENGTH=10,ATTRB=ASKIP,INITIAL='COD. ALUNO' DFHMDF POS=(05,15),LENGTH=13,ATTRB=ASKIP, * INITIAL='NOME DO ALUNO' DFHMDF POS=(05,39),LENGTH=29,ATTRB=(ASKIP,BRT), * INITIAL='NOTA1 NOTA2 NOTA3 NOTA4 NOTA5'CODAL DFHMDF POS=(07,01),LENGTH=05,ATTRB=(UNPROT,NUM) DFHMDF POS=(07,07),LENGTH=01,ATTRB=ASKIP,INITIAL=' 'NOMEAL DFHMDF POS=(07,15),LENGTH=20,ATTRB=ASKIPNOTAS DFHMDF POS=(07,40),LENGTH=05,ATTRB=ASKIP,OCCURS=5, * PICOUT='ZZ9,9' DFHMDF POS=(22,21),LENGTH=40,ATTRB=(PROT,BRT), * INITIAL='PF3 RETORNAR PA2 SAIR'* DFHMSD TYPE=FINAL END

BOOK retornado com a compilação do MAPSET

1 2 3 4 5 6 7 81234567890123456789012345678901234567890123456789012345678901234567890123456780

01 MZ0001AI. 02 FILLER PIC X(012). 02 TRANSL COMP PIC S9(004). 02 TRANSF PIC X(001). 02 FILLER REDEFINES TRANSF. 03 TRANSA PIC X(001). 02 TRANSI PIC X(004). 02 SALVAL COMP PIC S9(004). 02 SALVAF PIC X(001). 02 FILLER REDEFINES SALVAF. 03 SALVAA PIC X(001). 02 SALVAI PIC X(004). 02 DATAL COMP PIC S9(004). 02 DATAF PIC X(001). 02 FILLER REDEFINES DATAF. 03 DATAA PIC X(001). 02 DATAI. 03 DIAI PIC X(002).

11

Page 12: 91903584 CICS Portugues

03 MESI PIC X(002). 03 ANOI PIC X(002). 02 CODALL COMP PIC S9(004). 02 CODALF PIC X(001). 02 FILLER REDEFINES CODALF. 03 CODALA PIC X(001). 02 CODALI PIC X(005). 02 NOMEALL COMP PIC S9(004). 02 NOMEALF PIC X(001). 02 FILLER REDEFINES NOMEALF. 03 NOMEALA PIC X(001). 02 NOMEALI PIC X(020). 02 NOTASD OCCURS 5 TIMES. 03 NOTASL COMP PIC S9(004). 03 NOTASF PIC X(001). 03 NOTASI PIC X(005).

01 MZ0001AO REDEFINES MZ0001AI. 02 FILLER PIC X(012). 02 FILLER PIC X(003). 02 TRANSO PIC X(004). 02 FILLER PIC X(003). 02 SALVAO PIC X(004). 02 FILLER PIC X(003). 02 DATAO. 03 DIAO PIC X(002). 03 MESO PIC X(002). 03 ANOO PIC X(002). 02 FILLER PIC X(003). 02 CODALO PIC X(005). 02 FILLER PIC X(003). 02 NOMEALO PIC X(020). 02 DFHMS1 OCCURS 5 TIMES. 03 FILLER PIC X(002). 03 NOTASA PIC X(001). 03 NOTASO PIC ZZ9,9.

Explicação da geração do mapa lógico

Para cada macro DFHMDI codificada é criado em COBOL, um NIVEL 01, com o label especificado na macro, acrescido do sufixo 'I' se for usada a opção 'MODE=IN' ou acrescido do sufixo 'O' se for usada a opção 'MODE=OUT'.

Para o MAPSET em que foi especificado 'MODE=INOUT', são gerados DOIS NIVEIS 01, um com o sufixo 'I' e outro com o sufixo 'O'. O segundo NIVEL 01 é uma redefinição do primeiro.

Para cada macro dfhmdf codificada são criados UM NIVEL 02 e UM NIVEL 03 com o label especificado na macro acrescido com sufixos específicos. Notar que o campo só será gerado caso seja codificado na macro um label.

No NIVEL 02 foi gerado um campo com o label especificado acrescido do sufixo 'L' para identificar o tamanho do campo. Foi tambem gerado um campo com o label especificado acrescido do sufixo 'I' para recepção de dados do campo.

12

Page 13: 91903584 CICS Portugues

No NIVEL 03 foi gerado um campo com o label especificado acrescido do sufixo 'A' para identificar o atributo do campo.

A area MZ0001AO é uma redefinição da área MZ0001AI, por ter sido especificado na macro DFHMSD o parâmetro 'MODE=INOUT'.

Para cada macro DFHMDF que possui um label especificado, foi gerado um campo de tamanho (SUFIXO L), um campo de atributo (SUFIXO A) e um campo de dados (SUFIXO I E/OU O).

Observar que foi gerado o item de grupo 'DATAI' em virtude de termos codificado o parâmetro 'GRPNAME=DATA' na macro DFHMDF dos campo DIA, MES E ANO.

Observar que foi gerado uma tabela 'NOTASD' em virtude de termos codificado o parâmetro 'OCCURS=5' no campo 'NOTAS'. Neste, o sufixo do item de grupo da tabela será 'D' ao inves de 'I'.

Para cada campo foram gerados:

LABEL + SUFIXO L - Nessa área será colocado pelo BMS, o tamanho do campo ( LENGTH ), ou seja, quantas posições foram tecladas pelo operador. O campo com sufixo l é também usado para o posicionamento do CURSOR, bastando para isso movimentar -1 ( menos um ) para o mesmo.

LABEL + SUFIXO F - Essa área é um byte de flag. Usado pelo CICS para saber se o campo foi alterado ou nao.

LABEL + SUFIXO A - Essa area é utilizada pelo programa de aplicação para alterar o atributo do campo ( ATTRIBUTE ), isto é, quando deseja-se um atributo diferente do que foi especificado na codificação da macro DFHMDF.

LABEL + SUFIXO I - Essa area é utilizada pelo programa de aplicação para trabalhar com os dados de entrada ( INPUT ).

LABEL + SUFIXO O - Essa area é utilizada pelo programa de aplicação para trabalhar com os dados de saida ( OUTPUT ), sendo esta area uma redefinição da area de sufixo 'I'.

A seguir estão os atributos que pode-se mover para o campo de sufixo 'A' pelo programa de aplicação. Para ter estes campos no programa deve-se copiar o layout catalogado 'DFHBMSCA'.

1 2 3 4 5 6 7 81234567890123456789012345678901234567890123456789012345678901234567890123456780

13

Page 14: 91903584 CICS Portugues

01 DFHBMSCA. 02 DFHBMPEM PIC X(001) VALUE IS '.'. 02 DFHBMPNL PIC X(001) VALUE IS '.'. 02 DFHBMASK PIC X(001) VALUE IS '0'. 02 DFHBMUNP PIC X(001) VALUE IS ' '. 02 DFHBMUNN PIC X(001) VALUE IS '&'. 02 DFHBMPRO PIC X(001) VALUE IS '-'. 02 DFHBMBRY PIC X(001) VALUE IS 'H'. 02 DFHBMDAR PIC X(001) VALUE IS '<'. 02 DFHBMFSE PIC X(001) VALUE IS 'A'. 02 DFHBMPRF PIC X(001) VALUE IS '/'. 02 DFHBMASF PIC X(001) VALUE IS '1'. 02 DFHBMASB PIC X(001) VALUE IS '8'. 02 DFHBMEOF PIC X(001) VALUE IS '.'. 02 DFHBMDET PIC X(001) VALUE IS '.'. 02 DFHBMPSO PIC X(001) VALUE IS '.'. 02 DFHBMPSI PIC X(001) VALUE IS '.'. 02 DFHSA PIC X(001) VALUE IS '.'. 02 DFHCOLOR PIC X(001) VALUE IS '.'. 02 DFHPS PIC X(001) VALUE IS '.'. 02 DFHHLT PIC X(001) VALUE IS '.'. 02 DFH3270 PIC X(001) VALUE IS '.'. 02 DFHVAL PIC X(001) VALUE IS 'A'. 02 DFHOUTLN PIC X(001) VALUE IS 'B'. 02 DFHBKTRN PIC X(001) VALUE IS '.'. 02 DFHALL PIC X(001) VALUE IS '.'. 02 DFHERROR PIC X(001) VALUE IS '.'. 02 DFHDFT PIC X(001) VALUE IS '.'. 02 DFHDFCOL PIC X(001) VALUE IS '.'. 02 DFHBLUE PIC X(001) VALUE IS '1'. 02 DFHRED PIC X(001) VALUE IS '2'. 02 DFHPINK PIC X(001) VALUE IS '3'. 02 DFHGREEN PIC X(001) VALUE IS '4'. 02 DFHTURQ PIC X(001) VALUE IS '5'. 02 DFHYELLO PIC X(001) VALUE IS '6'. 02 DFHNEUTR PIC X(001) VALUE IS '7'. 02 DFHBASE PIC X(001) VALUE IS '.'. 02 DFHDFHI PIC X(001) VALUE IS '.'. 02 DFHBLINK PIC X(001) VALUE IS '1'. 02 DFHREVRS PIC X(001) VALUE IS '2'. 02 DFHUNDLN PIC X(001) VALUE IS '4'. 02 DFHMFIL PIC X(001) VALUE IS '.'. 02 DFHMENT PIC X(001) VALUE IS '.'. 02 DFHMFE PIC X(001) VALUE IS '.'. 02 DFHUNNOD PIC X(001) VALUE IS '('. 02 DFHUNIMD PIC X(001) VALUE IS 'I'. 02 DFHUNNUM PIC X(001) VALUE IS 'J'. 02 DFHUNINT PIC X(001) VALUE IS 'R'. 02 DFHUNNON PIC X(001) VALUE IS ')'. 02 DFHPROTI PIC X(001) VALUE IS 'Y'. 02 DFHPROTN PIC X(001) VALUE IS '%'. 02 DFHMT PIC X(001) VALUE IS '.'. 02 DFHMFT PIC X(001) VALUE IS '.'. 02 DFHMET PIC X(001) VALUE IS '.'. 02 DFHMFET PIC X(001) VALUE IS '.'. 02 DFHDFFR PIC X(001) VALUE IS '.'. 02 DFHLEFT PIC X(001) VALUE IS '.'. 02 DFHOVER PIC X(001) VALUE IS '.'. 02 DFHRIGHT PIC X(001) VALUE IS '.'. 02 DFHUNDER PIC X(001) VALUE IS '.'.

14

Page 15: 91903584 CICS Portugues

02 DFHBOX PIC X(001) VALUE IS '.'. 02 DFHSOSI PIC X(001) VALUE IS '.'. 02 DFHTRANS PIC X(001) VALUE IS '0'. 02 DFHOPAQ PIC X(001) VALUE IS '.'.

CICS - Tratamento de condições de exceção Comando HANDLE CONDITION

Formato do comando:

EXEC CICS HANDLE CONDITION

Explicação do argumento

Condição (parágrafo)Especifica-se uma condição de erro, associando a ela um parágrafo que receberá o controle do programa caso a condição de exceção ocorra.

o comando acima é utilizado para especificar um parágrafo que receberá o controle caso uma condição de exceção ( erro de leitura/gravação em um arquivo ) ocorra.

O tratamento de uma determinada exceção prevalece até que seja especificado outro 'HANDLE CONDITION' para a mesma exceção, ou se for executado o comando que ignore esta condição de exceção.

A especificação de um 'HANDLE CONDITION' para uma exceção, não elimina o tratamento de outras condições de exceção anteriormente especificadas.

Existe uma condição especial que engloba todas as condições de exceção que podem ocorrer, com exceção das condições de exceção que já foram especificadas no programa de aplicação, estaá condicao é 'ERROR'.

Exemplo do comando:

EXEC CICS HANDLE CONDITION LENGERR (0100-LENGERR) DUPKEY (0200-DUPKEY) ERROR (0300-ERROR) END-EXEC.

Explicação do exemplo:

Caso ocorra algum erro de tamanho em alguma funcao do COMMAND LEVEL, o controle do programa será desviado para o parágrafo '0100-LENGERR'.

Caso haja registro em duplicata, o controle do programa será desviado para o paragrafo '0200-DUPKEY'.

Caso ocorra algum outro tipo de erro que nao esteja previsto no comando, o controle do programa serÁ desviado para o paragrafo '0300-ERROR'.

Comando IGNORE CONDITION

Formato do comando:

15

Page 16: 91903584 CICS Portugues

EXEC CICS IGNORE CONDITION

Explicação do argumento

CondiçãoPode ser especificado um label para cada condição de exceção.

O comando acima é utilizado para ignorar uma determinada condição de exceção. Caso ocorra a condição de exceção especificada a execução do programa continuará na instrucao seguinte a instrução que originou a condição de exceção.

Exemplo do comando:

EXEC CICS IGNORE CONDITION LENGERR END-EXEC.

Explicação do exemplo:

Caso ocorra algum erro de tamanho em alguma funcao do COMMAND LEVEL, apos a execução deste comando, o CICS irá ignora-lo, ou seja, o programa continuará com sua execução normalmente.

Observação:

Caso nao sejam codificados os comandos HANDLE e nem IGNORE CONDITION para uma determinada condição de exceção e esta vier a ocorrer, o programa cancelará.

CICS - Controle de programas Quando desenvolve-se programas de aplicação em COMMAND LEVEL, normalmente necessitamos de transferir o controle para outro programa de aplicação.

Este servico é feito pelo PROGRAM CONTROL PROGRAM ( PCP ), cuja principal finalidade é executar as funções de gerenciamento dos programas de aplicação, dando acesso aos programas, mapas e tabelas de aplicação.

O PCP executa as seguintes funções:

localização dos programas de aplicação carga de uma tabela, programa de aplicação ou mapa liberação de uma tabela ou programa de aplicação que foi anteriormente

carregado carga do programa de aplicação, se necessário, para execução transferencia de controle do CICS para o programa de aplicação e tambem

entre os programas de aplicação passagem de dados entre programas de aplicação término do programa de aplicação

O PCP contém a PROCESSING PROGRAM TABLE ( PPT ), que é o local onde deve ser cadastrado todo programa de aplicação para que o mesmo possa ser executado pelo CICS.

A PPT Contém as seguintes informações:

nome do programa localização na biblioteca linguagem utilizada

16

Page 17: 91903584 CICS Portugues

contador de uso do programa

O PCP tambem contem a PROGRAM CONTROL TABLE ( PCT ), que é a tabela utilizada para associar o programa ao nome da tarefa que será utilizada para invocar a sua execução.

A PCT contém as seguintes informações:

nome do programa nome da task que esta' associada ao programa

Comando LINK

Formato do comando:

EXEC CICS LINK Explicação do argumento

PROGRAM ('NOME PROGRAMA')

Especifica o nome do programa para o qual será passado o controle

COMMAREA (WORK-COMMAREA)

Especifica a área que contém os dados que serão passados ao programa chamado.

LENGTH (+20)

Especifica o tamanho da área em que estão os dados que estão sendo passados ao programa chamado. Deve, obrigatoriamente ser usado, quando for usado 'COMMAREA'.

Este comando é utilizado para passar o controle de um programa de aplicação para outro. o programa chamado é colocado hierarquicamente em nível inferior ao que o chamou, sendo que o programa que o chamou continua na memória e logo apos o término da execuço do programa chamado, o programa que o chamou recebe o controle e continua a sua execução com a instrução seguinte ao comando 'LINK'.

Exemplo do comando:

EXEC CICS LINK PROGRAM ('P86851') COMMAREA(WORK-COMMAREA) LENGTH (+51) END-EXEC.

Explicação do exemplo:

O controle da execução será passado ao programa P86851, os dados contidos em WORK-COMMAREA serão passados ao programa com tamanho de 51 bytes. após a execução do programa P86851 o controle volta e a execução continua com a proxima instrução.

Condição de exceção:

PGMIDERR: ocorre se o programa nao estiver cadastrado na PPT, ou se o programa estiver em condição 'DISABLED', ou se o programa nao estiver catalogado.

Comando XCTL

Formato do comando:

17

Page 18: 91903584 CICS Portugues

EXEC CICS XCTL Explicação do argumento

PROGRAM ('nome programa')

Especifica o nome do programa para o qual será passado o controle.

COMMAREA (WORK-COMMAREA)

Especifica a área que contém os dados que serão passados ao programa chamado.

LENGTH (+20)

Especifica o tamanho da área em que estão os dados que estão sendo passados ao programa chamado. Deve, obrigatoriamente ser usado, quando for usado 'COMMAREA'.

Este comando é utilizado para passar o controle de um programa de aplicaçao para outro. o programa chamado é colocado no mesmo nível hierárquico do programa que o chamou, sendo que o programa que o chamou nao continua na memória pois sua área é liberada para o CICS, nao havendo, portanto, possibilidade de retorno apenas com o término da execução do programa chamado. Caso haja a necessidade de retorno ao programa chamador deve-se usar o comando 'XCTL'.

Exemplo do comando:

EXEC CICS XCTL PROGRAM ('P86851') COMMAREA(WORK-COMMAREA) LENGTH (+51) END-EXEC.

Explicação do exemplo:

O controle da execução será passado ao programa P86851, os dados contidos em WORK-COMMAREA serão passados ao programa com tamanho de 51 bytes. Após a execução do programa P86851 o controle nao volta e a execucão comecará na primeira instrução do programa, se o programa chamado emitir um comando chamando este programa.

Condição de exceção:

PGMIDERR: ocorre se o programa nao estiver cadastrado na PPT, ou se o programa estiver em condição 'DISABLED', ou se o programa não estiver catalogado.

Comando RETURN

Formato do comando:

EXEC CICS RETURN Explicação do argumento

TRANSID ('TRANSACAO')

Especifica o nome da transação para a qual será passado o controle e deve estar definido na PCT.

COMMAREA (WORK-COMMAREA)

Especifica a área que contém os dados que serão passados ao programa chamado.

LENGTH (+20)

Especifica o tamanho da área em que estão os dados que estão sendo passados ao programa chamado. Deve, obrigatoriamente ser usado, quando for usado 'COMMAREA'.

Este comando é utilizado para passar o controle de um programa de aplicação para outro ou de um programa de aplicação para o CICS.

18

Page 19: 91903584 CICS Portugues

A emissão do comando acima sem nenhum argumento faz com que o controle seja passado ao programa de nível hierárquico superior que pode ser um programa de aplicação ou o proprio CICAS.

Este comando é o mais utilizado em virtude da otimização que ele oferece pois a tarefa ( TASK ) só estará ativa quando o operador acionar alguma tecla de função programada ( PF ). Enquanto o operador não acionar alguma 'PF' a tarefa fica 'suspensa'. Isto é possível pois o cics possui a terminal control table ( TCT ) que identifica a tarefa que está associada ao terminal. A 'TCT' será vista com mais detalhes adiante.< comando: do Exemplo>

EXEC CICS RETURN TRANSID ('P851') COMMAREA(WORK-COMMAREA) LENGTH (+51) END-EXEC.

Explicacão do exemplo:

O controle da execução será passado a transaÕo P851, que deve ter sido definido na 'PCT', os dados contidos em WORK-COMMAREA serão passados a transação com tamanho de 51 bytes. apos a execução da transação 'P851', o controle não volta e a execução começará na primeira instrucao do programa, se o programa chamado emitir um comando chamando este programa.

Condição de exceção:

INVREQ: ocorre se a opãoo 'TRANSID' for utilizada para passar o controle para uma TASK que é executada sem estar associada a um terminal ( TASK ASSINCRONA ).

Observação:

Quando usa-se a opção 'TRANSID', o programa estara imediatamente debaixo do CICS.

Área de comunicação - COMMAREA

Se um programa de aplicção receber o controle de um outro programa de aplicação através dos comandos 'LINK', 'XCTL' ou 'RETURN' com a opção COMMAREA, a área de comunicação indicada estará disponivel para o programa chamado no inicio de sua execução. O tamanho da área de comunicação estará disponível no campo eibcalen.

Para receber e transmitir dados via COMMAREA, deve-se definir na linkage section a DFHCOMMAREA em NIVEL 01 com o tamanho da maior area de dados que o programa ira' receber.

Caso a 'DFHCOMMAREA' seja maior que o tamanho da área recebida, deve-se tomar cuidado pois para o CICS o tamanho da área de comunicação é o tamanho especificado no EIBCALEN.

Caso a 'DFHCOMMAREA' seja menor, ocorrerá truncagem de dados.

É aconselhavel que não se trabalhe diretamente com a area de comunicação, ou seja, deve-se mover a 'DFHCOMMAREA' para uma área de WORKING e trabalhar com essa area.

CICS - Transmissão de dados entre a tarefa e o terminal

19

Page 20: 91903584 CICS Portugues

A transmissão de dados entre a tarefa e o terminal é feita pelo TERMINAL CONTROL PROGRAM ( TCP ).

A principal finalidade do TCP é a de efetuar a comunicação dos programas de aplicação com os terminais. Enquanto não for terminada a tarefa, a mesma fica 'ATACHADA' com o terminal e sempre que aquele terminal for 'ACIONADO' será verificado se há alguma transação 'ATACHADA' e se houver, qual a transação que está atachada ao mesmo.

Suas principais funções sao:

prover a inserção e retirada dos caracteres de controle de transmissão ( protocolo )

requisitar o inicio de uma nova tarefa transferir informações do programa para o terminal através de interface com o

BMS transferir informações do terminal para o programa tambem através de

interface com o BMS

O TCP possui a TERMINAL CONTROL TABLE ( TCT ) que é a tabela de controle de terminais, onde todos os terminais (video, impressora) devem estar cadastrados.

A TCT contém as seguintes informações:

caracteristicas do terminal endereco para o cics codigo do terminal informacoes de controle ( ex.: se já existe uma transação 'ATACHADA AO

TERMINAL').

Comando SEND MAP

Formato do comando:

EXEC CICS SEND Explicação do argumento

MAPSET ('MAPSET') Especifica o nome do MAPSET em que se encontra o mapa a ser enviado

MAP ('MAPA') Especifica o nome do mapa que deseja-se enviar

FROM (MP8601AO) Especifica a área onde estão os dados a serem enviados. Se este para metro for omitido, o BMS considera que os dados estão na area de trabalho definida pelo mapa simbólico

MAPONLY Será enviado apenas o mapa, nenhum dado variável será enviado, sómente as constantes serão enviadas I

DATAONLY Apenas os dados serão enviados. A opção 'FROM' deve ser especificada

CURSOR (VALOR) Especifica a posição absoluta do CURSOR na tela em relação a zero. Esta opção pode ser utilizada quando desejarmos alterar a posição do CURSOR daquela definida na tela sendo que 'VALOR' deve ter a PIC S9(04) COMP. Quando não especificado 'VALOR', o CURSOR será posicionado no primeiro campo da tela que recebeu valor -1 (menos um)

20

Page 21: 91903584 CICS Portugues

ERASE Limpa toda a tela do terminal antes do mapa ser enviado. Não é aconselhavel usar esta opção juntamente com a opção 'DATAONLY'

ERASEAUP Limpa todos os campos desprotegidos antes do mapa ser enviado

ALARM Emite um alarme ao enviar o mapa ( usado somente se não foi especificado 'CTRL=ALARM' no BMS

FREEKB Destrava o terminal para digitação de informações ( usado somente se não foi especificado 'CTRL= FREEKB' no BMS

FRSET Restaura o 'MDT'. Todos os campos serão transmitidos ( usado somente se não foi especificado 'CTRL=FRSET' no BMS

PRINT Envia para a impressora. Usado quando o terminal é uma impressora

TERMINAL Envia para o terminal. Usado quando o terminal é o vídeo ( DEFAULT )

ACCUM 'ACUMULA' mapas sem enviar ao terminal

PAGING Os mapas serão guardados em 'TEMPORARY STORAGE' ( TS ). Esta opção é usada em conjunto com a opção 'ACCUM' para enviar um conjunto de mapas ao terminal

Este comando é utilizado para 'enviar' um mapa para o terminal.

Exemplo do comando:

EXEC CICS SEND MAP ('MP8601A') MAPSET ('XP86851') ERASE CURSOR END-EXEC.

Explicacao do exemplo:

Será enviado para o terminal o mapa MP8601A que pertence ao MAPSET XP86851 e o cursor ficará posicionado no primeiro campo da tela que recebeu valor -1 ( menos um ), sendo que os dados que haviam na tela serão 'REMOVIDOS' antes da exibição do mapa MP8601A.

Condição de exceção:

INVPMSZ: ocorre se for enviado um mapa que nao cabe físicamente no terminal. este tipo de erro nao é detectado quando da compilação do mapa físico.

INVREQ: ocorre se após termos enviado vários mapas com as opções 'ACCUM' e 'PAGING', FOR feita uma tentativa de enviar mapa sem estas opções. Como veremos adiante, todo o acúmulo de mapas deve ser terminado pelo comando 'SEND PAGE'.

OUTROS: TSIOERR, RETPAGE

Comando RECEIVE MAP

21

Page 22: 91903584 CICS Portugues

Formato do comando:

EXEC CICS RECEIVE Explicação do argumento

MAPSET ('MAPSET')Especifica o nome do MAPSET em que se encontra o mapa a ser recebido.

MAP ('MAPA') Especifica o nome do mapa que deseja-se receber.

INTO (MP8601AI)

Especifica a área onde o mapa lógico será recebido. Se este parametro for omitido, o 'BMS' considera que os dados irão para a área de trabalho definida pelo mapa simbólico.

Este comando é utilizado para 'receber' dados do último mapa exibido no terminal. Pode ser codificado sem nenhum argumento, porém servirá apenas para o tratamento de funções programadas.

Exemplo do comando:

EXEC CICS RECEIVE MAP ('MP8601A') MAPSET ('XP86851') END-EXEC.

Explicação do exemplo:

Será recebido do terminal o mapa MP8601A que pertence ao MAPSET XP86851.

Condição de exceção:

MAPFAIL: ocorre se, ao executar o comando, o bms verificar que nao foi digitado nenhum dado pelo operador na tela ( correspondente a tela vazia ).

Comando SEND PAGE

Formato do comando:

EXEC CICS SEND PAGE

Explicação do argumento

AUTOPAGEAs telas serão enviadas ao terminal logo que este esteja disponível sem intervenção do operador. Usado para impressora.

NOAUTOPAGE

As telas serão enviadas ao terminal, uma de cada vez, em respostas aos comandos de paginação do operador. Normalmente é definida no sistema 'TECLAS PROGRAMADAS' (PF's) para a paginação.

RELEASE

Transfere o controle para o nível lógico mais alto (pode ser um programa de aplicação ou o proprio CICS). É a opção mais utilizada e poder ser utilizada com a opção 'TRANSID'.

TRANSID Transfere o controle para a transação indicada, logo após

22

Page 23: 91903584 CICS Portugues

('TRANSACAO')

a operação se completar (pode ser codificado junto com a opção 'RELEASE' para fazer com que o terminal coloque-se na modalidade pseudo-conversacional, logo após a paginação se completar).

RETAIN

Indica que após a paginação ser encerrada o controle será devolvido ao programa de aplicação e esta opção não é muito utilizada pois ela torna o programa conversacional. Não pode ser especificada juntamente com a opção 'RELEASE' ou 'TRANSID'.

Este comando e' utilizado para 'ENVIAR' varios mapas para o terminal, mapas estes 'ACUMULADOS' anteriormente através da opção 'ACCUM' do comando 'SEND MAP'.

Exemplo do comando:

EXEC CICS SEND PAGE NOAUTOPAGE RELEASE TRANSID ('P851') END-EXEC.

Explicação do exemplo:

Será enviado para o terminal o conjunto de mapas anteriormente 'acumulados' ficando a disposição do usuario para paginá-las e após o término da paginação, o controle será devolvido a transacao 'P851'. <>br Condição de exceção: - INVREQ: ocorre se tentar emitir o comando sem que tenha sido 'ACUMULADO' páginas através das opçoes 'ACCUM' E 'PAGING'.

- OUTROS: TSIOERR, RETPAGE

Comando PURGE MESSAGE

Formato do comando:

EXEC CICS PURGE MESSAGE Não possui argumento

Este comando deleta todas as paginas anteriormente 'ACUMULADAS' atraves da opcao 'ACCUM' do comando 'SEND MAP'.

Este comando deve ser utilizado sempre que ocorrer algum tipo de erro que haja a necessidade de abandonar a paginação, tendo sido emitido algum comando 'SEND MAP' com a opção 'ACCUM'. Exemplo do comando:

EXEC CICS PURGE MESSAGE END-EXEC.

Explicacao do exemplo:

Será deletado todas as páginas anteriormente 'ACUMULADAS' através da opção 'ACCUM' do comando 'SEND MAP'.

Condição de exceção:

23

Page 24: 91903584 CICS Portugues

TSIOERR: erro de entrada/saida na memória tempóraria.

Observações sobre a transmissão de dados

Caso já esteja no vídeo do operador o mapa que irá enviar bastando sómente limpar os campos digitados, use a opcao 'ERASEAUP'. neste caso 'NÃO SERAO TRANSMITIDOS' as constantes e nem os dados dos mapas, obtendo-se assim uma melhor performance da transmissão do mapa.

Caso já esteja no vídeo do operador o mapa que irá enviar bastando sómente trocar os dados da tela, mantendo o mesmo mapa, use a opção 'DATAONLY'. Neste caso serão transmitidos apenas os dados variáveis do mapa.

Se não for especificado as opções 'DATAONLY' ou 'MAPONLY' no comando 'SEND MAP', será assumido as duas.

Se não for especificado as opções 'AUTOPAGE' ou 'NOAUTOPAGE' no comando 'SEND PAGE', a paginação obedecerá as condições especificadas para o terminal quando da geração do sistema.

Considerações sobre paginação

Por paginação entende-se a açao de acumular uma determinada quantidade de linhas que varia a cada execucão da tarefa.

Em cada tela haverá um mapa de cabeçalho que deverá ser definido no 'BMS' com as opções 'HEADER=YES' e 'JUSTIFY=FIRST'.

Em cada tela haverá tambem um mapa de rodapé que deverá ser definido no 'BMS' com as opções 'TRAILER=YES' e 'JUSTIFY=LAST'.

As linhas restantes serão 'FLUTUANTES', ou seja serão usadas para acumular os dados que devem ser exibidos. Deve ser definido um mapa contendo apenas uma linha e é esta linha que será acumulada. Será acumulado para uma tela a quantidade máxima de linhas que couber entre o cabeçalho e o rodapé.

Caso a quantidade de linhas a serem acumuladas ultrapasse a quantidade máxima permitida para uma tela, no momento em que estiver sendo tentado acumular a linha que ultrapassa a quantidade máxima permitida para a tela, ocorrerá a condicação de exceção 'OVERFLOW'.

Ao ocorrer a condição de exceção 'OVERFLOW', deve-se terminar a construção da página atual e iniciar a construção de nova página, ficando construindo páginas até terminar os dados a serem exibidos.

Após a construção da última página, deve-se emitir o comando 'SEND PAGE' para o término da paginação.

Apos a emissão do comando 'SEND PAGE', os dados ficarão 'ACUMULADOS' para o operador manusea-los.

Para o manuseio dos dados acumulados existem algumas funcões programadas que executam tal tarefa. tais PF's não precisam ser especificadas no programa que acumulou os dados.

Procedimentos necessários para acumular páginas.

1 - Emite-se o comando 'SEND MAP' com a opção 'ERASE' para acumular o cabeçalho.

24

Page 25: 91903584 CICS Portugues

2 - Pesquisa-se os dados a serem exibidos e se existir, move-los para a linha que deseja-se acumular.

3 - Emite-se o comando 'SEND MAP' para acumular a linha montada no item 2. 4 - Se não ocorrer a condição de exceção 'OVERFLOW' voltar para item 2. 5 - Ocorrendo a condição de exceção 'OVERFLOW', emite-se o comando 'SEND

MAP' sem a opção 'ERASE' Para acumular o rodapé e tambem emite-se o comando 'SEND MAP' com a opção 'ERASE' para acumular o cabeçalho para o inicio da construção de uma nova página. Em virtude de termos uma linha não acumulada ( a que provocou o OVERFLOW ) volta-se para o item 3.

6 - Quando não existir mais dados a serem acumulados emite-se o comando 'SEND MAP' sem a opção 'ERASE' para acumular o rodapé e o comando'SEND PAGE' para indicar o término de construção de páginas.

Obs: Todos os comandos 'SEND MAP' deverão ser emitidos com as opções 'PAGING' e 'ACCUM'.

Tratamento de teclas programadas ( PF'S )

Para verificar qual a tecla programada ( PF ) que foi digitada pelo operador existem duas maneiras:

1 - O campo do EIB - 'EIBAID'2 - O comando - 'HANDLE AID'

O EIBAID é atualizado toda vez que é acionada alguma função programada.

Existe um book catalogado que contem os campos a serem comparados com o EIBAID para a checagem da PF que foi digitada pelo operador. Este book é o DFHAID e pode ser copiado atraves do comando COPY no programa de aplicacao.

01 DFHAID. 02 DFHNULL PIC X(001) VALUE IS '.'. 02 DFHENTER PIC X(001) VALUE IS QUOTE. 02 DFHCLEAR PIC X(001) VALUE IS '_'. 02 DFHCLRP PIC X(001) VALUE IS '.'. 02 DFHPEN PIC X(001) VALUE IS '='. 02 DFHOPID PIC X(001) VALUE IS 'W'. 02 DFHMSRE PIC X(001) VALUE IS 'X'. 02 DFHSTRF PIC X(001) VALUE IS 'H'. 02 DFHTRIG PIC X(001) VALUE IS '''. 02 DFHPA1 PIC X(001) VALUE IS '%'. 02 DFHPA2 PIC X(001) VALUE IS '>'. 02 DFHPA3 PIC X(001) VALUE IS ','. 02 DFHPF1 PIC X(001) VALUE IS '1'. 02 DFHPF2 PIC X(001) VALUE IS '2'. 02 DFHPF3 PIC X(001) VALUE IS '3'. 02 DFHPF4 PIC X(001) VALUE IS '4'. 02 DFHPF5 PIC X(001) VALUE IS '5'. 02 DFHPF6 PIC X(001) VALUE IS '6'. 02 DFHPF7 PIC X(001) VALUE IS '7'. 02 DFHPF8 PIC X(001) VALUE IS '8'. 02 DFHPF9 PIC X(001) VALUE IS '9'. 02 DFHPF10 PIC X(001) VALUE IS ':'. 02 DFHPF11 PIC X(001) VALUE IS '#'. 02 DFHPF12 PIC X(001) VALUE IS '@'. 02 DFHPF13 PIC X(001) VALUE IS 'A'. 02 DFHPF14 PIC X(001) VALUE IS 'B'. 02 DFHPF15 PIC X(001) VALUE IS 'C'.

25

Page 26: 91903584 CICS Portugues

02 DFHPF16 PIC X(001) VALUE IS 'D'. 02 DFHPF17 PIC X(001) VALUE IS 'E'. 02 DFHPF18 PIC X(001) VALUE IS 'F'. 02 DFHPF19 PIC X(001) VALUE IS 'G'. 02 DFHPF20 PIC X(001) VALUE IS 'H'. 02 DFHPF21 PIC X(001) VALUE IS 'I'. 02 DFHPF22 PIC X(001) VALUE IS '-'. 02 DFHPF23 PIC X(001) VALUE IS '.'. 02 DFHPF24 PIC X(001) VALUE IS '<'.Comando HANDLE AID

Formato do comando:

EXEC CICS HANDLE AID

Explicação do argumento

OPTION (PARAGRAFO)Especifica-se uma opção (tecla), associando-se a ela um parágrafo que receberá o controle do programa caso a tecla seja digitada.

O comando acima é utilizado para especificar um parágrafo que receberá o controle caso seja digitada a tecla especificada na opção.

Existe uma opção especial que engloba todas as PF'S, PA'S E CLEAR, com exceço do ENTER. Caso seja digitado uma tecla que n~ao foi especificada no programa de aplicação, o controle irá para o parágrafo especificado nesta opção.

Esta opção é o ANYKEY.

Uma vez estabelecidas as condiçães de manipulacao de funçães programadas, elas só serão acionadas quando for executado o comando RECEIVE.

Exemplo do comando:

EXEC CICS HANDLE AID PA1 (0100-PA1) PA2 (0200-PA2) ENTER (0300-ENTER) ANYKEY (0400-ANYKEY) END-EXEC.

Explicacao do exemplo:

caso seja digitado a tecla PA1, o controle do programa será desviado para o parágrafo 0100-PA1,

caso seja digitado a tecla PA2, o controle do programa será desviado para o parágrafo 0200-PA2,

caso seja digitado a tecla ENTER, o controle do programa será desviado para o parágrafo 0300-ENTER e

caso seja digitado qualquer outra tecla, o controle do programa será desviado para o parágrafo 0400-ANYKEY.

CICS - Interrupção de processamento Comando HANDLE ABEND

Formato do comando:

EXEC CICS HANDLE Explicação do argumento

26

Page 27: 91903584 CICS Portugues

ABEND

PROGRAM ('nome programa')

Especifica-se o nome do programa que receberá o controle caso um ABEND venha a ocorrer.

LABEL (paragrafo)Especifica-se o nome de um parágrafo que receberá o controle do programa caso acorra um ABEND.

CANCELEsta opção cancela a tarefa porém não gera DUMP (default)

RESET Esta opção faz com que um cancelamento seja ignorado.

O comando acima é utilizado para cancelar uma tarefa, ignorar um cancelamento ou passar o controle do programa para um parágrafo do programa ou para outro programa.

Todas as opcões deste comando sao mutuamente exclusivas.

Este comando somente terá validade para ABEND'S não previstos em um comando 'HANDLE CONDITION'.

Exemplo do comando:

EXEC CICS HANDLE ABEND PROGRAM ('ABENDLI') END-EXEC.

Explicacao do exemplo:

Caso ocorra algum tipo de abend nao previsto no programa de aplicação, o controle será passado ao programa 'ABENDLI'.

Comando ABEND

Formato do comando:

EXEC CICS ABEND Explicação do argumento

ABCODE (WORK-NOME)

Indica que é para gerar um DUMP da tarefa e a área indicada comtém o nome para o 'DUMP' ser identificado.

CANCELForça o cancelamento de todos os níveis hierárquicos que estão ligados a tarefa.

O comando acima é utilizado para cancelar voluntariamente uma tarefa.

Exemplo do comando:

EXEC CICS ABEND ABCODE ('XXYY') END-EXEC.

Explicacao do exemplo:

Caso este comando seja executado, a tarefa será cancelada e será gerado um DUMP com a identificacao 'XXYY'.

27

Page 28: 91903584 CICS Portugues

CICS - Tratamento de arquivos VSAM Para o manuseio dos arquivos no CICS, existe um modulo chamado FILE CONTROL PROGRAM ( FCP ), sendo que ele controla todos os acessos aos arquivos.

O 'FCP' possui a FILE CONTROL TABLE ( FCT ) que é o local onde estão contidas todas as informações referentes as funções de serviço (READ, WRITE, REWRITE, DELETE, ETC), previstas para um determinado arquivo e contém também todas as informações descritivas referente ao arquivo, portanto não há a necessidade de definição do arquivo pelo programa de aplicação.

O 'FCP' possui as seguintes funções:

abrir e fechar arquivos controle exclusivo recuperação de arquivos ler para simples consulta ler para posterior atualização atualização deletar registros adicionar registros liberar o controle exclusivo acessar o arquivo sequencialmente

No manuseio de um arquivo pelo programa de aplicação, ocorrendo um erro por estar efetuando algo que o VSAM não suporta, ocorrerá a condição de exceção 'ILLOGIC'.

Comando READ

Formato do comando:

EXEC CICS READ Explicação do argumento

DATASET ('nome arquivo')

Especifica-se o nome do arquivo a acessar.

INTO (WORK-AREA)Especifica-se a área onde deverá ser colocadoo registro lido.

RIDFLD (WORK-CHAVE)

Especifica-se a chave do registro a ser lido.

LENGTH (+100)Especifica-se o tamanho do registro a ser lido. opcional se for registro fixo.

UPDATEInforma que o registro a ser lido sofrerá posterior atualização.

GENERICIndica que a chave informada é parcial, ou seja, não está sendo informada toda a chave.

KEYLENGTH (+10)Especifica-se o tamanho da chave genérica. Este argumento é usado em conjunto com a opção 'GENERIC' e só pode ser usada para arquivos KSDS.

GTEQO CICS tentará ler um registro com chave maior ou igual a chave informada.

28

Page 29: 91903584 CICS Portugues

EQUALO CICS tentará ler um registro com chave igual a chave informada ( DEFAULT ).

RBA

Para arquivos ESDS, indica que a area especificada em 'RIDFLD' contem um RBA e nao a chave do registro. Neste caso, a area especificada em 'RIDFLD' deve estar definida PIC S9(008) COMP.

Este comando é utilizado para uma leitura randômica em um arquivo

Exemplo do comando:

EXEC CICS READ DATASET ('D02TAB') INTO (WORK-TAB) RIDFLD (WORK-CHAVE) LENGTH (+130) END-EXEC.

Explicacao do exemplo:

O CICS tentará ler um registro no arquivo 'D02TAB' com chave igual ao conteudo de 'WORK-CHAVE', o registro será colocado em 'WORK-TAB' e seu tamanho é de 130 bytes.

Condição de exceção:

DSIDERR: o arquivo informado não consta na 'FCT'. NOTOPEN: o arquivo informado está fechado. NOTFND: o registro requisitado não existe. DUPKEY: o arquivo informado é um índice alternado e existe mais de um

registro com a mesma chave alternada INVREQ: não existe, na 'FCT', previsão para a utilização deste recurso OUTROS: ILLOGIC, IOERR, LENGERR.

Comando WRITE

Formato do comando:

EXEC CICS WRITE Explicação do argumento

DATASET ('NOME ARQUIVO')

Especifica-se o nome do arquivo que se deseja acessar.

FROM (WORK-AREA)Especifica-se a área onde se encontra o registro a ser gravado.

RIDFLD (WORK-CHAVE)

Especifica-se a chave do registro a ser gravado. Deve ser igual a chave da área de dados indicada na opção 'FROM'.

LENGTH (+100)Especifica-se o tamanho do registro a ser gravado. Opcional se for registro fixo.

RBA

Para arquivos ESDS, indica que a área especificada em 'RIDFLD' contem um RBA e não a chave do registro. Neste caso, a área especificada em 'RIDFLD' deve estar definida PIC S9(008) COMP.

MASSINSERT Inserção em massa de registros. As chaves devem ser

29

Page 30: 91903584 CICS Portugues

ascendentes. Esta operação deve ser terminada por um 'UNLOCK' para um posterior acesso ao arquivo.

Este comando é utilizado para fazer adição de registros em um arquivo

A opção 'MASSINSERT' permite a inclusão sequencial de registros no VSAM, sendo que a partir da inclusão do primeiro registro, o CICS determinará o controle exclusivo para o programa, que deverá ser liberado quando não houver mais registros a incluir, através do comando 'UNLOCK'

Exemplo do comando:

EXEC CICS WRITE DATASET ('D02TAB') FROM (WORK-TAB) RIDFLD (WORK-CHAVE) LENGTH (+130) END-EXEC.

Explicacao do exemplo:

O CICS tentará incluir um registro no arquivo 'D02TAB' com chave igual ao conteúdo de 'WORK-CHAVE', O registro será retirado de 'WORK-TAB' e seu tamanho é de 130 bytes.

Condição de exceção:

DUPREC: o registro informado já existe no arquivo NOSPACE: não existe mais espaço no arquivo para a adição de registros. INVREQ:

o não existe, na 'FCT', previsão para a utilização deste recursoo o arquivo está definido na 'FCT' como ESDS eo o comando não possui a opção RBAo o arquivo está definido na 'FCT' como KSDS eo o comando possui a opção RBA

Outros: DSIDERR, ILLOGIC, IOERR, LENGERR, NOTOPEN.

Comando REWRITE

Formato do comando:

EXEC CICS REWRITE Explicação do argumento

DATASET ('NOME ARQUIVO')

Especifica-se o nome do arquivo que se deseja acessar.

FROM (WORK-AREA)Especifica-se a área onde se encontra o registro a ser gravado.

LENGTH (+100)Especifica-se o tamanho do registro a ser gravado. Opcional se for registro fixo.

Este comando é utilizado para regravar um registro em um arquivo. o registro deve ter sido anteriormente recuperado através do comando 'READ' com a opção 'UPDATE'. Após a leitura, seu campo chave não poderá ser alterado.

Exemplo do comando:

30

Page 31: 91903584 CICS Portugues

EXEC CICS REWRITE DATASET ('D02TAB') FROM (WORK-TAB) RIDFLD (WORK-CHAVE) LENGTH (+130) END-EXEC.

Explicação do exemplo:

O CICS tentará regravar um registro no arquivo 'D02TAB' com chave igual ao conteúdo de 'WORK-CHAVE', o registro será' retirado de 'WORK-TAB' e seu tamanho é de 130 bytes.

Condição de exceção:

INVREQ:o Não existe, na 'FCT', previsão para a utilização deste recurso.o O registro a ser regravado não foi recuperado através do comando

'READ' com a opção 'UPDATE'.o A chave do registro a ser regravado foi alterada pelo programa de

aplicação. Outros: DSIDERR, ILLOGIC, IOERR, LENGERR, NOTOPEN, NOSPACE.

Comando DELETE

Formato do comando:

EXEC CICS DELETE Explicação do argumento

DATASET ('NOME ARQUIVO')

Especifica-se o nome do arquivo que se deseja acessar.

RIDFLD (WORK-CHAVE)

Especifica-se a chave do registro a ser deletado. Obrigatório quando usado a opção 'GENERIC'

GENERICIndica que a chave informada é parcial, ou seja, nao está sendo informada a chave completa. todos os registros que possuam esta chave parcial serao deletados.

KEYLENGTH (+10)Especifica-se o tamanho da chave genérica. este argumento é usado em conjunto com a opção 'GENERIC' e sómente pode ser usada para arquivos KSDS.

NUMREC (WORK-QTD)

O CICS COLOCARA' NESTE CAMPO O NUMERO DE REGISTROS QUE O VSAM DELETOU. ESTE ARGUMENTO SO' PODE SER USADO EM CONJUNTO COM A OPCAO 'GENERIC'. O CAMPO DEVE SER DEFINIDO COMO PIC S9(004) COMP.

RBA

Para arquivos ESDS, indica que a area especificada em 'RIDFLD' contem um RBA e nao a chave do registro. Neste caso, a area especificada em 'RIDFLD' deve estar definida PIC S9(008) COMP.

Este comando é utilizado para deletar um registro ou, se especificada uma chave genérica, um grupo de registros.

Caso um registro tenha sido lido com a opção 'UPDATE', este comando pode ser utilizado para deleta-lo. Neste caso as opcões 'RIDFLD', 'KEYLENGTH', 'GENERIC' e 'NUMREC' não podem ser utilizadas.

31

Page 32: 91903584 CICS Portugues

A opção 'GENERIC' não pode ser utilizada para arquivo com a opção 'LOG=YES' na 'FCT'.

Exemplo do comando:

EXEC CICS DELETE DATASET ('D02TAB') RIDFLD (WORK-CHAVE) KEYLENGTH (+10) GENERIC NUMREC (WORK-QTD) END-EXEC.

Explicação do exemplo:

O CICS tentará deletar todos os registros que possuam em seu campo chave as 10 primeiras posições iguais as 10 primeiras posições do campo 'WORK-CHAVE'. Após efetuada a deleção, o CICS colocará em 'WORK-QTD' o nÚmero de registros que o VSAM deletou.

CONDICAO DE EXCECAO:

NOTFND: O registro indicado não existe no arquivo. Tal condição de exceção só acontecerá se o registro nao foi lido com a opção 'UPDATE'.

Outros: DSIDERR, ILLOGIC, INVREQ, IOERR, NOTOPEN.

Comando UNLOCK

Formato do comando:

EXEC CICS UNLOCK Explicação do argumento

DATASET ('NOME ARQUIVO')

Especifica-se o nome do arquivo que se deseja acessar.

Este comando é utilizado para liberar o controle exclusivo obtido através do comando READ com opção 'UPDATE' ou através de uma operação de inserção em massa de registros (MASSINSERT).

É utilizado quando um registro foi lido para ser atualizado, porem determinou-se que a atualização nao irá ocorrer.

O controle exclusivo é feito em todo o 'CONTROL INTERVAL' a que pertence o registro.

Exemplo do comando:

EXEC CICS UNLOCK DATASET ('D02TAB') END-EXEC.

Explicação do exemplo:

O CICS liberará o controle exclusivo sobre os registros recuperados através do comando 'READ' com a opção 'UPDATE' no arquivo 'D02TAB'.

Condição de exceção:

NOTOPEN: O arquivo informado está fechado.

32

Page 33: 91903584 CICS Portugues

Outros: DSIDERR, ILLOGIC, INVREQ, IOERR.

CICS - Pesquisa sequencial de arquivos - BROWSE O BROWSE é uma ferramenta que permite acessar qualquer tipo de arquivo sequencialmente.

Comando STARTBR

Formato do comando:

EXEC CICS STARTBR Explicação do argumento

DATASET ('NOME ARQUIVO')

Especifica-se o nome do arquivo que se deseja acessar.

RIDFLD (WORK-CHAVE)

Especifica-se a chave do registro a ser posicionado.

GENERICIndica que a chave informada é parcial, ou seja, não está sendo informada a chave toda.

KEYLENGTH (+10)Especifica-se o tamanho da chave genérica. Este arqgumento é usado em conjunto com a opção 'GRENERIC' e só pode ser usada para arquivos KSDS.

GTEQO CICS tentará posicionar em registro com chave maior ou igual a chave informada.

EQUALO CICS tentará posicionar em um registro com chave igual a chave informada (DEFAULT)

RBA

Para arquivos ESDS, indica que a área especificada em 'RIDFLD' contém um RBA e não a chave do registro. Neste caso, a área especificada em 'RIDFLD' deve estar definida PIC S9(008) COMP.

Este comando é utilizado para especificar o registro em um arquivo, no qual a pesquisa sequencial terá início. Observar que nenhum registro é recuperado, apenas o 'POINTER' é posicionado no registro indicado no comando.

Exemplo do comando:

EXEC CICS STARTBR DATASET ('D02TAB') RIDFLD (WORK-CHAVE) GTEQ END-EXEC.

Explicação do exemplo:

O 'POINTER' do arquivo será posicionado no registro que possua o campo chave maior ou igual ao campo 'WORK-CHAVE'.

Condição de exceção:

NOTFND: o registro informado não existe no arquivo.Outros: DSIDERR, NOTOPEN, INVREQ, ILLOGIC, IOERR.

33

Page 34: 91903584 CICS Portugues

Comando READNEXT

Formato do comando:

EXEC CICS READNEXT Explicação do argumento

DATASET ('NOME ARQUIVO')

Especifica-se o nome do arquivo que se deseja acessar.

INTO (WORK-AREA) Especifica-se a área que receberá o registro.

RIDFLD (WORK-CHAVE)

Especifica-se a chave do registro a ser posicionado. Deve ser o mesmo campo especificado no comando inicial STARTBR.

KEYLENGTH (+10)

Especifica-se o tamanho da chave 'GENERICA'. Apesar de nao possuir a opcao 'GENERIC' ao se especificar um tamanho menor do que o tamanho da chave tem-se uma pesquisa generica.

LENGTH (+100)Especifica-se o tamanho do registro a ser lido. Opcional se for registro fixo.

Este comando é utilizado para leitura do próximo registro do arquivo em ordem sequencial.

Exemplo do comando:>

EXEC CICS READNEXT DATASET ('D02TAB') INTO (WORK-TAB) RIDFLD (WORK-CHAVE) END-EXEC.

Explicação do exemplo:

O cics irá recuperar o próximo registro do arquivo que possua o campo chave igual ao campo 'WORK-CHAVE' e o registro recuperado será colocado na área 'WORK-TAB'.

Condiçãoo de exceção:

ENDFILE: ocorre quando for encontrado final de arquivo.

Outros: DSIDERR, NOTOPEN, INVREQ, ILLOGIC, IOERR, LENGERR, DUPKEY.

Comando READPREV

Formato do comando:

EXEC CICS READNEXT Explicação do argumento

DATASET ('NOME ARQUIVO')

Especifica-se o nome do arquivo que se deseja acessar.

INTO (WORK-AREA) Especifica-se a área que receberá o registro.

RIDFLD (WORK-CHAVE)

Especifica-se a chave do registro a ser posicionado. Deve ser o mesmo campo especificado no comando inicial STARTBR.

34

Page 35: 91903584 CICS Portugues

KEYLENGTH (+10)Especifica-se o tamanho total da chave, pois não é possivel usar a opção 'GENERIC' para este comando. Opcional.

LENGTH (+100)Especifica-se o tamanho do registro a ser lido. Opcional se for registro fixo.

Este comando é utilizado para leitura do registro anterior do arquivo em ordem sequencial. Usado apenas em arquivos VSAM.

Exemplo do comando:

EXEC CICS READPREV DATASET ('D02TAB') INTO (WORK-TAB) RIDFLD (WORK-CHAVE) END-EXEC.

Explicacao do exemplo:

O CICS irá recuperar o registro anterior do arquivo que possua o campo chave igual ao campo 'WORK-CHAVE' e o registro recuperado será colocado na area 'WORK-TAB'.

Condição de exceção:

ENDFILE: ocorre quando for encontrado final logico do arquivo, uma vez que foi encontrado o inicio fisico do arquivo.

Outros: DSIDERR, NOTOPEN, INVREQ, ILLOGIC, IOERR, LENGERR, DUPKEY.

Comando RESETBR

Formato do comando:

EXEC CICS READNEXT Explicação do argumento

DATASET ('NOME ARQUIVO')

Especifica-se o nome do arquivo que se deseja acessar.

RIDFLD (WORK-CHAVE)

Especifica-se a chave do registro a ser reposicionado.

GENERICIndica que a chave informada é parcial, ou seja, nao está sendo informada a chave completa.

KEYLENGTH (+10)Especifica-se o tamanho da chave genérica. Este argumento é usado em conjunto com a opção 'GENERIC' e sómente pode ser usada para arquivos KSDS.

GTEQO CICS tentará posicionar em registro com chave maior ou igual a chave informada.

EQUALO CICS tentarÁ posicionar em um registro com chave igual a chave informada ( DEFAULT ).

RBA

Para arquivos ESDS, indica que a área especificada em 'RIDFLD' contém um RBA e não a chave do registro. Neste caso, a área especificada em 'RIDFLD' deve estar definida PIC S9(008) COMP

Este comando é utilizado para reposicionamento de um registro no arquivo para

35

Page 36: 91903584 CICS Portugues

posterior leitura. Observar que nenhum registro é recuperado, apenas o 'POINTER' é posicionado no registro indicado no comando.

Este comando só pode ser executado se tiver sido executado anteriormente com sucesso o comando 'STARTBR'. A opção 'RIDFLD' deve especificar a mesma área de dados especificada na opção 'RIDFLD' do comando 'STARTBR' correspondente, porém o conteúdo desta área pode ser diferente.

Exemplo do comando:

EXEC CICS RESETBR DATASET ('D02TAB') RIDFLD (WORK-CHAVE) END-EXEC.

Explicação do exemplo:

O 'POINTER' do arquivo será reposicionado no registro que possua o campo chave igual ao campo 'WORK-CHAVE'. Notar que 'EQUAL' é assumido no exemplo do comando acima.

Condição de exceção:

NOTFND: o registro informado não existe no arquivo.

Outros: DSIDERR, NOTOPEN, INVREQ, ILLOGIC, IOERR.

Comando ENDBR

Formato do comando:

EXEC CICS ENDBR Explicação do argumento

DATASET ('NOME ARQUIVO')

Especifica-se o nome do arquivo que se deseja acessar.

Este comando é utilizado para terminar o BROWSE em um arquivo.

Este comando é obrigatorio quando for efetivada uma pesquisa sequencial pois se tal fato não ocorrer, o BROWSE não terminará, ficará suspenso. Exemplo do comando:

EXEC CICS ENDBR DATASET ('D02TAB') END-EXEC.

Explicação do exemplo:

O CICS terminará o BROWSE no arquivo 'D02TAB'.

Condição de exceção:

INVREQ: ocorre se o comando for executado sem que tenha sido executado um comando 'STARTBR' com sucesso.

Outros: DSIDERR, ILLOGIC, NOTOPEN.

Consideracao final sobre a pesquisa sequencial

36

Page 37: 91903584 CICS Portugues

Se a condição de exceção NOTFND ocorrer durante a pesquisa sequencial, há a necessidade de codificar o comando RESETBR para reposicionar em um registro para posterior leitura ou codificar o comando ENDBR para terminara pesquisa sequencial

CICS - Memória temporária ( T S ) É usada para o armazenamento de dados intermediários do CICS.

É gerada e acessada apenas pelo CICS.

Pode ser acessada por varias tarefas.

Fica armazenado em memória principal ou em memória auxiliar ( DISCO ), até que seja deletada ou o CICS pare de funcionar.

Não é necessário constar em nenhuma tabela.

Cada registro a ser gravado deve possuir um nome. O nome pode variar em extensão de 1 a 8 caracteres. Deve-se tomar o cuidado de atribuir uma identificação única para o registro.

Pode ser gravado um ou mais registros com o mesmo nome e dentro de um conjunto de registros com o mesmo nome, um registro específico poderá ser acessado.

Comando WRITEQ TS

Formato do comando:

EXEC CICS WRITEQ TS Explicação do argumento

QUEUE    ('WORK-NOME')

Especifica-se o nome de dados atribuido ao registro. Pode ser um literal ou uma área de dados contendo o nome a ser atribuido ao registro.

FROM      (WORK-AREA)

Especifica-se a área onde se encontra o registro a ser gravado

LENGTH   (+100) Especifica-se o tamanho da área de dados a ser gravada.

ITEM        (WORK-POSI)

Se estiver sendo incluído registros, o CICS coloca neste campo o número do registro gravado. Se estiver sendo feito atualização, deve-se informar o número do registro a ser alterado através deste campo. O formato deste campo é PIC S9(004) COMP.

REWRITEEspecifica-se que o regstro cujo número está sendo informado na opção 'ITEM' é para ser atualizado.

MAIN

Indica que o registro é para ser armazenado na memória principal. salvo em raras ocasiões e para pequenas quantidades de registros, esta opção não deve ser utilizada

AUXILIARYIndica que o registro é para ser armazenado na memória auxiliar. Esta opção é o default.

Este comando é utilizado para gravar registros em memória temporária ( TEMPORARY STORAGE - TS )

37

Page 38: 91903584 CICS Portugues

Exemplo do comando:

EXEC CICS WRITEQ TS QUEUE ('WORK-NOME') FROM (WORK-AREA) LENGTH (+100) END-EXEC.

Explicação do exemplo:

O CICS gravará o registro em memoria temporaria ( TS ) com o nome especificado em 'WORK-NOME', os dados que estão em 'WORK-AREA' com o tamanho de 100 bytes.

Condição de exceção:

NOSPACE: ocorre se nao houver mais espaço em memória para a gravação do registro. A ação padrão do CICS é suspender a tarefa até existir espaço. Caso nao queira que tal fato ocorra, deve ser codificado um 'HANDLE CONDITION' para tal exceção.

ITEMERR: ocorre se o número especificado em item for diferente dos números de registros existentes na fila 'TS', caso use-se a opção 'REWRITE'.

QIDERR: não existe nenhuma fila 'TS' com o nome especificado na memória temporária.

INVREQ: o tamanho do registro a ser gravado é zero. LENGERR: o tamanho do registro lido é maior do que o tamanho especificado

na opcao 'LENGTH'. Outros: dsiderr, illogic, notopen.

Comando READQ TS

Formato do comando:

EXEC CICS READQ TS Explicação do argumento

QUEUE    ('WORK-NOME')

Especifica-se o nome de dados do registro que se deseja acessar. Pode ser um literal ou uma area de dados contendo o nome do registro a ser lido.

INTO      (WORK-AREA)Especifica-se a área onde deverá ser colocado o registro lido.

LENGTH (+100) Especifica-se o tamanho do registro a ser lido.

ITEM (WORK-POSI)

Especifica-se o núumero do registro a ser lido. Esta opção deve ser usada se for necessário acessar o registro diretamente.O formato deste campo é PIC S9(004) COMP.

NEXT

Especifica que o próximo registro da fila deverá ser acessado. Esta opção deve ser usada se for necessário acessar o registro sequencialmente. Esta opção é o DEFAULT.

Este comando é utilizado para ler registros em memória temporária ( TEMPORARY STORAGE - TS )

Exemplo do comando:

38

Page 39: 91903584 CICS Portugues

EXEC CICS READQ TS QUEUE ('WORK-NOME') INTO (WORK-AREA) LENGTH (+100) END-EXEC.

Explicação do exemplo:

O CICS lerá o próximo registro em memória temporária ( TS ) com o nome especificado em 'WORK-NOME'. OS dados ficarão em 'WORK-AREA' com o tamanho de 100 bytes.

Condição de exceção:

ITEMERR: ocorre se o número especificado em item for diferente dos numeros de registros existentes na fila 'TS' ou chegou-se ao final da fila

Outros: INVREQ, IOERR, LENGERR, QIDERR.

Comando DELETEQ TS

Formato do comando:

EXEC CICS DELETEQ TS

Explicação do argumento

QUEUE    ('WORK-NOME')

Especifica-se o nome da fila de dados que se deseja deletar. Pode ser um literal ou uma área de dados contendo o nome da fila a ser deletada.

Este comando é utilizado para deletar registros em memória temporária ( TEMPORARY STORAGE - TS )

Exemplo do comando:

EXEC CICS DELETEQ TS QUEUE ('WORK-NOME')

END-EXEC.

Explicação do exemplo:

O CICS deletará a fila de dados em memória temporária ( TS ), ou seja, deletará todos os registros pertencentes fila especificada.

Deve-se sempre lembrar que o espaço ocupado pelos dados na memória temporária não é automaticamente liberado apos os dados serem usados. Consequentemente, quando não necessitar mais dos dados na memória temporária, deve-se liberar o espaço ocupado emitindo o comando acima.

Condição de exceção:

QIDERR: ocorre se não existir nenhuma fila de TS com o nome especificado na opção 'QUEUE'.

CICS - Dados transitórios ( T D ) É usada para o armazenamento de dados transitórios do CICS.

39

Page 40: 91903584 CICS Portugues

Os dados são disponíveis para processamento 'SEQUENCIAL' para qualquer tarefa que desejar acessar.

Cada registro a ser gravado deve possuir um nome. O nome pode variar em extensão de 1 a 4 caracteres.

Deve-se tomar o cuidado de atribuir uma identificação única para o registro.

Deve ser definido na DESTINATION CONTROL TABLE ( DCT ) o nome dos dados transitorios. Deve-se, tambem, definir se os dados sao 'INTRA-PARTITION' ou 'EXTRA-PARTITION'.

Os dados gravados em INTRA-PARTITION possuem as seguintes caracteristicas:

sao gerados e acessados somente pelo cics podem ser gravados por tarefas diferentes pode ser lido apenas uma vez pode ser definido pelo programador de aplicaçao para ser deletado logo após a

leitura são gerados registros sequenciais de tamanho variavel ficam armazenados em dispositivos de acesso direto

Os dados gravados em EXTRA-PARTITION possuem as seguintes caracteristicas:

pode ser gerado no 'CICS' e acessado via 'BATCH' pode ser gerado em 'BATCH' e acessado via 'CICS' podem ser gravados por tarefas diferentes deve ser definido na 'DCT' como entrada ou saida pode ser lido apenas uma vez sao gerados registros sequenciais de tamanho fixo ou variavel podem ficar armazenados em disco, fita ou impressora

Comando WRITEQ TD

Formato do comando:

EXEC CICS WRITEQ TD Explicação do argumento

QUEUE ('WORK-NOME')Especifica-se o nome de dados atribuido ao registro. Pode ser um literal ou uma area de dados contendo o nome a ser atribuido ao registro.

FROM (WORK-AREA)Especifica-se a area onde se encontra o registro a ser gravado.

LENGTH (+100) Especifica-se o tamanho da área de dados a ser gravada.

Este comando é utilizado para gravar registros de dados transitórios ( TRANSIENT DATA - TD )

A opção 'LENGTH' somente precisa ser especificada caso os registros sejam gravados em outro dispositivo que não seja disco.

Exemplo do comando:

EXEC CICS WRITEQ TD QUEUE ('WORK-NOME') FROM (WORK-AREA) LENGTH (+100)

40

Page 41: 91903584 CICS Portugues

END-EXEC.

Explicação do exemplo:

O CICS gravará o registro como dados transitórios (TD) com o nome especificado em 'WORK-NOME', os dados que estão em 'WORK-AREA' com o tamanho de 100 bytes.

Condição de exceção:

NOSPACE: ocorre se não houver mais espaço na fila de TD para a gravação do registro. Esta condição só ocorre quando se processam destinos de intrapartição.

NOTOPEN: ocorre se o destino estiver fechado. Esta condição só ocorre quando se processam destinos de extrapartição. Estes destinos podem ser abertos e fechados pelo administrador do CICS.

QIDERR: não existe nenhuma fila 'TD', definido na 'DCT' com o nome especificado na opção 'QUEUE'.

LENGERR: o tamanho do registro lido É maior do que o tamanho mÁximo da fila definido na 'DCT'. Ocorre também se for especificado um tamanho errado para registros de tamanho fixo. Ocorre também se não for codificada a opção 'LENGTH' e a fila de destino não for disco.

Outros: ioerr.

Comando READQ TD

Formato do comando:

EXEC CICS READQ TD Explicação do argumento

QUEUE ('WORK-NOME')Especifica-se o nome de dados do registro que se deseja acessar. Pode ser um literal ou uma area de dados contendo o nome do registro a ser lido.

INTO (WORK-AREA)Especifica-se a área onde deverá ser colocado o registro lido.

LENGTH (+100)Especifica-se o tamanho do registro a ser lido. Não pode ser maior que o tamanho especificado na 'DCT'.

Este comando é utilizado para ler registros de dados transitórios ( TRANSIENT DATA - TD ) Exemplo do comando:

EXEC CICS READQ TD QUEUE ('WORK-NOME') INTO (WORK-AREA) LENGTH (+100) END-EXEC.

Explicação do exemplo:

O CICS lera' o proximo registro de dados transitorios ( TD ) com o nome especificado em 'WORK-NOME'. Os dados ficarao em 'WORK-AREA' com o tamanho de 100 bytes.

Condicao de excecao:

LENGERR: o tamanho do registro lido é maior do que o tamanho maximo da fila definido na 'DCT'. Ocorre também se for especificado um tamanho errado para

41

Page 42: 91903584 CICS Portugues

registros de tamanho fixo. Ocorre também se nao for codificada a opcao 'LENGTH' e a fila de destino nao for disco. Ocorre também se nao for codificada a opcao 'LENGTH' e o registro for de tamanho variável. O tamanho do registro lido é maior do que o tamanho especificado na opção 'LENGTH'. Neste caso, a area indicada na opção será atualizado com o valor real do tamanho do registro.

NOTOPEN: ocorre se o destino estiver fechado. QIDERR: não existe nenhuma fila 'TD', definido na'DCT' com o nome

especificado na opção 'QUEUE' QZERO: não existe nenhum registro armazenado na fila de dados transitórios

( td ) Outros: INVREQ, IOERR, LENGERR, QIDERR.

Comando DELETEQ TD

Formato do comando:

EXEC CICS DELETEQ TD

Explicação do argumento

QUEUE ('WORK-NOME')Especifica-se o nome da fila de dados que se deseja deletar. Pode ser um literal ou uma area de dados contendo o nome da fila a ser deletada.

Este comando é utilizado para deletar registros de uma fila de dados transitórios ( TRANSIENT DATA - TD )

Este comando será utilizado se a área em que foi gravado o registro de dado transitório for não-reutilizavel.

Exemplo do comando:

EXEC CICS DELETEQ TD QUEUE ('WORK-NOME') END-EXEC.

Explicação do exemplo: O CICS deletará a fila de dados transitórios ( TD ), ou seja, deletará todos os registros pertencentes a fila especificada.

Condiçao de exceção:

QIDERR: ocorre se nao existir nenhuma fila de TD com o nome especificado na opcao 'QUEUE'.

CICS - Quadro comparativo entre 'TS' e 'TD' (INTRA-PARTITION)

Item comparado INTRA TD TS

Queue ('NAME') 4 bytes 8 bytes

Dispositivo Disco Memória ou disco

Número de vezes que o dado pode ser lido

Apenas uma vez Quantas vezes for necessaria

Inicia nova tarefa Sim Não

Comandos WRITEQ TD WRITEQ TS

42

Page 43: 91903584 CICS Portugues

(DEFAULT é TS) READQ TDDELETEQ TD

READQ TSDELETEQ TS

Processamento Em 'BATCH' eEm 'CICS'

Somente no 'CICS"

Acesso Sequencial Direto ou sequencial

Atualização Não Sim

Exemplo de utilização

Estatísticas, fazer interface com o 'BATCH"

Auxilia o Desenvolvedor na confecção de programas

CICS - Usando o DL/I com o CICS Quando trabalhamos com o CICS, pode haver a necessidade de acessarmos um banco de dados hierarquico usando o DL/I.

O CICS prove a facilidade de acessarmos o DL/I, utilizando todos os conceitos aprendidos com o uso do DL/I.

O PSB que irá ser acessado deverá estar definido em uma tabela propria denominada 'DLZACT'.

EM um programa CICS usando DL/I tambem é necessário a checagem do STATUS apos cada comando de acesso ao banco de dados.

O compilador inclui um item de grupo denominado 'DLZDIB' onde contem o campo 'DIBSTAT' que é o local onde o CICS coloca o status retornado após cada execucao de comando DL/I.

Após cada comando de acesso DL/I deve-se checar o status retornado através do campo 'DIBSTAT'.

Os codigos retornados no 'DIBSTAT' são os códigos padrões do DL/I.

Comando SCHEDULE

Formato do comando:

EXEC DLI SCHEDULE Explicação do argumento

PSB ('NOME PSB')Especifica-se o nome do PSB que deseja-se tornar disponível para o acesso do programa em CICS.

Este comando é utilizado para 'assinalar' um PSB para acesso do programa em CICS.

Este comando será utilizado somente quando houver necessidade de acesso a um banco de dados.

Exemplo do comando:

EXEC DLI SCHEDULE PSB ('PS06001') END-EXEC.

43

Page 44: 91903584 CICS Portugues

Explicação do exemplo:

O CICS, através do DL/I tornar disponível o PSB especificado para o acesso do programa.

Condicao de excecao:

As condições de exceção deste comando são tratadas pelo programa 'ABENDLI'. portanto deve-se codificar o comando 'HANDLE ABEND' especificando o programa 'ABENDLI'.

Comando TERMINATE

Formato do comando:

EXEC DLI TERMINATE Não possui argumentos

Este comando é utilizado para terminar o acesso ao DL/I pelo programa em CICS.

Este comando será utilizado sempre que não mais houver necessidade de acesso ao banco de dados.

Exemplo do comando:

EXEC DLI TERMINATE END-EXEC.

Explicação do exemplo:

O CICS, através do DL/I terminará o acesso ao banco de dados atraves do PSB 'SCHEDULADO' anteriormente.

Condição de exceção:

As condições de exceção deste comando são tratadas pelo programa 'ABENDLI'. Portanto deve-se codificar o comando 'HANDLE ABEND' especificando o programa 'ABENDLI'.

Comando SYNCPOINT

Formato do comando:

EXEC CICS SYNCPOINT Explicação do argumento

ROLLBACKEspecifica-se que as alterações efetuadas devem ser ignoradas.

Este comando é utilizado para ignorar as atualizações efetuadas no banco de dados durante a execução da tarefa.

Este comando será utilizado sempre que ocorrer algum problema na atualização do banco de dados.

A execução do comando sem a opção 'ROLLBACK' efetiva as atualizações até então efetuadas pela tarefa.

44

Page 45: 91903584 CICS Portugues

Exemplo do comando:

EXEC CICS SYNCPOINT ROLLBACK END-EXEC.

Explicação do exemplo:

O CICS irá ignorar todas as atualizações efetuadas no banco de dados pelo programa de aplicação. após a execução deste comando, o banco de dados ficará com os dados inalterados.

Condição de exceção:

As condições de exceção deste comando são tratadas pelo programa 'ABENDLI'. Portanto deve-se codificar o comando 'HANDLE ABEND' especificando o programa 'ABENDLI'. Comandos de acesso e atualização do banco de dados.

Os comandos de acesso ao banco de dados seguem ao formato abaixo:

EXEC DLI CODIGO USING PCB (NR PCB) WHERE (CONDICAO) FIELDLENGTH (TAMANHO) SEGMENT (NOME SGTO) FROM/INTO (AREA DADOS) SEGLENGTH (TAMANHO) END-EXEC.

Onde:

CODIGO: É o codigo de funcao que deseja-se executar que pode ser GU, GN, GNP, REPL, ISRT e DLET.

PCB: especifica-se o numero do PCB no PSB correspondente. Varia de 1 a quantidade de PCB'S no PSB.

WHERE: Especifica-se o campo chave do segmento e a condicao de comparacao. equivale a usar um SSA qualificado.

FIELDLENGTH: Especifica-se o tamanho do campo chave SEGMENT: Especifica-se o nome do segmento que deseja acessar. FROM: Especifica-se a area de dados de onde o dl/i pegará os dados, se estiver

alterando o banco de dados. INTO: Especifica-se a area de dados onde o segmento acessado será

armazenado, se estiver lendo o banco de dados. SEGLENGTH: Especifica-se o tamanho da area especificada na opção

'SEGMENT'. END-EXEC: Delimitador para comandos para programas COBOL. Indica o final

de um comando CICS.

Exemplo para programa COBOL de um comando com SSA qualificado:

EXEC DLI GU USING PCB (1) SEGMENT (SG0801) WHERE (FL080101 =

45

Page 46: 91903584 CICS Portugues

WORK-CARGO-DB08) FIELDLENGTH (7) INTO (SG0801) SEGLENGTH (+100) END-EXEC.

Explicação do exemplo:

O CICS, atraves do DL/I, recuperará o SG0801 que satisfaça a condição especificada no parametro 'WHERE'.

O tamanho do campo chave do segmento é 7 bytes e o tamanho do segmento é 100 bytes.

Os dados do segmento após o acesso serão colocados na área de dados SG0801.

Foi utlizado o primeiro PCB do PSB especificado na tabela "DLZACT" para acesso deste programa.

Exemplo para programa COBOL de um comando coM SSA nao qualificado:

EXEC DLI GNP USING PCB (5) SEGMENT (SG0602) INTO (SG0602) SEGLENGTH (+162) END-EXEC.

Explicação do exemplo:

O CICS, através do DL/I, recuperará o próximo SG0602 que esteja subordinado a um pai especifico estabelecido através de um 'GU' ou 'GN'. O tamanho do segmento é 162 bytes. Os dados do segmento após o acesso serão colocados na área de dados SG0602. Foi utilizado o quinto PCB do PSB especificado na tabela "DLZACT" para acesso deste programa.

Observação:

Lembrar que apos cada comando de acesso ao banco de dados deve ser checado o campo 'DIBSTAT' tomando as providências necessárias para cada caso.

CICS - Códigos EIBRESPEsta página contém os códigos CICS EIBRESP produzidos a partir de chamadas de E/S. Esta lista pode ser encontrada nos livros da IBM:

Bookshelf: CICS Transaction Server (Pesquisar bookshelves)

Book:        CICS Application Programming Reference (Pesquisar books)

Códigos:

Código

Condição

Código

Condição

Código

Condição

Código

Condição

Código

Condição

Código

Condição

00 NORMAL

01 ERROR 02 RDATT 03 WRBRK 04 EOF 05 EODS

06 EOC 07 INBFMH 08 ENDINPT

09 NONVAL

10 NOSTART

11 TERMIDERR

46

Page 47: 91903584 CICS Portugues

12 FILENOTFOUND

13 NOTFND 14 DUPREC 15 DUPKEY 16 INVREQ 17 IOERR

18 NOSPACE

19 NOTOPEN

20 ENDFILE

21 ILLOGIC 22 LENGERR

23 QZERO

24 SIGNAL 25 QBUSY 26 ITEMERR

27 PGMIDERR

28 TRANSIDERR

29 ENDDATA

31 EXPIRED

32 RETPAGE

33 RTEFAIL 34 RTESOME

35 TSIOERR

36 MAPFAIL

37 INVERRTERM

38 INVMPSZ 39 IGREQID

40 OVERFLOW

41 INVLDC 42 NOSTG

43 JIDERR 44 QIDERR 45 NOJBUFSP

46 DSSTAT 47 SELNERR

48 FUNCERR

49 UNEXPIN

50 NOPASSBKRD

51 NOPASSBKWR

53 SYSIDERR

54 ISCINVREQ

55 ENQBUSY

56 ENVDEFERR

57 IGREQCD

58 SESSIONERR

59 SYSBUSY

60 SESSBUSY

61 NOTALLOC

62 CBIDERR

63 INVEXITREQ

64 INVPARTNSET

65 INVPARTN

66 PARTNFAIL

69 USERIDERR

70 NOTAUTH

72 SUPPRESSED

80 NOSPOOL

81 TERMERR

82 ROLLEDBACK

83 END

84 DISABLED

85 ALLOCERR

86 STRELERR

87 OPENERR

88 SPOLBUSY

89 SPOLERR

90NODEIDERR 91

TASKIDERR 92

TCIDERR 93

DSNNOTFOUND

94LOADING 95

MODELIDERR

96 OUTDESCRERR

97 PARTNERIDERR

98 PROFILEIDERR

99 NETNAMERR

100

LOCKED

101

RECORDBUSY

102

UOWNOTFOUND

103

UOWLNOTFOUND

104

LINKABEND

105

CHANGED

106

PROCESSBUSY

107

ACTIVITYBUSY

108

PROCESSERR

109

ACTIVITYERR

110

CONTAINERERR

111

EVENTERR

112

TOKENERR

113

NOTFINISHED

114

POOLERR

115

TIMERERR

116

SYMBOLERR

117

TEMPLATERR

121

RESUNAVAIL

122

CHANNELERR

123

CCSIDERR

47