Você está na página 1de 48

CICS - Componentes do CICS e suas funes O Customer Information Control System (CICS) um produto IBM que manuseia aplicacoes

s 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: Mdulos de gerncia: So programas que gerenciam o ambiente on-line e fazem o interface entre o sistema operacional e os programas de aplicao. Cada mdulo de gerencia realiza uma funo especial. Exemplos: FILE CONTROL PROGRAM ( FCP ) - operaes de leitura e gravao em arquivos TERMINAL CONTROL PROGRAM ( TCP ) - operaes de envio e recepo de dados ao terminal

Tabelas do sistema: So utilizadas pelo CICS para se definir os equipamentos que podem ser utilizados, bem como os recursos que sero utilizados em termos de arquivos, programas, transaes, etc. So geradas pelo analista de sistemas responsvel pelo gerenciamento do CICS. Em virtude dos equipamentos estarem pre-definidos em uma tabela, nao h a necessidade da definio no programa de aplicao. Exemplos: FILE CONTROL TABLE ( FCT ) - definio dos arquivos utilizados por cada programa de aplicao TERMINAL CONTROL TABLE ( TCT ) - definio de cada terminal da rede

Blocos de controle: so utilizados pelo CICS para acesso e atualizao das informaes modificveis (dinamicas), necessrias para a execuo do programa de aplicao. Exemplo: TASK CONTROL AREA ( TCA ) - contm indicadores de localizao para o programa de aplicao e para a entrada do terminal na TCT Todos os componentes acima ficam 'residentes' na memria real.

Programas de aplicao: So os programas escritos pelos usurios para processamento online de um determinado tipo de servio.

No fica 'residente' na memria real. CICS - Conceitos da execucao de uma tarefa em CICS Pontos principais: O CICS opera como programa principal Os programas de aplicao operam sob o CICS O fluxo de informaes entre o usurio e o programa controlado pelo CICS Tipicamente, uma transao 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 real Os programas nao podem alterar instrues dinmicas (reentrantes) conforme veremos adiante A tarefa (TASK) recebe o controle do CICS e deve devolv-lo ao CICS

Transao conversacional: A transao fica sempre ativa Detem sempre o controle Esta' sempre esperando interveno do operador Muitos recursos ficam 'presos' pela transao S devolve o controle ao cics quando o operador terminar o servio

Transao pseudo-conversacional: A transao s est ativa quando est sendo executada Recebe o controle do CICS e o devolve, apos sua execuo No h interveno do operador na execuo Prende muito pouco os recursos A codificao de transaes conversacionais comprometem a eficincia e performance do CICS, portanto a sua utilizao desaconselhada.

Tpico uso 'BATCH' +------------------+ I INICIO I +------------------+ I CONSISTENCIA I +------------------+ I TESTE DE CODIGOS I +------------------+ I MODULO PRINCIPAL I +------------------+ I INCLUSAO I +------------------+ I EXCLUSAO I +------------------+ I ATUALIZACAO I +------------------+ I FIM I +------------------+

. .

Um programa grande Existe em memria cdigo que no usado simultaneamente ou seja, se for feito apenas incluso, todos os mdulos, mesmo os no utilizados, estaro residentes na memria

Tpico uso 'REAL TIME' +------------------+

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 I + I I I I I I I I +------------------+ I CONSISTENCIA I +------------------+ . . . Pode ser composto por varios programas Tamanhos pequenos e parecidos S est na memoria o necessario, ou seja, se no for feita nenhuma excluso, o mdulo de excluso nao ser carregado I +----------+ +----------+ +----------I INCLUSAO I I EXCLUSAO I I ALTERACAO

CICS - Formato geral do comando CICS O CICS possui o seu prprio formato de comando, como a seguir: EXEC CICS FUNCAO OPCAO (ARG) END-EXEC. Onde: Funo : uma palavra-chave que descreve a operacao solicitada. Exemplo: READ, SEND, HANDLE, ETC. Opo : uma palavra chave que descreve recursos a disposio em cada funo. algumas opes so 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: 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 no existe tais comandos, antes de ser compilado ou montado, o programa de aplicao processado por um tradutor de comandos, que muda os comandos do CICS em comandos MOVE e CALL que existem no COBOL. EXEC

Durante a execuo do programa, estes comandos CALL chamam a rotina de interface do nvel de comando e passam os parmetros apropriados para a rotina. A rotina de interface ento chama o mdulo de gerencia do CICS que indicado pela funo do comando no programa de aplicao.

CICS - Acesso as informaes do sistema O CICS mantm acompanhamento de certos dados que o programa de aplicao pode necessitar durante a execuo, dados tais como numero da tarefa, hora e data. O CICS registra este tipo de dados internos em reas que o programa de aplicao nao tem acesso direto. Contudo, o CICS copia os dados num bloco de interface de execuo (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 aplicao. O EIB para uma tarefa armazena informaes que o programa de aplicao pode ento pesquisar usando-se os nomes dos campos. segue os nomes de alguns campos e seus contedos. Campo EIBDATE Tamanho S9(007) Explicao Data em que teve inicio a tarefa. Este campo est no formato decimal compactado com o seguinte layout: 00AADDD Hora em que teve inicio a tarefa. Este campo est no formato decimal compactado com o seguinte layout: 0HHMMSS Identificao da tarefa Identificao do terminal que est associado a tarefa Contm a ltima tecla de 'funo programada' digitada pelo operador Posio do cursor na tela na hora da ltima entrada. este campo est no formato computational (COMP) 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)

EIBTIME

S9(007)

EIBTRNID EIBTRMID EIBAID EIBPOSN EIBCALEN

X(004) X(004) X(001) S9(004) S9(004)

Para a atualizao 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: EXEC CICS

ASKTIME END-EXEC.

CICS - Definio de telas - BASIC MAPPING SUPPORT ( BMS ) Para a execuo 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 informaes que necessita. Esta tela definida pelo programador, utilizando os recursos oferecidos pelo BASIC MAPPING SUPPORT ( BMS ), que tem a funo de fazer o interface entre o programa de aplicao e o 'TERMINAL CONTROL PROGRAM ( TCP )'. O BMS oferece algumas vantagens tais como, independncia de dispositivos e independncia de formato de dados. O BMS trabalha com dois tipos de mapas: 1 - Mapa fsico ( MAPSET ) que catalogado na CIL em formato de 'PHASE'. E' constitudo por caracteres de controle, constantes e dados variveis do aplicativo. 2 - Mapa lgico ( MAP ) catalogado na SOURCE ( BIBLIOTECA DE DADOS ) em formato de 'BOOK'. e' constitudo somente pelos dados variveis. O BMS na entrada remove os caracteres de controle e transfere somente os dados para o programa de aplicao. na saida, o BMS obtem os dados variveis do programa de aplicao e intercala com os caracteres de controle mais as constantes do mapa. A definio de mapas fsicos e lgicos feita utilizando-se 'MACROS' que seguem a regra 'ASSEMBLER' para a sua codificao. Para a codificao, 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 codificao das macros, apesar de poder comear na coluna 2, costuma-se codificar comeando na coluna 10. costuma-se, tambem, codificar os parmetros necessrios para cada macro, a partir da coluna 16, exceto na primeira linha onde comeca-se a definir na coluna 17. A codificaao pode ir at a coluna 71. A coluna 72 reservada para ser usada quando deseja-se continuar a definio de uma macro em uma outra linha, sendo que, a linha a ser continuada deve ter, na coluna 72, um caracter de continuao diferente de branco e a linha de continuao deve ter a sua codificao iniciada na coluna 16. MACRO MAPSET ). Um MAPSET pode conter 'um ou mais' mapas. ....+....1....+....2....+....3....+....4....+....5....+....6....+....7 .. LABEL * * DFHMSD TYPE=(MAP/DSECT/FINAL), LANG=(ASM/COBOL/PL/I), DFHMSD

Esta macro utilizada para definir o conjunto de mapas (

TIOAPFX=(YES/NO), * MODE=(IN/OUT/INOUT), * STORAGE=AUTO, * CTRL=OPCOES, * TERM=MODELO, * DATA=(FIELD/BLOCK) Parmetros para a macro DFHMSD: LABEL : deve ser especificado o nome do MAPSET, com, no mximo 7 caracteres TYPE : MAP - criar mapa fsico. DSECT - criar mapa lgico. FINAL - encerra a definio do conjunto de mapas. : ASM - ser gerado o mapa lgico em ASSEMBLER (

LANG DEFAULT ).

COBOL - ser gerado o mapa lgico em COBOL. PL/I - ser gerado o mapa lgico em PL/I. TIOAPFX : YES - indica que deve ser reservada uma rea de 12 bytes no incio do mapa, para o prefixo da TIOA ( TERMINAL INPUT OUTPUT AREA ). Nesta rea existem caracteres de controle que um programa em COMMAND LEVEL no pode utilizar. NO - sem bytes de controle ( DEFAULT ). MODE : indica o tipo de utilizao do MAPSET. Tambm ser utilizado na gerao do mapa lgico. IN - indica que qualquer mapa do MAPSET somente poder ser recebido pelo programa de aplicao. OUT - Indica que qualquer mapa do MAPSET somente poder ser enviado pelo programa de aplicao. INOUT - Indica que o programa de aplicao poder receber e enviar qualquer mapa do MAPSET. STORAGE : AUTO - Ser alocada automaticamente uma rea para cada mapa do MAPSET. Se este parmetro 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 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 trabalho em formato de campos. formato: +----------------+ I LL I A I DADOS I +----------------+ onde: binarios - HALF WORD PIC S9(04) COMP. A - byte de atributo do campo - rea de trabalho em formato de bloco. LL - tamanho do campo ( 2 bytes - area de

BLOCK 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 * * COLUMN=COLUNA, * JUSTIFY=(LEFT/RIGHT,FIRST/LAST), * HEADER=YES/TRAILER=YES, * TIOAPFX=(YES/NO) Parmetros para a macro DFHMDI: LABEL : Deve ser especificado o nome do mapa lgico, com, no mximo 7 caracteres. SIZE linhas e colunas. : Especifica as dimenses do mapa, e termos de DFHMDI SIZE=(LINHAS,COLUNAS), LINE=LINHA,

LINHAS - nmero mximo de linhas do mapa. COLUNAS - nmero mximo de colunas do mapa. LINE terminal. COLUMN terminal. JUSTIFY 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 cabealho. Deve ser usado em conjunto com a opo 'JUSTIFY=FIRST'. Usado em paginao. TRAILER : Especifica que o mapa um mapa de rodap. Deve ser usado em conjunto com a opo 'JUSTIFY=LAST'. Usado em paginao. 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 no pode utilizar. NO - Sem bytes de controle ( DEFAULT ) : Especifica qual o alinhamento do mapa: LEFT - O alinhamento do mapa ser a esquerda ( : Especifica qual a coluna inicial do mapa no : Especifica qual a linha inicial do mapa no

MACRO

DFHMF

Esta macro utilizada para definir os campos varives e as constantes dentro do mapa. ....+....1....+....2....+....3....+....4....+....5....+....6....+....7 .. LABEL * * ATTRB=LISTA DE ATRIBUTOS, * INITIAL='CONSTANTE', * JUSTIFY=(LEFT/RIGHT,BLANK/ZERO), * GRPNAME=ITEM DE GRUPO, * OCCURS=NNN, DFHMDF POS=(LINHA,COLUNA), LENGTH=TAMANHO,

* PICIN='MASCARA', * PICOUT='MASCARA' Parmetros para a macro DFHMDF: LABEL : Deve ser especificado o nome do campo, com, no mximo 7 caracteres. Se o label for omitido, o campo nao poder ser acessado pelo programa de aplicao, ou seja, ser definido apenas uma constante para o mapa. POS : Especifica a posio do atributo do campo em relao ao mapa e no a posicao fisica. Em todas as macros DFHMDF de um determinado mapa, as posies 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 posio 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 automtico do CURSOR, ou seja, no possvel 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 disponvel para a entrada de dados. UTilizado para definir campos variveis. O campo fica desprotegido, com brilho normal e alfanumerico. NUM - O campo fica disponvel para a entrada de dados numricos e o hfen ( - ). utilizado em conjunto com o atributo UNPROT. O campo fica desprotegido, com brilho normal e numrico. BRT - O campo fica brilhante. NORM - O campo fica com brilho normal. DRK - Indica que embora o campo exista na tela, no 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 aps o envio do mapa. Caso haja mais de um IC, o CURSOR ficar posicionado no campo em que estiver o ultimo IC. Se este parmetro 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 recepo do mapa, independente se o campo foi ou nao alterado. O DEFAULT o MDT desligado. Observacao - Qualquer um dos atributos poder ser alterado pelo programa de aplicao.

- Se o parmetro ATTRB for omitido, o campo ser considerado com o atributo ASKIP. - Se qualquer das opes de ATTRB for codificada, o campo ter as opes de UNPROT e NORM em acrscimo ao atributo especificado. INITIAL JUSTIFY : Define um conteudo inicial para o campo.

: 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. Observao - O DEFAULT para JUSTIFY : RIGHT, ZERO se o campo for numrico LEFT, BLANK se o campo for alfanumrico GRPNAME : Permite que um campo seja subdividido e manipulado pelo programa de aplicao, ou seja, permite que seja definido um item de grupo com itens elementares. As caracterpisticas fsicas do item de grupo so igualmente aplicveis a todos os itens elementares. Todos os itens elementares do item de grupo devem ter os mesmos parmetros, caso isto no ocorra ser considerado as caractersticas do primeiro item elementar deste item de grupo. OCCURS : Define n campos de uma s vez. Semelhante a clusula OCCURS do COBOL. este parmetro no pode ser utilizado em conjunto com o parmetro 'GRPNAME' na mesma macro DFHMDF. PICIN campo. PICOUT campo. OBSERVACAO - Caso seja especificado os parmetros PICIN e PICOUT para um mesmo campo, as mscaras devem ser do mesmo tamanho quanto ao nmero de posies ocupadas. : Define uma mscara de saida de dados para o : Define uma mscara de entrada de dados para o

Exemplo de definicao de MAPSET ....+....1....+....2....+....3....+....4....+....5....+....6....+....7 .. XZ00001 * * CTRL=(FREEKB,FRSET,ALARM), * MODE=INOUT, * STORAGE=AUTO * DFHMSD TYPE=&SYSPARM, LANG=COBOL,

MZ0001A TRANS * SALVA * DIA MES ANO *

DFHMDI SIZE=(22,80),LINE=1,COLUMN=1,JUSTIFY=(LEFT,FIRST) DFHMDF POS=(01,01),LENGTH=04,ATTRB=(ASKIP,BRT,FSET), INITIAL='CURS' DFHMDF POS=(01,08),LENGTH=04,ATTRB=(ASKIP,DRK) DFHMDF POS=(01,20),LENGTH=40,ATTRB=(ASKIP,BRT), DFHMDF DFHMDF DFHMDF DFHMDF DFHMDF INITIAL='*** EXEMPLO DE DEFINICAO DE MAPSET ***' POS=(01,70),LENGTH=02,ATTRB=ASKIP,GRPNAME=DATA POS=(01,72),LENGTH=02,GRPNAME=DATA POS=(01,74),LENGTH=02,GRPNAME=DATA POS=(05,01),LENGTH=10,ATTRB=ASKIP,INITIAL='COD. ALUNO' POS=(05,15),LENGTH=13,ATTRB=ASKIP,

INITIAL='NOME DO ALUNO' DFHMDF POS=(05,39),LENGTH=29,ATTRB=(ASKIP,BRT), * CODAL NOMEAL NOTAS * * INITIAL='PF3 * DFHMSD TYPE=FINAL END BOOK retornado com a compilao do MAPSET 1 2 3 4 5 6 7 8 1234567890123456789012345678901234567890123456789012345678901234567890 123456780 01 02 02 02 02 03 02 02 02 02 03 02 02 02 02 03 02 03 03 03 02 02 MZ0001AI. FILLER TRANSL TRANSF FILLER TRANSA TRANSI SALVAL SALVAF FILLER SALVAA SALVAI DATAL DATAF FILLER DATAA DATAI. DIAI MESI ANOI CODALL CODALF PIC X(012). PIC S9(004). PIC X(001). REDEFINES TRANSF. PIC X(001). PIC X(004). PIC S9(004). PIC X(001). REDEFINES SALVAF. PIC X(001). PIC X(004). PIC S9(004). PIC X(001). REDEFINES DATAF. PIC X(001). PIC X(002). PIC X(002). PIC X(002). PIC S9(004). PIC X(001). RETORNAR PA2 SAIR' DFHMDF DFHMDF DFHMDF DFHMDF INITIAL='NOTA1 NOTA2 NOTA3 NOTA4 NOTA5' POS=(07,01),LENGTH=05,ATTRB=(UNPROT,NUM) POS=(07,07),LENGTH=01,ATTRB=ASKIP,INITIAL=' ' POS=(07,15),LENGTH=20,ATTRB=ASKIP POS=(07,40),LENGTH=05,ATTRB=ASKIP,OCCURS=5,

PICOUT='ZZ9,9' DFHMDF POS=(22,21),LENGTH=40,ATTRB=(PROT,BRT),

COMP

COMP

COMP

COMP

02

FILLER 03 CODALA 02 CODALI 02 NOMEALL 02 NOMEALF 02 FILLER 03 NOMEALA 02 NOMEALI 02 NOTASD 03 NOTASL 03 NOTASF 03 NOTASI 01 02 02 02 02 02 02 02 03 03 03 02 02 02 02 02 03 03 03 MZ0001AO FILLER FILLER TRANSO FILLER SALVAO FILLER DATAO. DIAO MESO ANOO FILLER CODALO FILLER NOMEALO DFHMS1 FILLER NOTASA NOTASO

COMP

COMP

REDEFINES CODALF. PIC X(001). PIC X(005). PIC S9(004). PIC X(001). REDEFINES NOMEALF. PIC X(001). PIC X(020). OCCURS 5 TIMES. PIC S9(004). PIC X(001). PIC X(005). REDEFINES MZ0001AI. PIC X(012). PIC X(003). PIC X(004). PIC X(003). PIC X(004). PIC X(003). PIC X(002). PIC X(002). PIC X(002). PIC X(003). PIC X(005). PIC X(003). PIC X(020). OCCURS 5 TIMES. PIC X(002). PIC X(001). PIC ZZ9,9. Explicao da gerao do mapa

lgico 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 opo 'MODE=IN' ou acrescido do sufixo 'O' se for usada a opo 'MODE=OUT'. Para o MAPSET em que foi especificado 'MODE=INOUT', so gerados DOIS NIVEIS 01, um com o sufixo 'I' e outro com o sufixo 'O'. O segundo NIVEL 01 uma redefinio do primeiro. Para cada macro dfhmdf codificada so criados UM NIVEL 02 e UM NIVEL 03 com o label especificado na macro acrescido com sufixos especficos. 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 recepo de dados do campo. 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 redefinio da rea MZ0001AI, por ter sido especificado na macro DFHMSD o parmetro '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 parmetro 'GRPNAME=DATA' na macro DFHMDF dos campo DIA, MES E ANO. Observar que foi gerado uma tabela 'NOTASD' em virtude de termos codificado o parmetro '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 posies foram tecladas pelo operador. O campo com sufixo l tambm 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 aplicao para alterar o atributo do campo ( ATTRIBUTE ), isto , quando deseja-se um atributo diferente do que foi especificado na codificao da macro DFHMDF. LABEL + SUFIXO I - Essa area utilizada pelo programa de aplicao para trabalhar com os dados de entrada ( INPUT ). LABEL + SUFIXO O - Essa area utilizada pelo programa de aplicao para trabalhar com os dados de saida ( OUTPUT ), sendo esta area uma redefinio da area de sufixo 'I'.

A seguir esto os atributos que pode-se mover para o campo de sufixo 'A' pelo programa de aplicao. Para ter estes campos no programa deve-se copiar o layout catalogado 'DFHBMSCA'. 1 2 3 4 5 6 7 8 1234567890123456789012345678901234567890123456789012345678901234567890 123456780 01 02 02 DFHBMSCA. DFHBMPEM DFHBMPNL PIC PIC X(001) X(001) VALUE VALUE IS IS '.'. '.'.

02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02

DFHBMASK DFHBMUNP DFHBMUNN DFHBMPRO DFHBMBRY DFHBMDAR DFHBMFSE DFHBMPRF DFHBMASF DFHBMASB DFHBMEOF DFHBMDET DFHBMPSO DFHBMPSI DFHSA DFHCOLOR DFHPS DFHHLT DFH3270 DFHVAL DFHOUTLN DFHBKTRN DFHALL DFHERROR DFHDFT DFHDFCOL DFHBLUE DFHRED DFHPINK DFHGREEN DFHTURQ DFHYELLO DFHNEUTR DFHBASE DFHDFHI DFHBLINK DFHREVRS DFHUNDLN DFHMFIL DFHMENT DFHMFE DFHUNNOD DFHUNIMD DFHUNNUM DFHUNINT DFHUNNON DFHPROTI DFHPROTN DFHMT DFHMFT DFHMET DFHMFET DFHDFFR DFHLEFT DFHOVER DFHRIGHT DFHUNDER DFHBOX DFHSOSI DFHTRANS DFHOPAQ

PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC

X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001)

VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE

IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS

'0'. ' '. '&'. '-'. 'H'. '<'. 'A'. '/'. '1'. '8'. '.'. '.'. '.'. '.'. '.'. '.'. '.'. '.'. '.'. 'A'. 'B'. '.'. '.'. '.'. '.'. '.'. '1'. '2'. '3'. '4'. '5'. '6'. '7'. '.'. '.'. '1'. '2'. '4'. '.'. '.'. '.'. '('. 'I'. 'J'. 'R'. ')'. 'Y'. '%'. '.'. '.'. '.'. '.'. '.'. '.'. '.'. '.'. '.'. '.'. '.'. '0'. '.'.

CICS - Tratamento de condies de exceo Comando HANDLE CONDITION Formato do comando: EXEC CICS HANDLE CONDITION Condio (pargrafo)

Explicao do argumento Especifica-se uma condio de erro, associando a ela um pargrafo que receber o controle do programa caso a condio de exceo ocorra.

o comando acima utilizado para especificar um pargrafo que receber o controle caso uma condio de exceo ( erro de leitura/gravao em um arquivo ) ocorra. O tratamento de uma determinada exceo prevalece at que seja especificado outro 'HANDLE CONDITION' para a mesma exceo, ou se for executado o comando que ignore esta condio de exceo. A especificao de um 'HANDLE CONDITION' para uma exceo, no elimina o tratamento de outras condies de exceo anteriormente especificadas. Existe uma condio especial que engloba todas as condies de exceo que podem ocorrer, com exceo das condies de exceo que j foram especificadas no programa de aplicao, esta condicao 'ERROR'. Exemplo do comando: EXEC CICS HANDLE CONDITION LENGERR (0100-LENGERR) DUPKEY (0200-DUPKEY) ERROR (0300-ERROR)

END-EXEC.

Explicao do exemplo: Caso ocorra algum erro de tamanho em alguma funcao do COMMAND LEVEL, o controle do programa ser desviado para o pargrafo '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: EXEC CICS IGNORE CONDITION

Explicao do argumento

Condio

Pode ser especificado um label para cada condio de exceo.

O comando acima utilizado para ignorar uma determinada condio de exceo. Caso ocorra a condio de exceo especificada a execuo do programa continuar na instrucao seguinte a instruo que originou a condio de exceo. Exemplo do comando: EXEC END-EXEC. CICS IGNORE

CONDITION

LENGERR

Explicao do exemplo: Caso ocorra algum erro de tamanho em alguma funcao do COMMAND LEVEL, apos a execuo deste comando, o CICS ir ignora-lo, ou seja, o programa continuar com sua execuo normalmente. Observao: Caso nao sejam codificados os comandos HANDLE e nem IGNORE CONDITION para uma determinada condio de exceo e esta vier a ocorrer, o programa cancelar.

CICS - Controle de programas Quando desenvolve-se programas de aplicao em COMMAND LEVEL, normalmente necessitamos de transferir o controle para outro programa de aplicao. Este servico feito pelo PROGRAM CONTROL PROGRAM ( PCP ), cuja principal finalidade executar as funes de gerenciamento dos programas de aplicao, dando acesso aos programas, mapas e tabelas de aplicao. O PCP executa as seguintes funes: localizao dos programas de aplicao carga de uma tabela, programa de aplicao ou mapa liberao de uma tabela ou programa de aplicao que foi anteriormente carregado carga do programa de aplicao, se necessrio, para execuo transferencia de controle do CICS para o programa de aplicao e tambem entre os programas de aplicao passagem de dados entre programas de aplicao trmino do programa de aplicao

O PCP contm a PROCESSING PROGRAM TABLE ( PPT ), que o local onde deve ser cadastrado todo programa de aplicao para que o mesmo possa ser executado pelo CICS. A PPT Contm as seguintes informaes: nome do programa localizao na biblioteca linguagem utilizada

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 execuo. A PCT contm as seguintes informaes: nome do programa nome da task que esta' associada ao programa

Comando LINK Formato do comando: EXEC CICS LINK PROGRAM ('NOME PROGRAMA') COMMAREA (WORKCOMMAREA) Explicao do argumento Especifica o nome do programa para o qual ser passado o controle Especifica a rea que contm os dados que sero passados ao programa chamado. Especifica o tamanho da rea em que esto os dados que esto sendo passados ao programa chamado. Deve, obrigatoriamente ser usado, quando for usado 'COMMAREA'.

LENGTH (+20)

Este comando utilizado para passar o controle de um programa de aplicao para outro. o programa chamado colocado hierarquicamente em nvel inferior ao que o chamou, sendo que o programa que o chamou continua na memria e logo apos o trmino da execuo do programa chamado, o programa que o chamou recebe o controle e continua a sua execuo com a instruo seguinte ao comando 'LINK'. Exemplo do comando:

EXEC END-EXEC.

CICS

LINK PROGRAM ('P86851') COMMAREA(WORK-COMMAREA) LENGTH (+51)

Explicao do exemplo: O controle da execuo ser passado ao programa P86851, os dados contidos em WORK-COMMAREA sero passados ao programa com tamanho de 51 bytes. aps a execuo do programa P86851 o controle volta e a execuo continua com a proxima instruo. Condio de exceo: PGMIDERR: ocorre se o programa nao estiver cadastrado na PPT, ou se o programa estiver em condio 'DISABLED', ou se o programa nao estiver catalogado. Comando XCTL Formato do comando:

EXEC CICS XCTL PROGRAM ('nome programa') COMMAREA (WORKCOMMAREA)

Explicao do argumento Especifica o nome do programa para o qual ser passado o controle. Especifica a rea que contm os dados que sero passados ao programa chamado. Especifica o tamanho da rea em que esto os dados que esto sendo passados ao programa chamado. Deve, obrigatoriamente ser usado, quando for usado 'COMMAREA'.

LENGTH (+20)

Este comando utilizado para passar o controle de um programa de aplicaao para outro. o programa chamado colocado no mesmo nvel hierrquico do programa que o chamou, sendo que o programa que o chamou nao continua na memria pois sua rea liberada para o CICS, nao havendo, portanto, possibilidade de retorno apenas com o trmino da execuo do programa chamado. Caso haja a necessidade de retorno ao programa chamador deve-se usar o comando 'XCTL'. Exemplo do comando: EXEC END-EXEC. CICS XCTL PROGRAM ('P86851') COMMAREA(WORK-COMMAREA) LENGTH (+51)

Explicao do exemplo: O controle da execuo ser passado ao programa P86851, os dados contidos em WORK-COMMAREA sero passados ao programa com tamanho de 51 bytes. Aps a execuo do programa P86851 o controle nao volta e a execuco comecar na primeira instruo do programa, se o programa chamado emitir um comando chamando este programa. Condio de exceo: PGMIDERR: ocorre se o programa nao estiver cadastrado na PPT, ou se o programa estiver em condio 'DISABLED', ou se o programa no estiver catalogado. Comando RETURN Formato do comando: EXEC CICS RETURN TRANSID ('TRANSACAO') COMMAREA (WORKCOMMAREA) Explicao do argumento Especifica o nome da transao para a qual ser passado o controle e deve estar definido na PCT. Especifica a rea que contm os dados que sero passados ao programa chamado. Especifica o tamanho da rea em que esto os dados que esto sendo passados ao programa chamado. Deve, obrigatoriamente ser usado, quando for usado 'COMMAREA'.

LENGTH (+20)

Este comando utilizado para passar o controle de um programa de aplicao para outro ou de um programa de aplicao para o CICS. A emisso do comando acima sem nenhum argumento faz com que o controle seja passado ao programa de nvel hierrquico superior que pode ser um programa de aplicao ou o proprio CICAS. Este comando o mais utilizado em virtude da otimizao que ele oferece pois a tarefa ( TASK ) s estar ativa quando o operador acionar alguma tecla de funo programada ( PF ). Enquanto o operador no acionar alguma 'PF' a tarefa fica 'suspensa'. Isto possvel 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 END-EXEC.

CICS

RETURN TRANSID ('P851') COMMAREA(WORK-COMMAREA) LENGTH (+51)

Explicaco do exemplo: O controle da execuo ser passado a transao P851, que deve ter sido definido na 'PCT', os dados contidos em WORK-COMMAREA sero passados a transao com tamanho de 51 bytes. apos a execuo da transao 'P851', o controle no volta e a execuo comear na primeira instrucao do programa, se o programa chamado emitir um comando chamando este programa. Condio de exceo: INVREQ: ocorre se a opoo 'TRANSID' for utilizada para passar o controle para uma TASK que executada sem estar associada a um terminal ( TASK ASSINCRONA ). Observao: Quando usa-se a opo 'TRANSID', o programa estara imediatamente debaixo do CICS. rea de comunicao - COMMAREA Se um programa de aplico receber o controle de um outro programa de aplicao atravs dos comandos 'LINK', 'XCTL' ou 'RETURN' com a opo COMMAREA, a rea de comunicao indicada estar disponivel para o programa chamado no inicio de sua execuo. O tamanho da rea de comunicao estar disponvel 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 comunicao o tamanho especificado no EIBCALEN. Caso a 'DFHCOMMAREA' seja menor, ocorrer truncagem de dados. aconselhavel que no se trabalhe diretamente com a area de comunicao, ou seja, deve-se mover a 'DFHCOMMAREA' para uma rea de WORKING e trabalhar com essa

area.

CICS - Transmisso de dados entre a tarefa e o terminal A transmisso de dados entre a tarefa e o terminal feita pelo TERMINAL CONTROL PROGRAM ( TCP ). A principal finalidade do TCP a de efetuar a comunicao dos programas de aplicao com os terminais. Enquanto no for terminada a tarefa, a mesma fica 'ATACHADA' com o terminal e sempre que aquele terminal for 'ACIONADO' ser verificado se h alguma transao 'ATACHADA' e se houver, qual a transao que est atachada ao mesmo. Suas principais funes sao: prover a insero e retirada dos caracteres de controle de transmisso ( protocolo ) requisitar o inicio de uma nova tarefa transferir informaes do programa para o terminal atravs de interface com o BMS transferir informaes do terminal para o programa tambem atravs 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 contm as seguintes informaes: caracteristicas do terminal endereco para o cics codigo do terminal informacoes de controle ( ex.: se j existe uma transao 'ATACHADA AO TERMINAL').

Comando SEND MAP Formato do comando: EXEC CICS SEND MAPSET ('MAPSET') MAP ('MAPA') FROM (MP8601AO) Explicao do argumento Especifica o nome do MAPSET em que se encontra o mapa a ser enviado Especifica o nome do mapa que deseja-se enviar Especifica a rea onde esto os dados a serem enviados. Se este para metro for omitido, o BMS considera que os dados esto na area de trabalho definida pelo mapa simblico Ser enviado apenas o mapa, nenhum dado varivel ser enviado, smente as constantes sero enviadas I Apenas os dados sero enviados. A opo 'FROM' deve ser especificada Especifica a posio absoluta do CURSOR na tela em relao a zero. Esta opo pode ser utilizada quando desejarmos alterar a posio do CURSOR daquela

MAPONLY DATAONLY CURSOR (VALOR)

definida na tela sendo que 'VALOR' deve ter a PIC S9(04) COMP. Quando no especificado 'VALOR', o CURSOR ser posicionado no primeiro campo da tela que recebeu valor -1 (menos um) ERASE Limpa toda a tela do terminal antes do mapa ser enviado. No aconselhavel usar esta opo juntamente com a opo 'DATAONLY' Limpa todos os campos desprotegidos antes do mapa ser enviado Emite um alarme ao enviar o mapa ( usado somente se no foi especificado 'CTRL=ALARM' no BMS Destrava o terminal para digitao de informaes ( usado somente se no foi especificado 'CTRL= FREEKB' no BMS Restaura o 'MDT'. Todos os campos sero transmitidos ( usado somente se no foi especificado 'CTRL=FRSET' no BMS Envia para a impressora. Usado quando o terminal uma impressora Envia para o terminal. Usado quando o terminal o vdeo ( DEFAULT ) 'ACUMULA' mapas sem enviar ao terminal Os mapas sero guardados em 'TEMPORARY STORAGE' ( TS ). Esta opo usada em conjunto com a opo 'ACCUM' para enviar um conjunto de mapas ao terminal

ERASEAUP ALARM FREEKB

FRSET

PRINT TERMINAL ACCUM PAGING

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 sero 'REMOVIDOS' antes da exibio do mapa MP8601A. Condio de exceo: INVPMSZ: ocorre se for enviado um mapa que nao cabe fsicamente no terminal. este tipo de erro nao detectado quando da compilao do mapa fsico. INVREQ: ocorre se aps termos enviado vrios mapas com as opes 'ACCUM' e

'PAGING', FOR feita uma tentativa de enviar mapa sem estas opes. Como veremos adiante, todo o acmulo de mapas deve ser terminado pelo comando 'SEND PAGE'. OUTROS: TSIOERR, RETPAGE Comando RECEIVE MAP Formato do comando: EXEC CICS RECEIVE MAPSET ('MAPSET') MAP ('MAPA') Explicao do argumento Especifica o nome do MAPSET em que se encontra o mapa a ser recebido. Especifica o nome do mapa que deseja-se receber. Especifica a rea onde o mapa lgico ser recebido. Se este parametro for omitido, o 'BMS' considera que os dados iro para a rea de trabalho definida pelo mapa simblico.

INTO (MP8601AI)

Este comando utilizado para 'receber' dados do ltimo mapa exibido no terminal. Pode ser codificado sem nenhum argumento, porm servir apenas para o tratamento de funes programadas. Exemplo do comando:

EXEC END-EXEC.

CICS RECEIVE MAP ('MP8601A') MAPSET ('XP86851')

Explicao do exemplo: Ser recebido do terminal o mapa MP8601A que pertence ao MAPSET XP86851. Condio de exceo: 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 AUTOPAGE

Explicao do argumento As telas sero enviadas ao terminal logo que este esteja disponvel sem interveno do operador. Usado para impressora. As telas sero enviadas ao terminal, uma de cada vez, em respostas aos comandos de paginao do operador. Normalmente definida no sistema 'TECLAS PROGRAMADAS' (PF's) para a paginao.

NOAUTOPAGE

RELEASE

Transfere o controle para o nvel lgico mais alto (pode ser um programa de aplicao ou o proprio CICS). a opo mais utilizada e poder ser utilizada com a opo 'TRANSID'. Transfere o controle para a transao indicada, logo aps a operao se completar (pode ser codificado junto com a opo 'RELEASE' para fazer com que o terminal coloque-se na modalidade pseudo-conversacional, logo aps a paginao se completar). Indica que aps a paginao ser encerrada o controle ser devolvido ao programa de aplicao e esta opo no muito utilizada pois ela torna o programa conversacional. No pode ser especificada juntamente com a opo 'RELEASE' ou 'TRANSID'.

TRANSID ('TRANSACAO')

RETAIN

Este comando e' utilizado para 'ENVIAR' varios mapas para o terminal, mapas estes 'ACUMULADOS' anteriormente atravs da opo 'ACCUM' do comando 'SEND MAP'. Exemplo do comando:

EXEC

CICS SEND

PAGE NOAUTOPAGE RELEASE TRANSID ('P851')

END-EXEC.

Explicao do exemplo: Ser enviado para o terminal o conjunto de mapas anteriormente 'acumulados' ficando a disposio do usuario para pagin-las e aps o trmino da paginao, o controle ser devolvido a transacao 'P851'. <>br Condio de exceo: - INVREQ: ocorre se tentar emitir o comando sem que tenha sido 'ACUMULADO' pginas atravs das opoes 'ACCUM' E 'PAGING'. - OUTROS: TSIOERR, RETPAGE Comando PURGE MESSAGE Formato do comando: EXEC CICS PURGE MESSAGE No 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 paginao, tendo sido emitido algum comando 'SEND MAP' com a opo 'ACCUM'. Exemplo do comando:

EXEC CICS PURGE MESSAGE END-EXEC.

Explicacao do exemplo: Ser deletado todas as pginas anteriormente 'ACUMULADAS' atravs da opo 'ACCUM' do comando 'SEND MAP'. Condio de exceo: TSIOERR: erro de entrada/saida na memria tempraria. Observaes sobre a transmisso de dados Caso j esteja no vdeo do operador o mapa que ir enviar bastando smente limpar os campos digitados, use a opcao 'ERASEAUP'. neste caso 'NO SERAO TRANSMITIDOS' as constantes e nem os dados dos mapas, obtendo-se assim uma melhor performance da transmisso do mapa. Caso j esteja no vdeo do operador o mapa que ir enviar bastando smente trocar os dados da tela, mantendo o mesmo mapa, use a opo 'DATAONLY'. Neste caso sero transmitidos apenas os dados variveis do mapa. Se no for especificado as opes 'DATAONLY' ou 'MAPONLY' no comando 'SEND MAP', ser assumido as duas. Se no for especificado as opes 'AUTOPAGE' ou 'NOAUTOPAGE' no comando 'SEND PAGE', a paginao obedecer as condies especificadas para o terminal quando da gerao do sistema. Consideraes sobre paginao Por paginao entende-se a aao de acumular uma determinada quantidade de linhas que varia a cada execuco da tarefa. Em cada tela haver um mapa de cabealho que dever ser definido no 'BMS' com as opes 'HEADER=YES' e 'JUSTIFY=FIRST'. Em cada tela haver tambem um mapa de rodap que dever ser definido no 'BMS' com as opes 'TRAILER=YES' e 'JUSTIFY=LAST'. As linhas restantes sero 'FLUTUANTES', ou seja sero 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 mxima de linhas que couber entre o cabealho e o rodap. Caso a quantidade de linhas a serem acumuladas ultrapasse a quantidade mxima permitida para uma tela, no momento em que estiver sendo tentado acumular a linha que ultrapassa a quantidade mxima permitida para a tela, ocorrer a condicao de exceo 'OVERFLOW'. Ao ocorrer a condio de exceo 'OVERFLOW', deve-se terminar a construo da pgina atual e iniciar a construo de nova pgina, ficando construindo pginas at terminar os dados a serem exibidos. Aps a construo da ltima pgina, deve-se emitir o comando 'SEND PAGE' para o trmino da paginao. Apos a emisso do comando 'SEND PAGE', os dados ficaro 'ACUMULADOS' para o operador manusea-los. Para o manuseio dos dados acumulados existem algumas funces programadas que

executam tal tarefa. tais PF's no precisam ser especificadas no programa que acumulou os dados. Procedimentos necessrios para acumular pginas. 1 - Emite-se o comando 'SEND MAP' com a opo 'ERASE' para acumular o cabealho. 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 no ocorrer a condio de exceo 'OVERFLOW' voltar para item 2. 5 - Ocorrendo a condio de exceo 'OVERFLOW', emite-se o comando 'SEND MAP' sem a opo 'ERASE' Para acumular o rodap e tambem emite-se o comando 'SEND MAP' com a opo 'ERASE' para acumular o cabealho para o inicio da construo de uma nova pgina. Em virtude de termos uma linha no acumulada ( a que provocou o OVERFLOW ) volta-se para o item 3. 6 - Quando no existir mais dados a serem acumulados emite-se o comando 'SEND MAP' sem a opo 'ERASE' para acumular o rodap e o comando'SEND PAGE' para indicar o trmino de construo de pginas.

Obs: Todos os comandos 'SEND MAP' devero ser emitidos com as opes '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 funo 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 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 DFHAID. DFHNULL DFHENTER DFHCLEAR DFHCLRP DFHPEN DFHOPID DFHMSRE DFHSTRF DFHTRIG DFHPA1 DFHPA2 DFHPA3 DFHPF1 DFHPF2 DFHPF3 DFHPF4 DFHPF5 DFHPF6 DFHPF7 DFHPF8

PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC

X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001)

VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE

IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS

'.'. QUOTE. '_'. '.'. '='. 'W'. 'X'. 'H'. '''. '%'. '>'. ','. '1'. '2'. '3'. '4'. '5'. '6'. '7'. '8'.

02 DFHPF9 02 DFHPF10 02 DFHPF11 02 DFHPF12 02 DFHPF13 02 DFHPF14 02 DFHPF15 02 DFHPF16 02 DFHPF17 02 DFHPF18 02 DFHPF19 02 DFHPF20 02 DFHPF21 02 DFHPF22 02 DFHPF23 02 DFHPF24 Comando HANDLE AID Formato do comando: EXEC CICS HANDLE AID OPTION (PARAGRAFO)

PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC PIC

X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001) X(001)

VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE

IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS IS

'9'. ':'. '#'. '@'. 'A'. 'B'. 'C'. 'D'. 'E'. 'F'. 'G'. 'H'. 'I'. '-'. '.'. '<'.

Explicao do argumento Especifica-se uma opo (tecla), associando-se a ela um pargrafo que receber o controle do programa caso a tecla seja digitada.

O comando acima utilizado para especificar um pargrafo que receber o controle caso seja digitada a tecla especificada na opo. Existe uma opo especial que engloba todas as PF'S, PA'S E CLEAR, com exceo do ENTER. Caso seja digitado uma tecla que n~ao foi especificada no programa de aplicao, o controle ir para o pargrafo especificado nesta opo. Esta opo o ANYKEY. Uma vez estabelecidas as condies de manipulacao de funes programadas, elas s sero acionadas quando for executado o comando RECEIVE. Exemplo do comando: EXEC CICS HANDLE AID PA1 PA2 ENTER ANYKEY (0100-PA1) (0200-PA2) (0300-ENTER) (0400-ANYKEY)

END-EXEC. Explicacao do exemplo: caso seja digitado a tecla PA1, o controle do programa ser desviado para o pargrafo 0100-PA1, caso seja digitado a tecla PA2, o controle do programa ser desviado para o pargrafo 0200-PA2, caso seja digitado a tecla ENTER, o controle do programa ser desviado para o pargrafo 0300-ENTER e caso seja digitado qualquer outra tecla, o controle do programa ser desviado para o pargrafo 0400-ANYKEY.

CICS - Interrupo de processamento Comando HANDLE ABEND Formato do comando: EXEC CICS HANDLE ABEND PROGRAM ('nome programa') LABEL (paragrafo) CANCEL RESET

Explicao do argumento Especifica-se o nome do programa que receber o controle caso um ABEND venha a ocorrer. Especifica-se o nome de um pargrafo que receber o controle do programa caso acorra um ABEND. Esta opo cancela a tarefa porm no gera DUMP (default) Esta opo 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 pargrafo do programa ou para outro programa. Todas as opces deste comando sao mutuamente exclusivas. Este comando somente ter validade para ABEND'S no previstos em um comando 'HANDLE CONDITION'. Exemplo do comando:

EXEC END-EXEC.

CICS HANDLE ABEND PROGRAM ('ABENDLI')

Explicacao do exemplo: Caso ocorra algum tipo de abend nao previsto no programa de aplicao, o controle ser passado ao programa 'ABENDLI'. Comando ABEND Formato do comando: EXEC CICS ABEND ABCODE (WORKNOME) CANCEL Explicao do argumento Indica que para gerar um DUMP da tarefa e a rea indicada comtm o nome para o 'DUMP' ser identificado. Fora o cancelamento de todos os nveis hierrquicos que esto ligados a tarefa.

O comando acima utilizado para cancelar voluntariamente uma tarefa. Exemplo do comando:

EXEC CICS ABEND END-EXEC.

ABCODE ('XXYY')

Explicacao do exemplo: Caso este comando seja executado, a tarefa ser cancelada e ser gerado um DUMP com a identificacao 'XXYY'.

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 esto contidas todas as informaes referentes as funes de servio (READ, WRITE, REWRITE, DELETE, ETC), previstas para um determinado arquivo e contm tambm todas as informaes descritivas referente ao arquivo, portanto no h a necessidade de definio do arquivo pelo programa de aplicao. O 'FCP' possui as seguintes funes: abrir e fechar arquivos controle exclusivo recuperao de arquivos ler para simples consulta ler para posterior atualizao atualizao deletar registros adicionar registros liberar o controle exclusivo acessar o arquivo sequencialmente

No manuseio de um arquivo pelo programa de aplicao, ocorrendo um erro por estar efetuando algo que o VSAM no suporta, ocorrer a condio de exceo 'ILLOGIC'. Comando READ Formato do comando: EXEC CICS READ DATASET ('nome arquivo') INTO (WORK-AREA) RIDFLD (WORKCHAVE) LENGTH (+100) UPDATE GENERIC Explicao do argumento Especifica-se o nome do arquivo a acessar. Especifica-se a rea onde dever ser colocadoo registro lido. Especifica-se a chave do registro a ser lido. Especifica-se o tamanho do registro a ser lido. opcional se for registro fixo. Informa que o registro a ser lido sofrer posterior atualizao. Indica que a chave informada parcial, ou seja, no est

sendo informada toda a chave. KEYLENGTH (+10) Especifica-se o tamanho da chave genrica. Este argumento usado em conjunto com a opo 'GENERIC' e s pode ser usada para arquivos KSDS. O CICS tentar ler um registro com chave maior ou igual a chave informada. O CICS tentar ler um registro com chave igual a chave informada ( DEFAULT ). 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.

GTEQ EQUAL

RBA

Este comando utilizado para uma leitura randmica em um arquivo Exemplo do comando: EXEC CICS READ DATASET INTO RIDFLD LENGTH ('D02TAB') (WORK-TAB) (WORK-CHAVE) (+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. Condio de exceo: DSIDERR: o arquivo informado no consta na 'FCT'. NOTOPEN: o arquivo informado est fechado. NOTFND: o registro requisitado no existe. DUPKEY: o arquivo informado um ndice alternado e existe mais de um registro com a mesma chave alternada INVREQ: no existe, na 'FCT', previso para a utilizao deste recurso OUTROS: ILLOGIC, IOERR, LENGERR.

Comando WRITE Formato do comando: EXEC CICS WRITE DATASET ('NOME ARQUIVO') FROM (WORK-AREA) RIDFLD (WORKCHAVE) Explicao do argumento Especifica-se o nome do arquivo que se deseja acessar. Especifica-se a rea onde se encontra o registro a ser gravado. Especifica-se a chave do registro a ser gravado. Deve ser igual a chave da rea de dados indicada na opo

'FROM'. LENGTH (+100) Especifica-se o tamanho do registro a ser gravado. Opcional se for registro fixo. Para arquivos ESDS, indica que a rea especificada em 'RIDFLD' contem um RBA e no a chave do registro. Neste caso, a rea especificada em 'RIDFLD' deve estar definida PIC S9(008) COMP. Insero em massa de registros. As chaves devem ser ascendentes. Esta operao deve ser terminada por um 'UNLOCK' para um posterior acesso ao arquivo.

RBA

MASSINSERT

Este comando utilizado para fazer adio de registros em um arquivo A opo 'MASSINSERT' permite a incluso sequencial de registros no VSAM, sendo que a partir da incluso do primeiro registro, o CICS determinar o controle exclusivo para o programa, que dever ser liberado quando no houver mais registros a incluir, atravs do comando 'UNLOCK' Exemplo do comando: EXEC CICS WRITE DATASET FROM RIDFLD LENGTH ('D02TAB') (WORK-TAB) (WORK-CHAVE) (+130)

END-EXEC.

Explicacao do exemplo: O CICS tentar incluir um registro no arquivo 'D02TAB' com chave igual ao contedo de 'WORK-CHAVE', O registro ser retirado de 'WORK-TAB' e seu tamanho de 130 bytes. Condio de exceo: DUPREC: o registro informado j existe no arquivo NOSPACE: no existe mais espao no arquivo para a adio de registros. INVREQ: o no existe, na 'FCT', previso para a utilizao deste recurso o o arquivo est definido na 'FCT' como ESDS e o o comando no possui a opo RBA o o arquivo est definido na 'FCT' como KSDS e o o comando possui a opo RBA Outros: DSIDERR, ILLOGIC, IOERR, LENGERR, NOTOPEN.

Comando REWRITE Formato do comando: EXEC CICS REWRITE DATASET ('NOME ARQUIVO') FROM (WORK-AREA) Explicao do argumento Especifica-se o nome do arquivo que se deseja acessar. 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 atravs do comando 'READ' com a opo 'UPDATE'. Aps a leitura, seu campo chave no poder ser alterado. Exemplo do comando: EXEC CICS REWRITE DATASET FROM RIDFLD LENGTH ('D02TAB') (WORK-TAB) (WORK-CHAVE) (+130)

END-EXEC.

Explicao do exemplo: O CICS tentar regravar um registro no arquivo 'D02TAB' com chave igual ao contedo de 'WORK-CHAVE', o registro ser' retirado de 'WORK-TAB' e seu tamanho de 130 bytes. Condio de exceo: INVREQ: o No existe, na 'FCT', previso para a utilizao deste recurso. o O registro a ser regravado no foi recuperado atravs do comando 'READ' com a opo 'UPDATE'. o A chave do registro a ser regravado foi alterada pelo programa de aplicao. Outros: DSIDERR, ILLOGIC, IOERR, LENGERR, NOTOPEN, NOSPACE.

Comando DELETE Formato do comando: EXEC CICS DELETE DATASET ('NOME ARQUIVO') RIDFLD (WORKCHAVE) GENERIC Explicao do argumento Especifica-se o nome do arquivo que se deseja acessar. Especifica-se a chave do registro a ser deletado. Obrigatrio quando usado a opo 'GENERIC' Indica que a chave informada parcial, ou seja, nao est sendo informada a chave completa. todos os registros que possuam esta chave parcial serao deletados. Especifica-se o tamanho da chave genrica. este argumento usado em conjunto com a opo 'GENERIC' e smente pode ser usada para arquivos KSDS. 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

KEYLENGTH (+10)

NUMREC (WORK-QTD)

S9(004) COMP. 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.

RBA

Este comando utilizado para deletar um registro ou, se especificada uma chave genrica, um grupo de registros. Caso um registro tenha sido lido com a opo 'UPDATE', este comando pode ser utilizado para deleta-lo. Neste caso as opces 'RIDFLD', 'KEYLENGTH', 'GENERIC' e 'NUMREC' no podem ser utilizadas. A opo 'GENERIC' no pode ser utilizada para arquivo com a opo 'LOG=YES' na 'FCT'. Exemplo do comando: EXEC CICS DELETE DATASET ('D02TAB') RIDFLD (WORK-CHAVE) KEYLENGTH (+10) GENERIC NUMREC (WORK-QTD)

END-EXEC.

Explicao do exemplo: O CICS tentar deletar todos os registros que possuam em seu campo chave as 10 primeiras posies iguais as 10 primeiras posies do campo 'WORK-CHAVE'. Aps efetuada a deleo, o CICS colocar em 'WORK-QTD' o nmero de registros que o VSAM deletou. CONDICAO DE EXCECAO: NOTFND: O registro indicado no existe no arquivo. Tal condio de exceo s acontecer se o registro nao foi lido com a opo 'UPDATE'. Outros: DSIDERR, ILLOGIC, INVREQ, IOERR, NOTOPEN.

Comando UNLOCK Formato do comando: EXEC CICS UNLOCK DATASET ('NOME ARQUIVO') Explicao do argumento Especifica-se o nome do arquivo que se deseja acessar.

Este comando utilizado para liberar o controle exclusivo obtido atravs do comando READ com opo 'UPDATE' ou atravs de uma operao de insero em massa de registros (MASSINSERT). utilizado quando um registro foi lido para ser atualizado, porem determinou-se que a atualizao nao ir ocorrer. O controle exclusivo feito em todo o 'CONTROL INTERVAL' a que pertence o registro.

Exemplo do comando: EXEC CICS END-EXEC. UNLOCK DATASET ('D02TAB')

Explicao do exemplo: O CICS liberar o controle exclusivo sobre os registros recuperados atravs do comando 'READ' com a opo 'UPDATE' no arquivo 'D02TAB'. Condio de exceo: NOTOPEN: O arquivo informado est fechado. 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 DATASET ('NOME ARQUIVO') RIDFLD (WORKCHAVE) GENERIC Explicao do argumento Especifica-se o nome do arquivo que se deseja acessar. Especifica-se a chave do registro a ser posicionado. Indica que a chave informada parcial, ou seja, no est sendo informada a chave toda. Especifica-se o tamanho da chave genrica. Este arqgumento usado em conjunto com a opo 'GRENERIC' e s pode ser usada para arquivos KSDS. O CICS tentar posicionar em registro com chave maior ou igual a chave informada. O CICS tentar posicionar em um registro com chave igual a chave informada (DEFAULT) Para arquivos ESDS, indica que a rea especificada em 'RIDFLD' contm um RBA e no a chave do registro. Neste caso, a rea especificada em 'RIDFLD' deve estar definida PIC S9(008) COMP.

KEYLENGTH (+10)

GTEQ EQUAL

RBA

Este comando utilizado para especificar o registro em um arquivo, no qual a pesquisa sequencial ter incio. Observar que nenhum registro recuperado, apenas o 'POINTER' posicionado no registro indicado no comando. Exemplo do comando:

EXEC END-EXEC.

CICS

STARTBR

DATASET ('D02TAB') RIDFLD (WORK-CHAVE) GTEQ

Explicao do exemplo: O 'POINTER' do arquivo ser posicionado no registro que possua o campo chave maior ou igual ao campo 'WORK-CHAVE'. Condio de exceo: NOTFND: o registro informado no existe no arquivo. Outros: DSIDERR, NOTOPEN, INVREQ, ILLOGIC, IOERR. Comando READNEXT Formato do comando: EXEC CICS READNEXT DATASET ('NOME ARQUIVO') INTO (WORK-AREA) RIDFLD (WORKCHAVE) Explicao do argumento Especifica-se o nome do arquivo que se deseja acessar. Especifica-se a rea que receber o registro. Especifica-se a chave do registro a ser posicionado. Deve ser o mesmo campo especificado no comando inicial STARTBR. 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. Especifica-se o tamanho do registro a ser lido. Opcional se for registro fixo.

KEYLENGTH (+10)

LENGTH (+100)

Este comando utilizado para leitura do prximo registro do arquivo em ordem sequencial. Exemplo do comando:> EXEC END-EXEC. CICS READNEXT DATASET ('D02TAB') INTO (WORK-TAB) RIDFLD (WORK-CHAVE)

Explicao do exemplo: O cics ir recuperar o prximo registro do arquivo que possua o campo chave igual ao campo 'WORK-CHAVE' e o registro recuperado ser colocado na rea 'WORK-TAB'. Condioo de exceo: ENDFILE: ocorre quando for encontrado final de arquivo.

Outros: DSIDERR, NOTOPEN, INVREQ, ILLOGIC, IOERR, LENGERR, DUPKEY. Comando READPREV Formato do comando: EXEC CICS READNEXT DATASET ('NOME ARQUIVO') INTO (WORK-AREA) RIDFLD (WORKCHAVE) Explicao do argumento Especifica-se o nome do arquivo que se deseja acessar. Especifica-se a rea que receber o registro. Especifica-se a chave do registro a ser posicionado. Deve ser o mesmo campo especificado no comando inicial STARTBR. Especifica-se o tamanho total da chave, pois no possivel usar a opo 'GENERIC' para este comando. Opcional. Especifica-se o tamanho do registro a ser lido. Opcional se for registro fixo.

KEYLENGTH (+10)

LENGTH (+100)

Este comando utilizado para leitura do registro anterior do arquivo em ordem sequencial. Usado apenas em arquivos VSAM. Exemplo do comando: EXEC END-EXEC. CICS READPREV DATASET ('D02TAB') INTO (WORK-TAB) RIDFLD (WORK-CHAVE)

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'. Condio de exceo: 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 DATASET ('NOME ARQUIVO') RIDFLD (WORKCHAVE) Explicao do argumento Especifica-se o nome do arquivo que se deseja acessar. Especifica-se a chave do registro a ser reposicionado.

GENERIC

Indica que a chave informada parcial, ou seja, nao est sendo informada a chave completa. Especifica-se o tamanho da chave genrica. Este argumento usado em conjunto com a opo 'GENERIC' e smente pode ser usada para arquivos KSDS. O CICS tentar posicionar em registro com chave maior ou igual a chave informada. O CICS tentar posicionar em um registro com chave igual a chave informada ( DEFAULT ). Para arquivos ESDS, indica que a rea especificada em 'RIDFLD' contm um RBA e no a chave do registro. Neste caso, a rea especificada em 'RIDFLD' deve estar definida PIC S9(008) COMP

KEYLENGTH (+10)

GTEQ EQUAL

RBA

Este comando utilizado para reposicionamento de um registro no arquivo para 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 opo 'RIDFLD' deve especificar a mesma rea de dados especificada na opo 'RIDFLD' do comando 'STARTBR' correspondente, porm o contedo desta rea pode ser diferente. Exemplo do comando: EXEC END-EXEC. CICS RESETBR DATASET ('D02TAB') RIDFLD (WORK-CHAVE)

Explicao 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. Condio de exceo: NOTFND: o registro informado no existe no arquivo. Outros: DSIDERR, NOTOPEN, INVREQ, ILLOGIC, IOERR. Comando ENDBR Formato do comando: EXEC CICS ENDBR DATASET ('NOME ARQUIVO') Explicao do argumento 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 no ocorrer, o BROWSE no terminar, ficar suspenso. Exemplo do comando: EXEC CICS END-EXEC. ENDBR DATASET ('D02TAB')

Explicao do exemplo: O CICS terminar o BROWSE no arquivo 'D02TAB'. Condio de exceo: 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 Se a condio de exceo 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 - Memria temporria ( T S ) usada para o armazenamento de dados intermedirios do CICS. gerada e acessada apenas pelo CICS. Pode ser acessada por varias tarefas. Fica armazenado em memria principal ou em memria auxiliar ( DISCO ), at que seja deletada ou o CICS pare de funcionar. No necessrio constar em nenhuma tabela. Cada registro a ser gravado deve possuir um nome. O nome pode variar em extenso de 1 a 8 caracteres. Deve-se tomar o cuidado de atribuir uma identificao 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 especfico poder ser acessado. Comando WRITEQ TS Formato do comando: EXEC CICS WRITEQ TS QUEUE NOME') FROM AREA) ('WORKExplicao do argumento 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. Especifica-se a rea onde se encontra o registro a ser gravado Especifica-se o tamanho da rea de dados a ser gravada.

(WORK-

LENGTH (+100)

ITEM

(WORK-POSI)

Se estiver sendo includo registros, o CICS coloca neste campo o nmero do registro gravado. Se estiver sendo feito atualizao, deve-se informar o nmero do registro a ser alterado atravs deste campo. O formato deste campo PIC S9(004) COMP. Especifica-se que o regstro cujo nmero est sendo informado na opo 'ITEM' para ser atualizado. Indica que o registro para ser armazenado na memria principal. salvo em raras ocasies e para pequenas quantidades de registros, esta opo no deve ser utilizada Indica que o registro para ser armazenado na memria auxiliar. Esta opo o default.

REWRITE

MAIN

AUXILIARY

Este comando utilizado para gravar registros em memria temporria ( TEMPORARY STORAGE - TS ) Exemplo do comando:

EXEC END-EXEC.

CICS

WRITEQ

TS

QUEUE ('WORK-NOME') FROM (WORK-AREA) LENGTH (+100)

Explicao do exemplo: O CICS gravar o registro em memoria temporaria ( TS ) com o nome especificado em 'WORK-NOME', os dados que esto em 'WORK-AREA' com o tamanho de 100 bytes. Condio de exceo: NOSPACE: ocorre se nao houver mais espao em memria para a gravao do registro. A ao padro do CICS suspender a tarefa at existir espao. Caso nao queira que tal fato ocorra, deve ser codificado um 'HANDLE CONDITION' para tal exceo. ITEMERR: ocorre se o nmero especificado em item for diferente dos nmeros de registros existentes na fila 'TS', caso use-se a opo 'REWRITE'. QIDERR: no existe nenhuma fila 'TS' com o nome especificado na memria temporria. 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 QUEUE NOME') ('WORKExplicao do argumento 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. Especifica-se o tamanho do registro a ser lido. Especifica-se o numero do registro a ser lido. Esta opo deve ser usada se for necessrio acessar o registro diretamente. O formato deste campo PIC S9(004) COMP. Especifica que o prximo registro da fila dever ser acessado. Esta opo deve ser usada se for necessrio acessar o registro sequencialmente. Esta opo o DEFAULT.

LENGTH (+100)

ITEM (WORK-POSI)

NEXT

Este comando utilizado para ler registros em memria temporria ( TEMPORARY STORAGE - TS ) Exemplo do comando:

EXEC END-EXEC.

CICS

READQ

TS

QUEUE ('WORK-NOME') INTO (WORK-AREA) LENGTH (+100)

Explicao do exemplo: O CICS ler o prximo registro em memria temporria ( TS ) com o nome especificado em 'WORK-NOME'. OS dados ficaro em 'WORK-AREA' com o tamanho de 100 bytes. Condio de exceo: ITEMERR: ocorre se o nmero 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 QUEUE NOME') ('WORK-

Explicao do argumento 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 memria temporria ( TEMPORARY STORAGE - TS ) Exemplo do comando:

EXEC END-EXEC.

CICS

DELETEQ

TS

QUEUE

('WORK-NOME')

Explicao do exemplo: O CICS deletar a fila de dados em memria temporria ( TS ), ou seja, deletar todos os registros pertencentes fila especificada. Deve-se sempre lembrar que o espao ocupado pelos dados na memria temporria no automaticamente liberado apos os dados serem usados. Consequentemente, quando no necessitar mais dos dados na memria temporria, deve-se liberar o espao ocupado emitindo o comando acima. Condio de exceo: QIDERR: ocorre se no existir nenhuma fila de TS com o nome especificado na opo 'QUEUE'.

CICS - Dados transitrios ( T D ) usada para o armazenamento de dados transitrios do CICS. Os dados so disponveis para processamento 'SEQUENCIAL' para qualquer tarefa que desejar acessar. Cada registro a ser gravado deve possuir um nome. O nome pode variar em extenso de 1 a 4 caracteres. Deve-se tomar o cuidado de atribuir uma identificao 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 'EXTRAPARTITION'. 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 aplicaao para ser deletado logo aps a leitura so 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 QUEUE ('WORKNOME') FROM (WORK-AREA) LENGTH (+100) Explicao do argumento 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. Especifica-se a area onde se encontra o registro a ser gravado. Especifica-se o tamanho da rea de dados a ser gravada.

Este comando utilizado para gravar registros de dados transitrios ( TRANSIENT DATA - TD ) A opo 'LENGTH' somente precisa ser especificada caso os registros sejam gravados em outro dispositivo que no seja disco. Exemplo do comando: EXEC END-EXEC. CICS WRITEQ TD QUEUE ('WORK-NOME') FROM (WORK-AREA) LENGTH (+100)

Explicao do exemplo: O CICS gravar o registro como dados transitrios (TD) com o nome especificado em 'WORK-NOME', os dados que esto em 'WORK-AREA' com o tamanho de 100 bytes. Condio de exceo: NOSPACE: ocorre se no houver mais espao na fila de TD para a gravao do registro. Esta condio s ocorre quando se processam destinos de intrapartio. NOTOPEN: ocorre se o destino estiver fechado. Esta condio s ocorre quando se processam destinos de extrapartio. Estes destinos podem ser abertos e fechados pelo administrador do CICS. QIDERR: no existe nenhuma fila 'TD', definido na 'DCT' com o nome especificado na opo 'QUEUE'. LENGERR: o tamanho do registro lido maior do que o tamanho mximo da fila definido na 'DCT'. Ocorre tambm se for especificado um tamanho errado para registros de tamanho fixo. Ocorre tambm se no for codificada a opo 'LENGTH' e a fila de destino no for disco. Outros: ioerr.

Comando READQ TD Formato do comando: EXEC CICS READQ TD QUEUE ('WORKNOME') Explicao do argumento 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) LENGTH (+100) Especifica-se a rea onde dever ser colocado o registro lido. Especifica-se o tamanho do registro a ser lido. No pode ser maior que o tamanho especificado na 'DCT'.

Este comando utilizado para ler registros de dados transitrios ( TRANSIENT DATA TD ) Exemplo do comando:

EXEC END-EXEC.

CICS

READQ

TD

QUEUE ('WORK-NOME') INTO (WORK-AREA) LENGTH (+100)

Explicao 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 tambm se for especificado um tamanho errado para registros de tamanho fixo. Ocorre tambm se nao for codificada a opcao 'LENGTH' e a fila de destino nao for disco. Ocorre tambm se nao for codificada a opcao 'LENGTH' e o registro for de tamanho varivel. O tamanho do registro lido maior do que o tamanho especificado na opo 'LENGTH'. Neste caso, a area indicada na opo ser atualizado com o valor real do tamanho do registro. NOTOPEN: ocorre se o destino estiver fechado. QIDERR: no existe nenhuma fila 'TD', definido na'DCT' com o nome especificado na opo 'QUEUE' QZERO: no existe nenhum registro armazenado na fila de dados transitrios ( td ) Outros: INVREQ, IOERR, LENGERR, QIDERR.

Comando DELETEQ TD Formato do comando: EXEC CICS DELETEQ TD QUEUE ('WORKNOME')

Explicao do argumento 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 transitrios ( TRANSIENT DATA - TD ) Este comando ser utilizado se a rea em que foi gravado o registro de dado transitrio for no-reutilizavel.

Exemplo do comando: EXEC CICS DELETEQ TD QUEUE ('WORK-NOME') END-EXEC.

Explicao do exemplo: O CICS deletar a fila de dados transitrios ( TD ), ou seja, deletar todos os registros pertencentes a fila especificada. Condiao de exceo: 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 Queue ('NAME') Dispositivo Nmero de vezes que o dado pode ser lido Inicia nova tarefa Comandos (DEFAULT TS) Processamento Acesso Atualizao Exemplo de utilizao INTRA TD 4 bytes Disco Apenas uma vez 8 bytes Memria ou disco Quantas vezes for necessaria No WRITEQ TS READQ TS DELETEQ TS Somente no 'CICS" Direto ou sequencial Sim Auxilia o Desenvolvedor na confeco de programas TS

Sim WRITEQ TD READQ TD DELETEQ TD Em 'BATCH' e Em 'CICS' Sequencial No Estatsticas, fazer interface com o 'BATCH"

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 necessrio 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 aps cada execucao de comando DL/I. Aps cada comando de acesso DL/I deve-se checar o status retornado atravs do campo 'DIBSTAT'. Os codigos retornados no 'DIBSTAT' so os cdigos padres do DL/I. Comando SCHEDULE Formato do comando: EXEC DLI SCHEDULE PSB ('NOME PSB') Explicao do argumento Especifica-se o nome do PSB que deseja-se tornar disponvel 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 END-EXEC.

SCHEDULE

PSB

('PS06001')

Explicao do exemplo: O CICS, atravs do DL/I tornar disponvel o PSB especificado para o acesso do programa. Condicao de excecao: As condies de exceo deste comando so tratadas pelo programa 'ABENDLI'. portanto deve-se codificar o comando 'HANDLE ABEND' especificando o programa 'ABENDLI'. Comando TERMINATE Formato do comando: EXEC DLI TERMINATE No possui argumentos

Este comando utilizado para terminar o acesso ao DL/I pelo programa em CICS. Este comando ser utilizado sempre que no mais houver necessidade de acesso ao banco de dados. Exemplo do comando:

EXEC DLI END-EXEC.

TERMINATE

Explicao do exemplo: O CICS, atravs do DL/I terminar o acesso ao banco de dados atraves do PSB 'SCHEDULADO' anteriormente. Condio de exceo: As condies de exceo deste comando so tratadas pelo programa 'ABENDLI'. Portanto deve-se codificar o comando 'HANDLE ABEND' especificando o programa 'ABENDLI'. Comando SYNCPOINT Formato do comando: EXEC CICS SYNCPOINT ROLLBACK

Explicao do argumento Especifica-se que as alteraes efetuadas devem ser ignoradas.

Este comando utilizado para ignorar as atualizaes efetuadas no banco de dados durante a execuo da tarefa. Este comando ser utilizado sempre que ocorrer algum problema na atualizao do banco de dados. A execuo do comando sem a opo 'ROLLBACK' efetiva as atualizaes at ento efetuadas pela tarefa. Exemplo do comando:

EXEC CICS END-EXEC.

SYNCPOINT

ROLLBACK

Explicao do exemplo: O CICS ir ignorar todas as atualizaes efetuadas no banco de dados pelo programa de aplicao. aps a execuo deste comando, o banco de dados ficar com os dados inalterados. Condio de exceo: As condies de exceo deste comando so tratadas pelo programa 'ABENDLI'. Portanto deve-se codificar o comando 'HANDLE ABEND' especificando o programa 'ABENDLI'. Comandos de acesso e atualizao 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 opo '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 = WORK-CARGO-DB08) FIELDLENGTH (7) INTO (SG0801) SEGLENGTH (+100)

END-EXEC.

Explicao do exemplo: O CICS, atraves do DL/I, recuperar o SG0801 que satisfaa a condio especificada no parametro 'WHERE'. O tamanho do campo chave do segmento 7 bytes e o tamanho do segmento 100 bytes. Os dados do segmento aps o acesso sero 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.

Explicao do exemplo: O CICS, atravs do DL/I, recuperar o prximo SG0602 que esteja subordinado a um pai especifico estabelecido atravs de um 'GU' ou 'GN'. O tamanho do segmento 162 bytes. Os dados do segmento aps o acesso sero colocados na rea de dados SG0602. Foi utilizado o quinto PCB do PSB especificado na tabela "DLZACT" para acesso deste programa. Observao: Lembrar que apos cada comando de acesso ao banco de dados deve ser checado o campo 'DIBSTAT' tomando as providncias necessrias para cada caso.

CICS - Cdigos EIBRESP Esta pgina contm os cdigos 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: Cdigos: C C C C C C Condi Condi Condi Condi Condi Condi dig dig dig dig dig dig o o o o o o o o o o o o 00 NORMA L 01 ERROR 07 INBFMH 02 RDATT 08 ENDINP T 03 WRBRK 09 NONVA L 04 EOF 10 NOSTA RT INVRE Q LENGE RR 05 EODS 11 TERMI DERR CICS Application Programming Reference (Pesquisar books)

06 EOC 12 18

FILENO 13 NOTFND TFOUND NOSPAC NOTOPE 19 E N 25 QBUSY 32 38 RETPAG E INVMPS Z

14 DUPREC 15 DUPKEY 16 20 26 ENDFIL E ITEMER R 21 27 ILLOGI C 22

17 IOERR 23 QZERO

24 SIGNAL 31 37 EXPIRE D INVERR TERM

PGMIDE TRANSI ENDDA 28 29 RR DERR TA RTESO ME 35 TSIOER MAPFAI 36 R L

33 RTEFAIL 34 39 45 51 58 64 80 IGREQI D 40

OVERFL 41 INVLDC 42 NOSTG OW 48 55 61 69 FUNCE RR ENQBU SY NOTAL LOC USERI DERR

43 JIDERR 49 56 62 70 UNEXPI N ENVDEF ERR CBIDER R

44 QIDERR 50 57 63 NOPASS BKRD IGREQC D INVEXIT REQ

NOJBUF SELNE 46 DSSTAT 47 SP RR NOPASS SYSIDE 53 BKWR RR SESSIO NERR INVPAR TNSET NOSPO OL 59 65 81 54 ISCINV REQ

SYSBUS SESSB 60 Y USY INVPAR TN 66 PARTN FAIL

NOTAUT SUPPRE 72 H SSED 85 ALLOCE

TERMER ROLLE 82 R DBACK

83 END 89 SPOLE

84 DISABL

86 STRELE

87 OPENER 88 SPOLB

ED 90 96

RR

RR

R DSNNO 93 TFOUN D 99 NETNA MERR 94

USY LOADI NG 95

RR MODEL IDERR

NODEID TASKIDE TCIDER 91 92 ERR RR R OUTDES PARTNE 97 CRERR RIDERR 98 PROFIL EIDERR

10 LOCKE 0 D PROCE 10 SSBUS 6 Y

10 RECOR 1 DBUSY ACTIVI 10 TYBUS 7 Y NOTFI 11 NISHE 3 D 12 CHANN 2 ELERR

UOWLN 10 UOWNO 10 OTFOUN 2 TFOUND 3 D 10 PROCES 10 ACTIVIT 8 SERR 9 YERR

10 LINKAB 4 END

10 CHANG 5 ED

11 CONTAI 11 EVENTE 11 TOKEN 0 NERERR 1 RR 2 ERR

11 POOLER 11 TIMERER 11 SYMBOL 11 TEMPLA 12 RESUN 4 R 5 R 6 ERR 7 TERR 1 AVAIL 12 CCSIDE 3 RR