52
Manual de CICS Pag. 1 / 52 CICS

Cobol Cics

Embed Size (px)

DESCRIPTION

Cobol/ Cics.

Citation preview

  • Manual de CICS Pag. 1 / 52

    CICS

  • Manual de CICS Pag. 2 / 52

    GENERALIDADES.

    A sigla CICS significa Customer Information Control System, o Sistema de

    Controlo da Informao de Clientes.

    CICS um sistema que proporciona um ambiente de execuo para programas on-

    line, ou seja, orientados para o dilogo com o utilizador e proporciona um

    suporte para o intercmbio de informao com o terminal do utilizador.

    O ambiente de nica execuo, de modo que para o desenvolvimento h que

    empregar as ferramentas e ambientes usuais.

    O sistema multi-utilizador, no s como tal, mas tambm permite que diferentes

    utilizadores possam trabalhar com o mesmo programa, uma vez conectados com o

    CICS.

    Os utilizadores no usam o JCL para lanar a execuo de programas: emitem

    peties com o CICS e este encarrega-se do resto.

    Em alguns casos o utilizador dever identificar-se mediante um username e uma

    password, antes de poder pedir a execuo de um programa.

    A estrutura do sistema consiste numa srie de mdulos de servio que rodeiam uma

    rea de memria CICS, na qual se executam os programas do utilizador.

    Os mdulos fundamentais do CICS so:

    TCP

    Terminal Control Program o Controlador de Terminais.

    Encarrega-se da protocolizao das peties de execuo, construindo uma pilha

    com elas.

    Este mdulo o que limita em ltima instncia o nmero de conexes possveis

    com o CICS, j que controla um nmero finito de terminais.

    KCP

  • Manual de CICS Pag. 3 / 52

    Task Control Program o Controlador de Tarefas.

    Encarrega-se da validao de acessos, da recuperao das peties de execuo,

    da multiprogramao e divide as ordens de carga de programas.

    Controla mediante uma tabela os cdigos de transaco que identificam programas

    a executar por petio externa que, normalmente no so todos os programas

    instalados.

    FCP

    File Control Program o Controlador de Ficheiros.

    Encarrega-se da validao dos acessos a ficheiros e do intercmbio de dados com

    estes.

    Controla mediante uma tabela os nomes simblicos do ficheiro.

    PCP

    Program Control Program o Controlador de Programas.

    Executa a carga de um programa na memria do CICS.

    Controla mediante uma tabela os nomes de todos os programas que se podem

    executar no ambiente CICS.

    BMS

    Basic Mapping Support o Suporte do Formato do cran.

    Encarrega-se dos intercmbios de informao com os crans, em conjuno com o

    TCP.

    O programa do utilizador utiliza os mdulos de servio para executar os

    processos de intercmbio da informao.

    Na fase de arranque, o CICS pe em linha todos os recursos da informao de que

    dispe:

    Programas

    Ficheiros

    Terminais

    Impressoras

    de forma que o programa do utilizador no abra nunca um recurso; limita-se a

    utiliz-los.

    PROGRAMAS EXECUTADOS DEPOIS DO CICS.

    Generalidades

    O programa estar orientado para o dilogo com o utilizador e a sua lgica de

    execuo ser influenciada pelo desenvolvimento do dito dilogo, de tal forma

    que o programa quase nunca ser executado inteiro, como no caso dos programas

    BATCH, mas, normalmente, cada passo do dilogo implicar s umas quantas

    instrues.

    O grupo de instrues que se executa num passo de dilogo denomina-se TAREFA, e

    a actuao do utilizador que a desencadeia uma TRANSACO.

  • Manual de CICS Pag. 4 / 52

    Assim, se um programa pede num determinado momento:

    Introduzir cdigo da operao (A/M/B):

    a resposta do utilizador (TRANSACO), desencadear uma TAREFA que consiste em:

    Validar o cdigo e Bifurcar ao mdulo de petio dos dados ou de erro

    A execuo de um programa no se faz mediante a submisso de um JCL, como no

    caso dos programas BATCH; o CICS tem uma tabela em que se recolhem os nomes de

    todos os programas que se podem executar, juntamente com os cdigos

    identificativos de quatro caracteres denominados cdigos de transaco.

    A primeira transaco que um utilizador deve executar a identificao do

    programa que deseja lanar digitando o seu cdigo de transaco.

    A manuteno da tabela a que se faz referncia, por conta do Departamento de

    Sistemas, de modo que um novo desenvolvimento exige acordar o cdigo da

    transaco e o nome para o novo programa com o responsvel da Manuteno do

    CICS.

    PECULIARIDADES DA PROGRAMAO:

    Comandos

    O programa s poder aceder a recursos de informao atravs dos mdulos de

    servio do CICS e s poder manejar os recursos descritos aos ditos mdulos.

    A comunicao com os ditos mdulos resultou mediante um conjunto de instrues

    agrupadas num suporte denominado High Level Programming Interface o HLPI.

    O HLPI contm os chamados comandos CICS, que so sentenas no COBOL dirigidas

    especificamente aos mdulos de servio e que tm a seguinte estrutura:

    EXEC CICS

    comando

    END-EXEC

    O ponto no necessrio para terminar um comando; s se codificar se a lgica

    COBOL o requerer.

    Terminao da execuo

    Dado que o programa se executa dentro do CICS, este quem supervisa a execuo;

    o programa, pode portanto, considerar-se como subrotina do CICS.

    Isto significa que, se ao CICS a quem se pede a execuo de um programa,

    tambm ao CICS a quem se informa de que a execuo terminou.

    Por outras palavras, a finalizao da execuo de um programa faz-se devolvendo

    o controlo ao CICS.

    Um programa CICS no termina nunca com STOP RUN, desenvolve-se o controlo ao

    CICS com o comando;

    EXEC CICS

    RETURN

    END-EXEC

    que, sendo igual ao STOP RUN dos programas BATCH, pode aparecer tantas vezes

    como se requeira ao longo do programa.

    Acesso a ficheiros

  • Manual de CICS Pag. 5 / 52

    Desde o momento em que o CICS, na fase de arranque, quem pe em linha todos os

    recursos, na codificao dos programas ser omitida toda a referncia

    descrio, abertura e fecho de ficheiros.

    No existiro, portanto especificaes como:

    INPUT-OUTPUT SECTION

    SELECT

    FILE SECTION

    FILE-CONTROL

    FD

    OPEN

    CLOSE

    Igualmente como os programas, o CICS tem uma tabela em que, para cada ficheiro,

    esto descritos a sua estrutura fsica, os tipos de acesso (leitura, escrita)

    vlidos e um nome simblico que se usar no acesso.

    O acesso ser feito mediante um comando:

    EXEC CICS

    comando_de_acesso_a_ficheiro_por_nome_simblico

    END-EXEC

    e no se empregaro as instrues usuais READ, WRITE,.....

    Se, no curso de um desenvolvimento, houver que usar ficheiros novos, no basta

    s cri-los e carreg-los com dados; h que recorrer mesma mecnica que no

    caso dos programas para que sejam dados de alta nas tabelas do CICS.

    Intercmbios de informao com o cran

    O cran tambm um recurso manejado pelo CICS.

    As instrues usuais ACCEPT, DISPLAY no so vlidas e os intercmbios fazem-se

    atravs de um mdulo de servio mediante um comando:

    EXEC CICS

    comando_de_intercambio_com_ecran

    END-EXEC

    Dilogo CICS - programa

    Dado que os comandos CICS se dirigem directamente a mdulos de servio do

    ambiente, a anlise do resultado da execuo de um comando no se pode fazer

    pelos mtodos usuais, mas atravs de uma rea de comunicaes, subministrada

    pelo prprio CICS, chamada Execution Interface Block ( EIB ), e por uma srie de

    cdigos de retorno que se denominam condies excepcionais. A ambos pode aceder-

    se ao programa, quer directamente, quer atravs de comandos CICS especiais.

    Execution Interface Block ( EIB )

    000100 DFHEIBLK REALCICS

    000900* EIBTIME TIME IN 0HHMMSS FORMAT

    001000* EIBDATE DATE IN 00YYDDD FORMAT

    001100* EIBTRNID TRANSACTION IDENTIFIER

  • Manual de CICS Pag. 6 / 52

    001200* EIBTASKN TASK NUMBER

    001300* EIBTRMID TERMINAL IDENTIFIER

    001400* DFHRSVD1 RESERVED

    001500* EIBCPOSN CURSOR POSITION

    001600* EIBCALEN COMMAREA LENGTH

    001700* EIBAID ATTENTION IDENTIFIER

    001800* EIBFN FUNCTION CODE

    001900* EIBRCODE RESPONSE CODE

    002000* EIBDS DATASET NAME

    002100* EIBREQID REQUEST IDENTIFIER

    002200* EIBRSRCE RESOURCE NAME

    002300* EIBSYNC SYNCPOINT REQUIRED

    002400* EIBFREE TERMINAL FREE REQUIRED

    002500* EIBRECV DATA RECEIVE REQUIRED

    002600* EIBSEND RESERVED

    002700* EIBATT ATTACH DATA EXISTS

    002800* EIBEOC GOTTEN DATA IS COMPLETE

    002900* EIBFMH GOTTEN DATA CONTAINS FMH

    003000* EIBCOMPL RECEIVE COMPLETE FLAG

    003100* EIBSIG SIGNAL FLAG

    003200* EIBCONF CONFIRM FLAG

    003300* EIBERR LU 6.2 ERROR FLAG

    003400* EIBERRCD LU 6.2 ERROR CODE

    003500* EIBSYNRB SYNCPOINT ROLLBACK FLAG

    003600* EIBNODAT NO DATA FLAG

    003700* EIBRESP ERROR CODE RESPONSE

    003800* EIBRESP2 MORE ERROR CODES

    003900* EIBRLDBK ROLLED BACK FLAG

    004000*

    004100 EIBTIME PICTURE S9(7) COMP-3.

    004200 EIBDATE PICTURE S9(7) COMP-3.

    004300 EIBTRNID PICTURE X(4).

    004400 EIBTASKN PICTURE S9(7) COMP-3.

    004500 EIBTRMID PICTURE X(4).

    004600 EIBRSVD1 PICTURE XX.

    004700 EIBCPOSN PICTURE S9(4) COMP-4.

    004800 EIBCALEN PICTURE S9(4) COMP-4.

    004900 EIBAID PICTURE X.

    005000 EIBFN PICTURE X(2).

    005100 EIBRCODE PICTURE X(6).

    005200 EIBDS PICTURE X(8).

    005300 EIBREQID PICTURE X(8).

    005400 EIBRSRCE PICTURE X(8).

    005500 EIBSYNC PICTURE X.

    005600 EIBFREE PICTURE X.

    005700 EIBRECV PICTURE X.

    005800 EIBSEND PICTURE X.

    005900 EIBATT PICTURE X.

    006000 EIBEOC PICTURE X.

    006100 EIBFMH PICTURE X.

    006200 EIBCOMPL PICTURE X.

    006300 EIBSIG PICTURE X.

    006400 EIBCONF PICTURE X.

    006500 EIBERR PICTURE X.

    006600 EIBERRCD PICTURE X(4).

    006700 EIBSYNRB PICTURE X.

    006800 EIBNODAT PICTURE X.

    006900 EIBRESP PICTURE 9(8) COMP-4.

    007000 EIBRESP2 PICTURE 9(8) COMP-4.

    007100 EIBRLDBK PICTURE X.

  • Manual de CICS Pag. 7 / 52

    Deteco de teclas de servio.

    Atravs do EIB o programa pode controlar a tecla de servio (ENTER, CLEAR, PF)

    com a que se terminou a transaco (campo EIBRCODE)

    Manejo de cdigos de retorno.

    O EIB tambm proporciona informao sobre o resultado da execuo de um comando

    CICS (campo EIBAID).

    Compilao.

    Ao conter comandos, um programa CICS no se pode compilar como um compilador

    normal, j que cada comando produziria um erro.

    Os procedimentos da compilao antepem ao compilador um TRADUTOR que analisa os

    comandos CICS e os transforma em instrues COBOL, se esto correctos.

    O processo consiste em asteriscar os comandos e incluir numa nova fonte as

    linhas de cdigo correspondentes; a nova fonte a que passa etapa de

    compilao.

    No exemplo seguinte mostra-se uma traduo executada pelo emulador CICS de

    Realia:

    000100* EXEC CICS RECEIVE

    000200* MAP('MAPA1')

    000300* MAPSET('GRMAP01')

    000400* END-EXEC

    000500*

    000800 SET DFH0-CMD-RECEIVE-MAP TO TRUE

    000900 MOVE 'MAPA1' TO DFH0-VAR-MAP

    001000 SET DFH0-FLAG-MAPSET TO TRUE

    001100 MOVE 'GRMAP01' TO DFH0-VAR-MAPSET

    001200 SET DFH0-FLAG-INTO TO TRUE

    001300 CALL 'MLI_GETADDR' USING MAPA1I DFH0-ADDR-INTO

    001400 PERFORM DFH0-CALL-CICS

    Ao rever os resultados da compilao haver que procurar erros nas listas: na da

    traduo e na da compilao. Muitos dos erros da compilao tero a sua origem

    em comandos CICS errneos e, portanto, no traduzidos.

    Nota importante.

    Normalmente, o executvel resultado da compilao e montagem deposita-se

    directamente na biblioteca de carga do CICS, mas no reconhecido por este at

    no que se caracteriza como verso actual mediante um dos programas especiais de

    servio.

  • Manual de CICS Pag. 8 / 52

    Acesso ao CICS e execuo de programas

    Conexes e desconexes com CICS

    Primeiro que tudo, o utilizador h que conectar-se ao CICS, ou seja, abrir uma

    sesso de CICS no seu terminal. A conexo realiza-se, normalmente, por seleco

    de opo no painel de TSO.

    Uma vez em sesso, o CICS informa com uma mensagem de que est rpido para

    admitir peties de execuo.

    Os cdigos de transaco escrevem-se sempre nas primeiras posies do cran;

    para posicionar o cursor (e em caso de apagar ) emprega-se a tecla CLEAR.

    Antes de conectar-se, o utilizador dever averiguar se necessita identificar-se.

    Esta identificao pode no ser necessria nos ambientes CICS empregados para

    provas de aplicaes e sim para os CICS de explorao com dados reais.

    Se o CICS a que se conectou requerer identificao, o primeiro programa que se

    deve executar o programa de SIGNON, cujo cdigo de transaco CSSN.

    Este programa apresenta um cran em que se introduzem os dados:

    USERNAME

    PASSWORD

    e que termina e volta ao CICS, se os dados esto correctos. Ento o utilizador

    apagar o cran com a tecla CLEAR e introduzir os cdigos de transaco dos

    programas que deseje executar.

    A desconexo realiza-se executando um programa cujo cdigo de transaco CSSF,

    na forma:

    CSSF LOGOFF

    o qual termina a sesso do CICS e devolve o controlo ao TSO.

  • Manual de CICS Pag. 9 / 52

    Execuo de programas depois do controle do CICS

    A introduo do cdigo de transaco desencadeia uma srie de actuaes do CICS:

    A transaco deposita-se na pilha da entrada do TCP.

    No seu devido tempo, processada pelo KCP:

    Valida-se contra a tabela.

    Controla-se que o programa associado exista e esteja disponvel.

    Se no est em memria, passa-se a uma ordem de carga ao PCP.

    Cria-se uma TASK WORK AREA (TWA), especfica do utilizador e leva-se uma conta

    do uso do programa.

    Se o programa est em memria, o CICS tende a utilizar a cpia carregada para

    processar as transaes que cheguem at ele.

    A TWA servir para saber para onde vai a execuo das transaes de cada

    utilizador do programa.

    Esta multiprogramao sobre executvel, permite poupar memria. As transaes

    vo-se processando como coordenao a um sistema de interrupes por tempo e

    aproveitando os tempos de certas entradas/sadas de dados.

    Se esta multiprogramao no possvel, o PCP recebe ordem para carregar outra

    cpia do programa; este caso d-se quando o programa est detido espera on-

    line da introduo de dados a partir do cran.

    O programa s se retira da memria do CICS quando o ltimo utilizador realize

    uma transaco que devolva o controle ao CICS.

    A programao no necessita ter em conta a reutilizao de uma cpia de um

    programa por parte do CICS, para atender as transaes de diversos utilizadores;

    tanto os pontos de controle como os intercmbios de informao esto controlados

    atravs dos dados que o prprio CICS mantm nas TWAs dos distintos utilizadores

    do programa.

    O programador desenhar os seus programas como se fossem para um s utilizador.

    Programao

    Todas as instrues pertencem ao set de COBOL, excepto as que se codifiquem para

    o intercmbio de dados, que sero comandos CICS.

    Gesto de cdigos de retorno e anomalias.

    O resultado da execuo de um comando CICS, traa-se mediante a informao

    contida no EIB. Para isso existem dois mtodos:

    Investigao directa.

    Este mtodo consiste em investigar directamente o contedo do campo EIBRCODE do

    EIB, que conter um valor distinto de zero em caso de anomalia.

    Tem o inconveniente de que, para poder empreender diferentes actuaes em base a

    diferentes cdigos de erro, h que conhecer o significado dos distintos valores.

    Processo de condies excepcionais.

    o mtodo mais usual. O CICS mantm nomes simblicos para um bom nmero de

    cdigos de retorno e certos comandos CICS podem bifurcar a execuo se se

    produzir uma determinada anomalia.

    Os comandos CICS de gesto de condies excepcionais funcionam como armadilhas,

    ou seja que entram em aco, a partir do ponto do programa em que tenham sido

  • Manual de CICS Pag. 10 / 52

    escritos e no necessrio especific-los depois do comando cuja resposta se

    quer analisar.

    A forma genrica destes comandos :

    EXEC CICS

    HANDLE CONDITION

    condio( PARAGRAFO )

    .......

    END-EXEC

    onde condio o nome simblico da anomalia e PARAGRAFO o nome do pargrafo de

    tratamento da dita anomalia.

    A partir do momento em que se execute o comando, sempre que se produza a

    anomalia condio, a execuo bifurcar ao PARGRAFO.

    A bifurcao realiza-se por GO TO.

    No comando pode-se incluir toda uma lista de anomalias a tratar, lista que pode

    ampliar-se com outra ou outras. Pode ainda especificar-se uma lista total ou

    parcialmente igual a uma activa, se se deseja, a partir de certo momento

    processar umas anomalias de forma diferente:

    EXEC CICS

    HANDLE CONDITION

    condio1( PARAGRAFO1 )

    ........

    END-EXEC

    .....

    .....

    EXEC CICS

    HANDLE CONDITION

    condio1( PARAGRAFO2 )

    .......

    END-EXEC

    O aspecto de uma anomalia permanece activa at que termine o programa ou se

    execute um comando especial para desactiv-la:

    EXEC CICS

    IGNORE CONDITION

    condio1

    .......

    END-EXEC

    Os nomes das condies excepcionais iro aparecendo medida que se vejam os

    comandos a que faam referncia.

    Por parmetro no comando.

    Em qualquer dos comandos CICS, pode-se aumentar o parmetro RESP para forar a

    devoluo do cdigo de retorno no campo EIBRESP do EIB, na forma:

    EXEC CICS

    comando parmetro(valor)

  • Manual de CICS Pag. 11 / 52

    ........

    RESP(EIBRESP)

    END-EXEC

    IF EIBRESP NOT = 0

    < ERROR >.

    Notas no uso de HANDLE | IGNORE CONDITION.-

    Toda a condio excepcional que se produza e no tenha sido explicitamente

    HANDLEada ou IGNOREada, provocar uma terminao anormal da tarefa.

    Para canalizar as condies excepcionais que no se explicitem, existe a

    condio ERROR( PARAGRAFO ).

    Gesto de teclas de servio

    O campo DFHAID do EIB contm um cdigo hexadecimal que se corresponde com a

    tecla de funo que se empregou para terminar uma transaco. O programa pode

    tomar decises na base do dito cdigo:

    Por investigao directa.

    Este mtodo requer, conhecer bem os cdigos correspondentes a cada tecla, ou

    incluir bem no programa uma instruo COPY que inclua um ficheiro chamado

    DFHAID, em que se tenha nomes simblicos para cada tecla:

    DFHENTER

    DFHCLEAR

    DFHPF1 - DFHPF12

    DFHPA1, DFHPA2

    Por processo mediante comando.

    Como no caso das anomalias, o CICS reconhece as teclas de funo por nomes

    simblicos, e tem um comando que permite bifurcar a execuo do programa para um

    pargrafo determinado, se se terminou a transaco que repele em programa com

    uma delas:

    EXEC CICS

    HANDLE AID

    ENTER(PARGRAFO1)

    CLEAR(PARGRAFO2)

    PF1(PARGRAFO3)

    .....

    PF12(PARGRAFO14)

    PA1(PARGRAFO15)

    PA2(PARGRAFO16)

    END-EXEC

    A filosofia de funcionamento a mesma que a do comando HANDLE CONDITION; a

    bifurcao realiza-se tambm pelo mtodo GO TO.

  • Manual de CICS Pag. 12 / 52

    A tecla CLEAR, que apaga o cran, atribui-se normalmente funo de terminao

    da execuo do programa. O PARGRAFO correspondente contm, para o geral, a

    emisso de uma mensagem de fim de execuo e um comando RETURN sem parmetros.

    Programao Conversacional e Pseudo-conversacional.

    A programao orienta-se para o dilogo entre o programa e o utilizador de forma

    que o final de cada tarefa emitir uma mensagem sobre o seu resultado e pedir

    uma nova transaco.

    A forma de pedir as transaes condiciona fortemente as possibilidades do CICS

    de poder reutilizar uma cpia de um programa determinado, se um utilizador

    diferente reclama a execuo do mesmo programa.

    O esquema mais imediato, consiste em codificar os comandos de leitura de dados

    do cran continuao dos de envio de dados, que representa a forma de

    programao chamada conversacional, introduz uma paragem no programa em espera

    de dados do cran , que no quantificvel pelo CICS (o utilizador pode ter ido

    tomar caf).

    Se durante esse tempo, outro utilizador solicita a execuo desse programa, o

    CICS manda carregar uma nova cpia, o qual pode criar graves problemas ao CICS

    quando um programa est a ser utilizado por uma grande multido de utilizadores

    (p.ex.. um programa de caixa de um Banco ).

    Se se esgota a memria do CICS, este comea a acumular transaes no TCP e os

    tempos de resposta comeam a crescer e, dado que este processo no pode

    continuar indefinidamente, chegar um momento em que o sistema se satura e se

    'caia'.

    A soluo a este dilema consiste em no pr o comando de leitura de dados do

    cran imediatamente continuao do comando que envia os dados.

    Se faz uso de uma caracterstica do CICS, que consiste em que depois de certas

    condies, o CICS reconhece os dados digitados no cran como transaco para um

    determinado programa. Estas condies do-se:

    Ao arrancar o programa.

    Ao digitar o cdigo de transaco, o CICS aceita dados iniciais para o programa.

  • Manual de CICS Pag. 13 / 52

    Quando se cria um programa para este caso, deve ir um comando de leitura de

    dados do cran ao incio do programa.

    Esta tcnica, de escassa utilizao, pode servir para introduzir por exemplo

    contra-senhas que, verificadas pelo programa, validariam o acesso de um

    determinado utilizador a um programa.

    Ao devolver o controlo ao CICS com um comando de retorno ampliado.

    Este comando um RETURN com uma indicao expressa de programa com o que h que

    processar a prxima transaco, em forma de cdigo de transaco:

    EXEC CICS

    RETURN TRANSID( 'cdigo_de_transaco' )

    END-EXEC

    Este comando devolve o controle ao CICS de forma explcita, de modo que seja

    anulada a problemtica do tempo incomensurvel que possa levar a completar a

    transaco seguinte.

    O programa, sem embargo, no retirado da conta de uso. O parmetro TRANSID

    indica ao CICS que a prxima transaco para o programa associado a

    cdigo_de_transaco.

    De modo, RETURN, este comando pode especificar-se em todos os pontos do programa

    que se considere necessrio.

    Esta tcnica conhece-se com o nome de programao pseudo-conversacional.

    H, sem embargo uma diferena fundamental com o mtodo conversacional: quando o

    utilizador completa a seguinte transaco, o CICS lana a execuo do programa

    desde o incio, tal e como se o tivesse carregado de novo em memria: os dados

    de WORKING perdem-se.

    Programao Pseudo-conversacional e manuteno de dados de WORKING.

  • Manual de CICS Pag. 14 / 52

    O problema da perda de dados de WORKING inerente a esta tcnica de programao,

    soluciona-se fazendo uso de outra facilidade que o CICS proporciona para guardar

    dados.

    Podem-se guardar dados em reas do CICS chamadas COMMAREAs, empregando a

    formulao seguinte no comando de retorno pseudo-conversacional:

    EXEC CICS

    RETURN TRANSID('cdigo_de_transaco')

    [ COMMAREA( identificativo )

    [ LENGTH( n | longitude ) ] ]

    END-EXEC

    identificativo

    O nome de um nvel em WORKING.

    longitude

    Um valor numrico | uma varivel em PIC S9(4) COMP.

    O significado deste comando :

    Voltar ao CICS at prxima transaco.

    Guardar em COMMAREA longitude bytes a partir de identificativo.

    Dado que o CICS est a relanar a execuo do programa desde o incio, como se o

    houvesse carregado de novo, o comando de leitura de dados do cran dever ir nas

    sequncias iniciais do programa e ser nico.

    A devoluo dos dados, faz-se no CICS sobre uma rea chamada DFHCOMMAREA, que

    espera encontrar na LINKAGE SECTION do programa e que dever ser codificada com

    nvel 01 pelo programador com a longitude correspondente maior longitude que

    empregue no programa.

    002700 01 W-LONG PIC S9(4) COMP.

    002800 01 W-COMM.

    002900 03 W-OPCION PIC X.

    003000 03 W-REG.

    003100 05 W-CLAVE-AN PIC X(6).

    003200 05 W-CLAVE REDEFINES W-CLAVE-AN.

    003300 07 W-TALLER PIC 9.

    003400 07 W-FAMILIA PIC 9.

    003500 07 W-CODIGO PIC 9(4).

    003600 05 W-DESC PIC X(20).

    003700 05 W-PRECIO PIC 9(5).

    003800 05 W-STOCK PIC 9(5).

    003900 05 FILLER PIC X(44).

    004000 03 BORRADO PIC X.

    004010 ..................

    004100 LINKAGE SECTION.

    004200 01 DFHCOMMAREA PIC X(82).

    a sequncia de uso seria:

    < CARREGAR DADOS EM W-COMM >

    MOVE 82 TO W-LONG

  • Manual de CICS Pag. 15 / 52

    EXEC CICS

    RETURN TRANSID(' XXXX' )

    COMMAREA( W-COMM )

    LENGTH( W-LONG )

    END-EXEC

    Notas no uso de COMMAREA

    Os dados de DFHCOMMAREA devem mover-se para a WORKING, se interessa transmitir

    todos ou alguns no prximo retorno ao CICS, j que o parmetro COMMAREA do

    comando faz referncia a um item de WORKING.

    Na COMMAREA guardaram-se no s dados numricos e alfanumricos, mas tambm

    indicadores que possam servir para canalizar a execuo quando o CICS relance o

    programa.

    A COMMAREA especfica da sesso utilizador-programa. O programador no

    necessita ter em conta o multiuso do programa.

    O parmetro LENGTH obrigatrio.

    Em cada retorno ao CICS, pode variar-se a longitude dos dados a guardar da forma

    que mais convenha.

    O CICS devolve a longitude dos dados actualmente guardados no campo EIBCALEN do

    EIB, quando relana o programa.

    O valor deste campo zero a primeira vez que se executa o programa ou se em

    RETURN TRANSID no se especifica COMMAREA.

    A DFHCOMMAREA pode subdividir-se em nveis da forma que mais convenha.

    Os nveis de identificativo e de longitude podem ser quaisquer, excepto 88.

    O CICS interpreta a longitude dos dados a guardar em binrio. Uma longitude de

    82 numa varivel PIC S9(4) COMP-3, pode originar resultados funestos na

    execuo.

    No comando

    EXEC CICS

    RETURN

    END-EXEC

    no se pode empregar o parmetro COMMAREA.

    Ao especificar a longitude da COMMAREA, tenha-se em conta que o CICS no

    reconhece que o item W-COMM tem 82 bytes de longitude; se neste caso se

    especifica um nmero maior, enviar-se-o dados a guardar em reas prximas.

  • Manual de CICS Pag. 16 / 52

    Comandos CICS

    Intercmbios com o cran

    O intercmbio com o cran realiza-se atravs de um mdulo do CICS chamado Basic

    Mapping Support o BMS.

    Este mdulo encarrega-se de processar tanto a informao que se envia a um cran

    , como os dados da transaco que realiza o utilizador.

    No primeiro caso, em conjuno com o TCP, adapta-a ao cran que h de

    aparecer, e no segundo caso, transforma-a em dados processveis pelo programa

    que os vai receber.

    Intercmbios com o cran (No Formatada)

  • Manual de CICS Pag. 17 / 52

    Envio de dados para o cran.

    EXEC CICS

    SEND FROM( W-AREA )

    LENGTH( n | W-LONG )

    [ ERASE ]

    END-EXEC

    W-AREA

    rea de WORKING que contm dados a enviar

    n | W-LONG

    Longitude da W-AREA que se deseja emitir, que pode ser um valor imediato ou o

    nome de uma varivel numrica no PIC S9(4) COMP, carregada com o valor

    requerido.

    Sobre o ajuste da longitude vale o que se diz no caso da COMMAREA.

    ERASE

    Provoca um apagamento no cran , antes de enviar os dados.

    Recepo de dados do cran

    EXEC CICS

    RECEIVE INTO( W-AREA )

    [ LENGTH( W-LONG ) ]

    END-EXEC

    W-AREA

    rea de WORKING na que se deseja receber os dados.

    W-LONG

    Deve referenciar uma varivel numrica PIC S9(4) COMP, que se carregar com a

    longitude do dado a receber ou a mxima esperada.

    Condies excepcionais

    LENGERR

    A longitude dos dados maior que W-LONG.

    Destes dois comandos, emprega-se primeiro para indicar o fim de uma execuo

    quando o utilizador prime a tecla CLEAR.

    Acesso a Ficheiros

    Os ficheiros so abertos pelo CICS na fase de arranque, de modo que o programa

    no incluir nenhuma sentena usual de descrio, fecho, abertura ou acesso e

    limitar-se- a us-los empregando os comandos CICS de acesso.

  • Manual de CICS Pag. 18 / 52

    Cada acesso a um ficheiro faz com que o CICS comprove que se refenrencia um dos

    ficheiros da tabela do FCP e que o tipo de acesso um dos que tem registados.

    O CICS s suporta ficheiros VSAM KSDS.

    Leitura indexada.

    EXEC CICS

    READ DATASET( 'nome_do_ficheiro' | identificador )

    INTO( W-REGISTRO )

    [ LENGTH( W-LONG ) ]

    RIDFLD( W-CLAVE )

    [ KEYLENGTH( n ) GENERIC ]

    [ GTEQ ]

    END-EXEC

    nome_do_ficheiro | identificador

    Nome simblico do ficheiro.

    Pode escrever-se de forma explcita, entre aspas, ou carregar no identificador,

    que ser uma varivel PIC X(8).

    O nome do ficheiro h de estar registado na tabela de controle do FCP.

    W-REGISTRO

    rea do WORKING destino dos dados.

    LENGTH

    Indica ao CICS a longitude do registo que se vai ler ou a mxima esperada.

    Deve referenciar uma varivel numrica PIC S9(4) COMP.

    RIDFLD

    Procura-se o registo cuja chave est contida na rea do WORKING

    W-CLAVE.

    W-CLAVE no tem que ser necessariamente uma subdiviso do W-REGISTRO.

    KEYLENGTH( n ) GENERIC

    Procuras por chave genrica.

    Se se especfica, o CICS ocupar s os n primeiros bytes do W-CLAVE.

    GTEQ

    Procura por maior ou igual. O defeito procura por igual.

    Condies excepcionais:

  • Manual de CICS Pag. 19 / 52

    NOTOPEN

    Ficheiro no aberto.

    Pode ocorrer se o ficheiro est danificado, ou se foi posto fora da linha com

    uma transaco de servio.

    DSIDERR

    Nome do ficheiro no em tabela.

    NOTFND

    Registo no encontrado.

    LENGERR

    Se se h especificado LENGTH, longitude de registo maior que W-LONG; os dados

    foram trocados.

    INVREQ

    Acesso no vlido.

    ILLOGIG

    Erro lgico VSAM.

    No seguimento deste apartado, s se iro comentar os parmetros novos.

    Leitura sequencial por ordem de chave.

    Esta modalidade permite recuperar registos por ordem de chave, tanto ascendente

    como descendente, dizer, que se podem ler registos para a frente e para trs.

    Antes de comear, sem embargo, h que criar um entorno BROWSE dentro do

    ficheiro; a leitura sequencial ser movida dentro do dito entorno.

    O entorno BROWSE estabelece-se desde um determinado registo at ao final do

    ficheiro.

    Browse.

    Estabelecer entorno.

    EXEC CICS

    STARTBR DATASET( 'nome_do_ficheiro' | identificador )

    RIDFLD( W-CLAVE )

    [ KEYLENGTH(n) GENERIC ]

    [ GTEQ ]

    END-EXEC

    O entorno estabelece-se desde o registo que cumpre as especificaes de procura,

    at ao final do ficheiro.

    Este comando no l o registo, s pe um ponteiro no registo localizado.

  • Manual de CICS Pag. 20 / 52

    Condies excepcionais

    NOTOPEN

    DSIDERR

    NOTFND

    No se encontra registo no incio do entorno.

    No se estabelece BROWSE.

    ILLOGIC

    Anular entorno.

    EXEC CICS

    ENDBR DATASET( 'nome_do_ficheiro' | identificador )

    END-EXEC

    O entorno fica anulado. Tambm o anulam os comandos RETURN e RETURN TRANSID.

    Voltar ao registo do incio do entorno.

    EXEC CICS

    RESETBR DATASET( 'nome_do_ficheiro' | identificador )

    END-EXEC

    Uma forma fcil de retomar o incio do entorno, depois de ter-se movido lendo

    dentro dele.

    Condies excepcionais

    Para estes dois comandos, so as mesmas que as do comando STARTBR, excepto

    NOTFND.

    Leitura sequencial no entorno.

    EXEC CICS

    READNEXT | READPREV

    DATASET( 'nome_do_ficheiro' | identificador )

    INTO( W-REGISTO )

    [ LENGTH( W-LONG ) ]

    RIDFLD( W-CLAVE )

    [ KEYLENGTH( n ) ]

    END-EXEC

    O CICS utiliza o contedo do W-CLAVE para localizar o seguinte registo em ordem

    de chave ascendente ( READNEXT ) ou descendente ( READPREV ), excepto se o

    comando vai imediatamente atrs do STARTBR ou RESETBR, em cujo caso l-se o

    registo no incio do entorno.

    Esta peculiaridade faz com que sejam possveis saltos tanto para a frente como

    para trs, sem variar adequadamente o contedo do W-CLAVE antes de executar o

    comando de leitura.

  • Manual de CICS Pag. 21 / 52

    Condies excepcionais

    NOTOPEN

    DSIDERR

    ENDFILE

    Fim do ficheiro.

    Se foi planeado ler depois do ltimo registo do entorno; se se retrocede fora do

    entorno, no se produz condio excepcional.

    Este comando nunca produz a condio NOTFND.

    ILLOGIC

    Escritura de registos.

    A escritura sempre indexada, j que o CICS s suporta ficheiros VSAM KSDS.

    EXEC CICS

    WRITE DATASET( 'nome_do_ficheiro' | identificador )

    FROM( W-REGISTO )

    [ LENGTH( n | W-LONG ) ]

    RIDFLD( W-CLAVE )

    END-EXEC

    LENGTH

    Pode utilizar-se, bem como um valor imediato, ou como uma varivel numrica em

    PIC S9(4) COMP para indicar os bytes que se vo gravar em W-REGISTRO.

    RIDFLD

    Indica uma varivel que contm o valor da chave do registo a gravar.

    Condies excepcionais

    NOTOPEN

    DSIDERR

    DUPREC

    Chave repetida a nvel do Indice Primrio.

    No se grava o registo.

    DUPKEY

    Chave repetida a nvel do ndice Alternativo.

    Grava-se o registo se o ndice admite repeties.

    ILLOGIC

    Modificao de registos.

    Previamente modificao h que bloquear o registo a tratar. Isto faz-se com

    uma variante do comando de leitura indexada:

    EXEC CICS

    READ .......

  • Manual de CICS Pag. 22 / 52

    ......

    UPDATE

    END-EXEC

    Condies excepcionais

    So as mesmas que as do comando de leitura.

    INVREQ ( acesso no vlido ) pode ocorrer tambm pelo facto de que outra tarefa

    j tenha bloqueado o registo que se pretende bloquear.

    O registo fica bloqueado, at que se modifique, se apague ou se anule o bloqueio

    com um comando:

    EXEC CICS

    UNLOCK DATASET( 'nome_do_ficheiro' | identificador )

    END-EXEC

    ou se chegue a um comando RETURN ou RETURN TRANSID.

    O bloqueio de um registo no dever fazer-se mais quando j se tenha decidido

    fazer a modificao, j que realmente no possvel bloquear um s registo. O

    VSAM bloqueia todo um Intervalo de Control.

    Por outra lado, num ambiente de programao pseudo-conversacional, a tcnica de

    bloqueio imediatamente antes da modificao, vem imposta pelo facto de que

    depois da leitura de apresentao de um registo, se sai do programa com RETURN

    TRANSID.

    A modificao faz-se com o comando:

    EXEC CICS

    REWRITE DATASET( 'nome_do_ficheiro' | identificador )

    FROM(W-REGISTO)

    [ LENGTH( W-LONG ) ]

    END-EXEC

    Condies excepcionais

    NOTOPEN

    DSIDERR

    ILLOGIC

    Apagar registos.

    Para apagar h dois mtodos:

    Registo bloqueado.

    EXEC CICS

    READ .......

    ......

    UPDATE

  • Manual de CICS Pag. 23 / 52

    END-EXEC

    EXEC CICS

    DELETE DATASET( 'nome_do_ficheiro' | identificador )

    END-EXEC

    Para este mtodo vale o dito no comando REWRITE no que respeita aos bloqueios.

    Por chave.

    EXEC CICS

    DELETE DATASET( 'nome_do_ficheiro' | identificador )

    RIDFLD( W-CLAVE )

    [ KEYLENGTH( n ) GENERIC ]

    END-EXEC

    Este comando pode apagar registos com chave nica W-CLAVE atravs do ndice

    Principal, chaves repetidas atravs de ndices Alternativos e chaves genricas

    atravs de ambos os tipos de conjuntos de ndices.

    Intercmbios com o cran ( Formatado )

    O envio e recepo de dados formatados faz-se depois do controlo de umas

    entidades de BMS chamadas mapas ( MAPS ).

    Um mapa um programa de controle que permite colocar displays sobre o cran

    itens numa certa ordem e em posies pr-determinadas.

    O mapa BMS, compe-se de dois elementos:

    Mapa fsico

    O programa de controlo em si.

    Mapa lgico

    Um subproduto da gerao do anterior em forma de uma estrutura a incluir no

    programa, e que define reas de WORKING para a recepo e o envio dos dados.

  • Manual de CICS Pag. 24 / 52

    Os mapas agrupam-se em grupos de mapas ou MAPSETS.

    Dada a grande quantidade de mapas que se podem chegar a utilizar entre todos os

    programas de todas as aplicaes CICS, este no regista os mapas em si, seno os

    MAPSETS, de modo que so estes os que se levam nas tabelas do entorno.

    No caso de ter que desenvolver um mapa novo, o programador tem duas opes:

    Incluir o mapa num dos MAPSETS j existentes.

    Abrir um novo MAPSET, para o qual ter que pr-se em contacto com a pessoa

    responsvel do CICS, para que pratique a entrada correspondente nas tabelas.

    A descrio destas entidades faz-se mediante umas instrues chamadas macros

    BMS, que tm o formato DFHMxx e s que se afectam com um nmero de parmetros.

    O formato de uma macro BMS :

    onde label uma etiqueta opcional e o carcter X (pode variar segundo o

    sistema), na coluna 72 indica continuao da instruo na coluna 16 da seguinte

    linha.

    Os parmetros podem ver-se afectados por vrios valores; e nesse caso escrevem-

    se entre parntesis e separados por vrgulas.

    Descrio de mapas e grupos

    MAPSET.

    Define-se com a macro DFHMSD:

    nomset DFHMSD TYPE=DSECT | MAP | &SYSPARM,

    [ STORAGE=AUTO, ]

    [ CTRL=( FSET | FRSET,FREEKB ), ]

    DATA=FIELD | BLOCK,

    [ EXTATT=YES, ]

    TIOAPFX=YES | NO,

    MODE=IN | OUT | INOUT,

    LANG=ASM | COBOL | PLI | RPG,

    [ VALIDN=( MUSTFILL,MUSTENTER ) ]

    nomset

    Nome do MAPSET ( mximo 7 caracteres ) e deve estar registado nas tabelas do

    CICS.

    TYPE

    Tipo de mapas a criar:

  • Manual de CICS Pag. 25 / 52

    DSECT

    S mapas fsicos.

    MAP

    S mapas lgicos.

    &SYSPARM

    Utilizar como guia o contedo da varivel do sistema ( normalmente instala-se

    com um valor que faz com que se criem ambos os tipos de mapas ).

    STORAGE=AUTO

    Cada mapa ocupa a sua prpria memria e no se redefinem.

    A alternativa BASE=nome_rea.

    CTRL

    Operaes complementares ao display dos mapas:

    FSET

    Todos os campos em estado activo.

    FRSET

    Todos os campos em estado inactivo.

    O significado dos termos activo e inactivo explica-se na recepo de dados.

    FREEKB

    Liberar o teclado, que o BMS bloqueia no princpio, obrigando a premir a tecla

    RESET.

    DATA

    Formato dos dados na comunicao BMS-programa:

    FIELD

    Cada dado no formato e tamanho do seu campo respectivo. o defeito.

    BLOCK

    Dados bloqueados com um prefixo de longitude.

    EXTATT=YES

    Incluir no mapa lgico campos para a gesto de atributos estendidos (cor, vdeo

    inverso).

    TIOAPFX

  • Manual de CICS Pag. 26 / 52

    Deve especificar-se YES, se se deseja executar o intercmbio de dados at, e

    desde a rea de mapa lgico de WORKING, j que o defeito NO.

    MODE

    Tipo de operao de entrada/sada:

    IN

    S entrada.

    OUT

    S sada.

    INOUT

    Entrada e sada.

    LANG

    Linguagem de criao dos mapas simblicos.

    O defeito ASM ( Assembler ).

    VALIDN

    MUSTFILL

    H que preencher todos os campos

    MUSTENTER

    H que teclar ao menos uma posio em todos os campos.

    Estes parmetros afectam todos os mapas de MAPSET.

    MAPA EN MAPSET.

    Define-se com a macro DFHMDI:

    nommap DFHMDI SIZE=( linhas,colunas) ,

    [ LINE=linha,COLUMN=coluna, ]

    [ CTRL=( FSET | FRSET,FREEKB ), ]

    [ DATA=FIELD | BLOCK, ]

    [ TIOAPFX=NO | YES, ]

    [ VALIDN=( MUSTFILL,MUSTENTER ) ]

    nommap

    Nome do mapa ( mximo 7 caracteres ).

  • Manual de CICS Pag. 27 / 52

    SIZE

    Tamanho do mapa em linhas por colunas.

    LINE,COLUMN

    Posio do mapa no cran; posio da esquina superior esquerda.

    Os restantes parmetros tm o mesmo significado que no caso do MAPSET. A sua

    especificao pode corrigir o que se tenha feito naquele.

    ITEM EN MAPA.

    Define-se com a macro DFHMDF:

    [label] DFHMDF POS=nmero | ( linha,coluna ),

    LENGTH=nmero,

    [ ATTRB=( [ control_cursor ][,tipo][,representao][,]

    [ IC ][ ,FSET ] ), ]

    [ INITIAL='tira', ]

    [ JUSTIFY=(LEFT | RIGHT,BLANK | ZERO), ]

    [ PICIN='tira', ]

    [ PICOUT='tira', ]

    [ GRPNAME=nome_gupo, ]

    [ OCCURS=nmero, ]

    [ VALIDN=( MUSTFILL,MUSTENTER ) ]

    LABEL

    Cumpre dois cometidos:

    Se se deixa em branco

    Define o item como literal, sem reflexo no mapa lgico.

    Se se especifica ( mximo 7 caracteres )

    Define o item como campo de dados e o item refletir-se- no mapa lgico para o

    processo do seu contedo.

    POS

    Posio do campo dentro da janela que define o mapa.

    LENGTH

    A longitude do item.

    ATTRB

    control_cursor

    ASKIP

    Salto automtico.

    UNPROT

    Campo no protegido; podem-se digitar dados.

    PROT

    Campo protegido; s se podem premir as teclas de tabulao, retorno de carga e

    ENTER.

  • Manual de CICS Pag. 28 / 52

    tipo

    NUM

    Campo numrico.

    representao

    NORM

    Intensidade normal.

    BRT

    Brilhante.

    DRK

    Invisvel.

    IC

    O cursor aparecer neste campo.

    FSET

    Campo em estado activo.

    INITIAL

    Valor inicial que se quer atribuir ao campo.

    Se se ultrapassa a coluna 71, pe-se o carcter de continuao na 72 e continua-

    se na linha seguinte na coluna 16, sem abrir novas aspas.

    JUSTIFY

    Alineao de dados dentro do campo e recheio de posies no significativas:

    LEFT | RIGHT

    Alineao direita | esquerda.

    BLANK | ZERO

    Recheio com brancos | zeros.

    PICIN

    PICOUT

    Aspecto dos dados entrada e sada. A mscara codifica-se entre aspas simples,

    no se pode utilizar a frmula de repetio.

    GRPNAME

    Associao do campo a outro como nvel superior.

    OCCURS

    Definio de tabelas.

    Notas

    A omisso da etiqueta, declara o campo como um literal. Ao no reflexar-se este

    no mapa lgico, quase obrigatrio empregar o parmetro INITIAL e assinalar o

    atributo ASKIP.

    A utilizao do PICOUT como formato de edio pode acarretar problemas na

    recepo de dados numricos, dado que os pontos e vrgulas da mscara no so

    valores numricos.

    Veja-se o comando BIF DEEDIT na seco de comandos especiais.

    A longitude do campo ter de especificar-se como conserto ao tamanho real que

    vai a ocupar no cran, caracteres de edio incluidos.

    O BMS representa fisicamente o atributo como uma posio mais no cran,

    esquerda do campo. Por isso h que ter-se a precauo para no cruzar campos

    consecutivos.

    A primeira coluna disponvel de uma linha a 2, pelo display de atributo.

  • Manual de CICS Pag. 29 / 52

    Normalmente o campo define-se de modo que quepa inteiro numa linha.

    O BMS no reconhece no cran mais que os inicios do campo, o qual faz com que se

    possa seguir teclando mais alm do fim.

    Isto no princpio no apresenta inconveniente, pois s sero entregues na

    recepo as posies definidas para o campo, pode ser causa de que se tecle fora

    de um campo a informao correspondente. A soluo normalmente adoptada consiste

    em definir terminadores ( campos ASKIP,DRK ) de tal forma que o seu byte de

    atributo caia imediatamente continuao da ltima posio teclvel de um

    campo.

    Fim da descrio.

    No fim da descrio, a continuao da ltima DFHMDF, do ltimo mapa, do grupo,

    assinala-se com uma macro DFHMSD:

    DFHMSD TYPE=FINAL

    END

    Gerao do grupo de mapas. Estrutura do mapa lgico

    A fonte de descrio, sempre de um grupo completo, processa-se mediante um

    compilador especial, que gerar:

    S mapas fsicos

    TYPE=DSECT

    S mapas lgicos

    TYPE=MAP

    Ambos

    TYPE=&SYSPARM

    O mapa lgico contir:

    Uma s especificao da rea

    MODE IN e MODE OUT.

    Duas especificaes da rea

    MODE INOUT.

    O gerador utiliza o nome do mapa para nomear as reas do mapa lgico,

    denominando a rea de entrada MAPAI e a de sada MAPAO, se o nome do mapa MAPA

    e segundo o parmetro TYPE da macro DFHMSD.

    A estrutura do mapa lgico que se chama MAPA1, com MODE=INOUT, DATA=FIELD e dois

    campos de dados CAMPO1 e CAMPO2, dos quais o primeiro numrico de cinco

    posies e o segundo alfanumrico de vinte, :

  • Manual de CICS Pag. 30 / 52

    Macros BMS.

    ...........

    MAPA1 DFHMDI SIZE=( 24,80 ) ,

    CTRL=( FRSET,FREEKB ),

    DATA=FIELD,

    TIOAPFX=YES

    CAMPO1 DFHMDF POS=( linha,coluna ),

    LENGTH=5,

    ATTRB=( UNPROT,NUM )

    CAMPO2 DFHMDF POS=( linha,coluna ),

    LENGTH=20,

    ATTRB=UNPROT

    Mapa lgico em WORKING.

    01 MAPA1I.

    02 FILLER PIC X(12).

    02 CAMPO1L PIC S9(4) COMP.

    02 CAMPO1F PIC X.

    02 FILLER REDEFINES CAMPO1F.

    03 CAMPO1A PIC X.

    02 CAMPO1I PIC 9(5).

    02 CAMPO2L PIC S9(4) COMP.

    02 CAMPO2F PIC X.

    02 FILLER REDEFINES CAMPO2F.

    03 CAMPO2A PIC X.

    02 CAMPO2I PIC X(20).

    01 MAPA1O REDEFINES MAPA1I.

    02 FILLER PIC X(12).

    02 FILLER PIC X(3).

    02 CAMPO1O PIC 9(5).

    02 FILLER PIC X(3).

    02 CAMPO2O PIC X(20).

    FILLER

    consequncia de TIPOAPFX=YES e contm informao de controlo necessria para

    entregar os dados no mapa lgico.

    CAMPOxL

    Contir a longitude do campo em recepo.

  • Manual de CICS Pag. 31 / 52

    CAMPOxA

    Contir em atributo do campo em recepo.

    CAMPOxI

    CAMPOxO

    Contiro o dado.

    Notas Gerao.

    Os nomes do campo, mapa e grupo no podem exceder 7 caracteres de longitude.

    Os nomes do campo e mapa tm de ser nicos em todo o grupo.

    O primeiro mapa de um grupo pode levar o mesmo nome que o grupo.

    O caso DATA=BLOCK no d lugar a um mapa lgico como o de cima, mas s a uma

    rea seguida, na que os dados se entregaro precedidos de uma etiqueta que

    indica a sua longitude real. Tem a vantagem de poupar caracteres em transmisso,

    mas complica enormemente o processo, pelo que apenas se utiliza.

    O mapa lgico inclui-se no programa COBOL codificado, normalmente na WORKING,

    uma instruo COPY nomset.

    Transmisso de dados e MDT.

    Um dos pontos dbeis do CICS a sua sensibilidade a congestes na transmisso

    de dados, sobretudo na recepo. A sobrecarga faz que o sistema funcione cada

    vez mais devagar, e chegando saturao, se produza uma cada.

  • Manual de CICS Pag. 32 / 52

    Mediante tcnicas adequadas, o programador deve evitar a transmisso

    desnecessria de dados.

    Uma destas tcnicas consiste na gesto adequada de um indicador a nvel de campo

    chamado Modified Data Tag ou MDT. Este indicador toma os valores:

    MDT=0

    No se h digitado nada.

    MDT=1

    H-se digitado ao menos uma posio.

    de tal modo que s se transmitem desde o terminal os campos cujo MDT valha 1,

    dizer todos os campos activos.

    O MDT pe-se em 1:

    Digitando ao menos uma posio do campo

    Utilizando o atributo FSET na definio do campo, mapa ou grupo.

    O MDT pe-se a 0:

    Utilizando o atributo FRSET na definio de campo, mapa o grupo com um comando

    de envio de dados.

    O atributo FSET no deveria ser utilizado, j que tem como consequncia a

    transmisso do dado que contm um campo, ainda que no se tenha digitado nada.

    O dado dever ter sido melhor guardado em COMMAREA para o seu posterior

    tratamento.

    Os mapas deveriam definir-se sempre com os campos inactivos (FRSET).

    Recepo de dados do cran.

    EXEC CICS

    RECEIVE MAP( 'nome_do_mapa' | identificador )

    [ MAPSET( 'nome_do_mapset' | identificador ) ]

    [ INTO( identificador ) ]

    END-EXEC

  • Manual de CICS Pag. 33 / 52

    MAPSET

    Pode omitir-se, se o mapa tem o mesmo nome do grupo.

    INTO

    Pode omitir-se, se o mapa lgico de entrada tem o mesmo nome do mapa com o

    sufixo I.

    Identificador

    Os nomes do mapa e grupo podem carregar-se numa varivel PIC X(8).

    O BMS l do cran os campos activos (MDT=1), e utiliza os prefixos de cada campo

    no mapa lgico para depositar neles a longitude do campo e o atributo

    respectivamente.

    Para DATA=FIELD, a longitude a da definio.

    O identificador de nome igual ao do campo com o sufixo I, contm o dado

    encolunado como arranjo natureza e/ou definio.

    Para os campos inactivos, o BMS recebe um s carcter, e com base nele, efectua

    o recheio dos identificadores associados ao campo seguinte forma:

    0 - longitude.

    LOW-VALUES - ao atributo e ao campo de entrada.

    Se um campo tiver sido apagado com a tecla EOF, o BMS envia:

    0 - longitude.

    X '80' - ao atributo.

    LOW-VALUES - ao campo de entrada.

    Condies excepcionais.

    MAPFAIL

    Tem duas causas:

    O cran no est formatado.

    Tal o caso quando se ensaia RECEIVE no incio do programa e a transaco la

    inicial ( cdigo de transaco ).

    No se recebeu nenhum dado

    Os campos esto inactivos e no se digitou nada.

    Envio de dados para o cran.

    EXEC CICS

    SEND MAP( 'nome_do_mapa' | identificador )

    [ MAPSET( 'nome_do_set' | identificador ) ]

  • Manual de CICS Pag. 34 / 52

    [ FROM( identificador ) ]

    [ ERASE | ERASEUP ]

    [ CURSOR( n ) | CURSOR ]

    [ MAPONLY | DATAONLY ]

    [ FRSET ]

    [ ACCUM ]

    END-EXEC

    FROM

    Pode omitir-se se o identificador contm o nome do mapa com o sufixo O.

    ERASE

    Apaga o cran antes do display.

    ERASEUP

    apaga os campos UNPROT antes do display.

    CURSOR( n )

    Coloca o cursor na posio n do mapa.

    CURSOR

    Coloca o cursor no primeiro campo cuja longitude, antes do envio dos dados, se

    tenha carregado con -1.

    MAPONLY

    Envia s o mapa fsico.

    DATAONLY

    Envia s o mapa lgico.

    FRSET

    Pe a zero os MDTs de todos os campos.

    ACCUM

    O envio retm-se e acumula-se a mensagem em forma de pgina, sinalizando-se a

    acumulao com a condio excepcional OVERFLOW.

    Finalizada a acumulao de mensagens, inicia-se o display invocando uma

    transaco de servio do CICS com o comando:

    EXEC CICS

    SEND PAGE

    END-EXEC

  • Manual de CICS Pag. 35 / 52

    que habilita a paginao mediante teclas PF.

    Condies excepcionais.

    INVMPSZ

    Tamanho de mapa incorrecto.

    OVERFLOW

    Produz-se na acumulao de mensagens.

    Notas no uso de SEND MAP.

    Em mapas INOUT, recomendvel apagar com LOW-VALUES a rea de sada, antes de

    carregar os dados; os campos de sada no carregados no se transmitiro para o

    cran.

    Os itens com sufixo A o F podem empregar-se para mover para eles valores que

    troquem para o prximo envio os atributos do campo.

    Assim, se se detectou que um campo contm um valor que no se deve modificar

    (p.ex. a chave de um registo cujos dados se apresentam para modificao), pode

    actualizar-se o atributo do campo para ASKIP, de modo que o cursor no se

    detenha.

    O sistema subministra um ficheiro, que nos bytes de atributo, se os h designado

    por nomes simblicos, chamado DFHBMSCA; este fichero pode incluir-se na WORKING

    do programa mediante uma instruccin COPY.

    Se se h pedido a incluso de atributos estendidos ( EXTATT=YES ), o gerador

    inclui no prefixo de cada campo no mapa lgico um campo mais no que se

    entrega/pode negociar-se o dito atributo.

    DFHBMSCA

    Atributos do campo.

    DFHBMASK ASKIP

    DFHBMUNP UNPROT

    DFHBMUNN UNPROT,NUM

    DFHBMPRO PROT

    DFHBMBRY BRT

    DFHBMDAR DRK

    DFHBMFSE FSET

    DFHBMPRF PROT,FSET

    DFHBMASF ASKIP,FSET

    DFHBMASB ASKIP,BRT

    Atributos estendidos.

  • Manual de CICS Pag. 36 / 52

    Cor.

    DFHDFCOL Cor por defeito

    DFHBLUE

    DFHRED

    DFHPINK

    DFHGREEN

    DFHTURQ

    DFHYELLO

    DFHNEUTR

    Apresentao.

    DFHDFHI Brilhante

    DFHBLINK Pestanejo

    DFHREVRS Vdeo inverso

    DFHUNDLN Sombreado

    Caracteres de controle para sada no formatadas impressora.

    DFHBMPNL New Line

    DFHBMPEM Fim da mensagem.

    Ferramentas Suplementares.

    Filas de Registos.

    As filas de registos empregam-se para a gesto de dados no CICS.

    A sua utilizao supe uma anlise prvia da adequao da ferramenta s

    necessidades traadas.

    As ferramentas de manejo de Listas so TRANSIENT DATA ( TD ) e TEMPORARY STORAGE

    ( TS )

    TANSIENT DATA ( TD ).

    Gesto de Dados Transitrios.

    A funo TD compreende basicamente:

    Os mdulos de controle de Dados Transitrios

    Uma tabela de destinos ( DCT ).

    Uma srie de mandatos para peties ao TD

    e causa dos servios:

    Manejo de Listas ( Dados Intrapartio )

    Suporte de ficheiros sequenciais ( Dados Extrapartio ).

  • Manual de CICS Pag. 37 / 52

    Tanto num caso como no outro, o tipo de dado define-se numa Tabela de Destinos

    na qual se identifica por meio de um cdigo de quatro caracteres e se descreve o

    tipo e configurao.

    Dados Intrapartio ( TD INTRA ).

    Listas de Registos armazenados em ficheiros VSAM ESDS e tm estas

    caractersticas:

    O programador do sistema pode defini-las como reusveis ou no reusveis.

    Uma lista no reusvel s permite uma leitura, j que s se mantm leitura

    sequencial para a frente. A efeitos internos, o CICS considera como apagado um

    registo lido.

    Os registos podem ser de longitude varivel.

    As operaes admitidas so: leitura, escrita de um registo e moldagem da lista.

    S se pode associar o arranque automtico de uma tarefa quando o nmero de

    registos armazenados na lista chegue a um valor determinado (trigger).

    Dados extrapartio ( TD EXTRA ).

    So ficheiros sequenciais definidos como tais na DCT.

    Pode-se ler e escrever.

    No se pode vaziar o fichero.

    As operaes de intercmbio de dados executam-se mediante os comandos:

    Leitura.

    EXEC CICS

    READQ TD QUEUE( 'nome' | identificador )

    INTO( identificador )

    [ LENGTH( identificador ) ]

    END-EXEC

    nome

    o da lista a aceder, em forma explcita, entre vrgulas, ou carregado numa

    varivel PIC X(8). H de existir na Tabela de Control de Destinos.

    INTO

    Aponta a uma rea de WORKING, destino dos dados.

    LENGTH

    Especifica uma varivel em PIC S9(4) COMP que contm a longitude dos dados a

    ler, ou a maior esperada.

    Condies excepcionais.

    NOTOPEN

    Lista no disponvel.

  • Manual de CICS Pag. 38 / 52

    O ficheiro que a suporta no est aberto.

    LENGERR

    Se se especifica LENGTH, longitude dos dados excede ao indicado.

    QIDERR

    Lista no existe.

    QZERO

    Lista no reusvel vazia ou que h chegado ao fim.

    Escrita.

    EXEC CICS

    WRITEQ TD QUEUE( 'nome' | identificador )

    FROM( identificador )

    [ LENGTH( n | identificador ) ]

    END-EXEC

    Condies excepcionais.

    NOTOPEN

    NOSPACE

    No h espao no disco.

    QIDERR

    Vazio.

    EXEC CICS

    DELETEQ TD QUEUE( 'nome' | identificador )

    END-EXEC

    Condies excepcionais.

    QIDERR

    TEMPORARY STORAGE ( TS ).

  • Manual de CICS Pag. 39 / 52

    Memria Temporria.

    Listas de Registos, que no necessitam estar registadas em nenhuma tabela,

    suportadas:

    Em memria

    Em disco ( VSAM ESDS ).

    As caractersticas mais importantes so:

    Criao dinmica de listas.

    Recuperao sequencial ou ao acaso.

    Actualizao.

    Registos de longitude varivel.

    Apagamento e destruio de uma lista.

    Os registos das listas TS ( itens ), podem recuperar-se mais de uma vez.

    A lista em si pode definir-se de tal forma que o CICS a guarde de uma sesso

    para outra, ainda que no princpio ser uma lista que se perder ao parar o

    CICS.

    O acesso faz-se com os comandos:

    Leitura.

    EXEC CICS

    READQ TS QUEUE( 'nome' | identificador )

    INTO( identificador )

    [ LENTGH( identificador ) ]

    ITEM( n ) | NEXT

    END-EXEC

    nome

    Lista que se quer aceder, uma tira de at oito caracteres ou o valor de uma

    varivel PIC X(8).

    INTO

    Aponta a uma rea em que se vai receber o item.

    LENGTH

    Referencia uma varivel em PIC S9(4) COMP na que se deposita a longitude

    desperada do item ou a mxima longitude que se pretende ler.

    ITEM( n )

    Recuperar o item nmero n.

    NEXT

    Recuperar o item seguinte ao ltimo lido.

    Condies excepcionais.-

  • Manual de CICS Pag. 40 / 52

    QIDERR

    Nome lista no encontrado.

    ITEMERR

    Com ITEM( n )

    Item no encontrado.

    Com NEXT

    Fim da lista.

    Escrita.

    EXEC CICS

    WRITEQ TS QUEUE( 'nome' | identificador )

    FROM( identificador )

    [ LENGTH( n | identificador ) ]

    [ ITEM( n ) [ REWRITE ] ]

    MAIN | AUXILIARY

    END-EXEC

    nome

    o da lista a aceder e ser uma tira de at oito caracteres.

    Pode escrever-se de forma explcita, entre vrgulas, ou carreg-lo numa varivel

    PIC X(8).

    Se no se emprega o parmetro REWRITE e a lista no existe, o CICS cria-a e

    mantm-na acessvel a todas as tarefas.

    O problema de evitar comparties de dados no desejadas, soluciona-se gerando

    nomes de lista nicos por tarefa, por exemplo, encadeando os contedos dos

    campos TRNID e TRMID do EIB, ( respectivamente identificativo de transaco e do

    terminal ).

    ITEM( n )

    Assinalar ao item a gravar o nmero n. Se no se especfica, o CICS assinala o

    nmero do ltimo mais um.

    REWRITE

    Actualizar o item n. Se se especfica, h que especificar tambm ITEM.

    MAIN

    Se a lista no existe, cria-se em memria. A alternativa e o defeito

    AUXILIARY, que cria a lista em disco.

    Condies excepcionais.-

  • Manual de CICS Pag. 41 / 52

    QIDERR

    Com REWRITE, nome da lista no encontrado.

    ITEMERR

    Com ITEM

    Item j existente.

    Com ITEM e REWRITE

    Item no encontrado.

    Apagado.

    EXEC CICS

    DELETEQ TS QUEUE( 'nome' | identificador )

    END-EXEC

    Condies excepcionais.

    QIDERR

    Gesto de dados por pontos.

    Este mtodo permite a gesto de dados por acesso directo s reas de dados do

    CICS, evitando o trabalho ( e tempo ) de ter que transvas-los s reas do

    WORKING do programa.

    O mtodo uma alternativa ao visto, at agora chamado MODO MOVE e constitui o

    MODO LOCATE em que as referncias INTO que especificam reas de WORKING,

    substituem-se por referncias a pontos.

    O modo LOCATE consiste em utilizar directamente os dados que o CICS deposita na

    COMMON WORK AREA ( CWA ) e que, no modo MOVE, transvasam-se a reas de WORKING

    do programa.

    Por isso, utilizam-se espelhos das reas de dados na LINKAGE SECTION do programa

    em vez de reas de WORKING e definem-se pontos.

    Block Locator for Linkage.

    Em geral, um programa montador (LINK), define por conta prpria, um ponto para

    cada nvel 01 que encontre em LINKAGE, denominado BLL (Block Locator for

    Linkage).

    O conjunto destes BLLs forma uma lista apontada por um BLL adicional, tambm

    gerado pelo prprio montador.

  • Manual de CICS Pag. 42 / 52

    Um programa com:

    LINKAGE SECTION.

    01 AREA-1 PIC X(100).

    daria lugar a que o montador gera-se uma lista com os elementos:

    PIC S9(8) COMP. Ponto lista

    PIC S9(8) COMP. Ponto AREA-1

    e se modifica-se da seguinte forma:

    LINKAGE SECTION.

    01 BLL-CELLS.

    02 FILLER PIC S9(8) COMP.

    02 PUNT-AREA-1 PIC S9(8) COMP.

    01 AREA-1 PIC X(100).

    o item BLL-CELLS se superpondra lista do BLL geradas pelo montador, de modo

    que carregando convenientemente PUNT-AREA-1 poder aceder-se rea AREA-1 do

    programa invocante.

    Na prtica, sem obstculo, isto no pode fazer-se desta forma to intuitiva,

    pois o COBOL trabalha por referncia e no por valor, mas alguns entornos

    operativos dispem-se da forma de entregar um valor em lugar de uma referncia.

    Tal o caso do CICS, em que o traductor incorpora sempre uma LINKAGE SECTION

    com quatro nveis 01, se o programador no o faz, de forma que d lugar a uma

    lista:

    BLL1 EIB

    BLL2 COMMAREA

    BLL3 FICTICIO1 aponta-se a si mesmo

    BLL4 FICTICIO2

    Se o programador codifica BLLs na LINKAGE SECTION do programa, far-o na forma

    que se descreve mais acima; o montador do enlace insere na BLL3 a direco do

    BLL-CELLS, de modo que BLL4 contir a direco da AREA-1.

    No modo LOCATE, um comando:

    EXEC CICS

    READ DATASET( 'FICHERO' )

    RIDFLD( W-CLAVE )

    SET( PUNT-AREA-1 )

    UPDATE

    END-EXEC

    pe no PUNT-AREA-1 a direco do segmento da CWA que contm o registo lido, e

    por tanto, acessvel ao programa COBOL o item AREA-1 e todas as subdivisies e

    redefinies que possa ter.

    Se, depois de alterar o contedo da AREA-1 executa-se:

  • Manual de CICS Pag. 43 / 52

    EXEC CICS

    REWRITE DATASET('FICHEIRO')

    FROM( AREA-1 )

    END-EXEC

    modifica-se o registo directamente desde AREA-1, apontada por PUNT-AREA-1.

    Quando no existe o transvase de dados da CWA a WORKING, o processo muito mais

    rpido.

    A longitude do ponteiro quase sempre de 8 bytes, ainda que para determinados

    acessos possa ser de 4.

    Enlace com outros programas.

    Quando as necessidades o requerem, um programa pode pedir a execuo de outro: o

    CICS seguir considerando esta actividade como a mesma tarefa.

    O passo do controle de um programa a outro pode fazer-se de duas maneiras:

    Enlace a nvel distinto.

    De um programa pede-se a execuo de outro, e o programa invocante fica detido

    at que o invocado lhe devolve o controle.

    Enlace ao mesmo nvel.

    Um programa cumpre com a sua funo e pede a execuo de outro de maneira que o

    invocado substitua ao invocante.

    O primeiro caso d-se ao enlaar com programas que executam funes muito

    concretas, p.ex. ler um registo de um ficheiro; o programa invocante esperar

    que o invocado recupere a informao que se lhe pede.

    O segundo caso d-se em programas que fazem de men e apresentam uma seleco de

    opes. Uma vez seleccionada uma opo, o programa no tem que cumprir misso e

    a memria que ocupa poderia ser utilizada pelo que se carrega.

    Em ambos os casos, pode passar-se dados ao programa invocado utilizando a

    COMMAREA.

    A referncia ao programa invocado faz-se directamente pelo seu nome e no pelo

    seu cdigo de transaco; o controle faz-se atravs da tabela do PCP.

    Enlace a nvel distinto.

    EXEC CICS

    LINK PROGRAM( 'nome_do_programa' )

    [ COMMAREA( identificador )

    [ LENGTH( n | identificador ) ] ]

    END-EXEC

    Enlace ao mesmo nvel.

    EXEC CICS

  • Manual de CICS Pag. 44 / 52

    XCTL PROGRAM( 'nome_do_programa' )

    [ COMMAREA( identificador )

    [ LENGTH( n | identificador ) ] ]

    END-EXEC

    Notas no uso de XCTL/LINK.-

    O comando RETURN sem parmetros leva ao programa de nvel superior, ou ao CICS

    se o nvel o mais alto. Se o programa invocado leva cdigo de transaco

    associado, no h nenhum impedimento em mant-lo em sesso com RETURN TRANSID,

    se as necessidades da aplicao o requerem.

    Se o programa foi invocado com LINK, o programa invocante fica detido at que se

    lhe devolva o controle. O nico comando que devolve o controle :

    EXEC CICS

    RETURN

    END-EXEC

    e tambm no caso de que o programa invocante leve cdigo de transaco

    associado.

    Se um programa PROGTR03 com cdigo de transaco TR03 emite um comando LINK, e o

    programa invocado tenta devolver-lhe o controle com:

    RETURN TRANSID('TR03')

    o CICS carregar uma nova cpia de PROGTR03.

    Se um programa LINKado recebe dados e deve contestar, utilizar a sua prpria

    DFHCOMMAREA para escrever nela os datos que deseja enviar ao programa invocante.

    No caso deste tipo de enlace, a DFHCOMMAREA do programa invocado no mais que

    um ponteiro a uma rea de WORKING do programa invocante. Se no recebe dados,

    poderia contestar utilizando uma lista.

    Arranque e Sincronizao de Tarefas.

    Arranque de Tarefas.

  • Manual de CICS Pag. 45 / 52

    Uma tarefa pode iniciar outra ou outras diferentes, incluso em terminais

    diferentes do actual, com planificao do tempo de arranque e passo de dados

    tarefa iniciada atravs de uma lista TS.

    O CICS planifica a informao da tarefa a iniciar num bloco de controle AID que

    logo utilizar.

    A tarefa inicia-se com o comando START. Os dados passam-se mediante uma lista TS

    e recuperam-se na tarefa iniciada com o comando RETRIEVE.

    EXEC CICS

    START INTERVAL( hhmmss ) | INTERVAL(0) | TIME( hhmmss )

    TRANSID( 'cdigo_de_transaco_a_arrancar' )

    [ TERMID( 'cdigo_de_terminal' ) ]

    [ REQID( 'nome' ) ]

    [ FROM( identificador )

    [ LENGTH( n | identificador ) ]

    QUEUE( 'nome_da_lista_TS' ) ]

    [ RTRANSID( 'cdigo_da_transaco_origem' ) ]

    [ RTERMID( 'cdigo_do_terminal_origem' ) ]

    END-EXEC

    INTERVAL

    Marca o intervalo de tempo que h de decorrer para que a tarefa arranque.

    hhmmss

    um nmero.

    0 - Arranca instantaneamente a tarefa.

    TIME

    Especifica a hora de arranque da tarefa.

    Se maior ou igual ao tempo actual, arranca a tarefa quando corresponda.

    Se est entre a hora actual e menos seis horas, assume a hora actual.

    Se est atrasado em mais de seis horas em respeito hora actual, assume a mesma

    hora do dia seguinte.

    TRANSID

    Cdigo de transaco da tarefa a arrancar.

    TERMID

    Cdigo do terminal no qual se vai arrancar a tarefa.

    REQID

  • Manual de CICS Pag. 46 / 52

    Nome de quatro caracteres com o que se caracteriza o sucesso da execuo deste

    comando. til empreg-lo porque permite a cancelao do comando, se a tarefa

    no foi arrancada ainda, fazendo referncia a ele num comando CANCEL.

    FROM LENGTH

    QUEUE

    Parmetros para passar dados que se gravaram numa lista TS.

    Se a lista no existe, cria-se. Neste caso muito interessante que o nome da

    lista se forme de maneira que seja nica em todo o sistema.

    RTERMID

    RTRANSID

    Identificam transaco e terminal desde que se arranca a tarefa.

    Condies excepcionais.-

    TERMIDERR

    TRANSIDERR

    No caso de que se passem dados e a tarefa arrancada esteja associada a um

    terminal, podem emitir-se vrios comandos START sucessivos, para provocar

    acumulao de dados na lista QUEUE, mas s o primeiro inicia a tarefa.

    Se a tarefa arrancada no est associada a um terminal e se emitem vrios

    comandos START, cada um deles arrancar uma nova tarefa e s poder passar-se um

    dado de cada vez.

    Em caso de que se passem dados, a tarefa arrancada dever executar o comando:

    EXEC CICS

    RETRIEVE INTO( identificador )

    [ LENGTH( identificador ) ]

    [ QUEUE( identificador ) ]

    [ RTRANSID( identificador ) ]

    [ RTERMID( identificador ) ]

    [ WAIT ]

    END-EXEC

    identificativos associados a QUEUE, RTRANSID, RTERMID

    Neles entregam-se os nomes da lista e os cdigos de transaco e terminal

    invocantes, se se codificaram os mesmos no comando START.

    INTO

    Aponta rea de recepo do dado.

  • Manual de CICS Pag. 47 / 52

    WAIT

    Faz com que a tarefa fique suspendida se se esgotaram os dados

    Condies excepcionais.

    ENDDATA

    Se a tarefa est associada a um terminal e se passaram dados acumulados, pode

    emitir-se uma srie de comandos RETRIEVE, para recuperar todos os dados.

    Sincronizao de Tarefas.

    O arranque de uma tarea at outra, no implica que a tarefa invocante fique

    detida.

    S se a tarefa arrancada efectuar processos cujos resultados tenham de ser

    processados pela tarefa invocante, esta ter de ser detida.

    A deteno pode fazer-se:

    Por espera de Tempo ( WAIT )

    Por espera de Sucesso ( EVENT )

    Por espera de Tempo.

    Se especfica uma suspenso da tarefa por um tempo determinado.

    EXEC CICS

    DELAY INTERVAL( hhmmss ) | INTERVAL( 0 ) | TIME( hhmmss )

    REQID('nome')

    END-EXEC

    O significado dos parmetros o mesmo que para START.

    Esta espera codifica-se depois de ter arrancado outra tarefa para parar a

    actual.

    A tarefa arrancada pode fazer terminar a espera da tarefa invocante com:

    EXEC CICS

    CANCEL REQID('nome')

    [ TRANSID('cdigo_de_transaco') ]

    END-EXEC

    REQID

    Comando a anular ( neste caso, DELAY ) e pode ter sido passado nos dados tarefa

    arrancada.

    TRANSID

  • Manual de CICS Pag. 48 / 52

    Identifica a transaco que deu o nome ao comando que se vai anular.

    conveniente especificar ambos para identificar de forma unvoca o comando.

    Por espera de Sucesso.

    Esta funo suporta-se por meio de dois comandos:

    POST

    WAIT EVENT

    EXEC CICS

    POST INTERVAL( hhmmss ) | INTERVAL( 0 ) | TIME( hhmmss )

    SET( puntero_ECA )

    [ REQID('nome') ]

    END-EXEC

    Este comando cria um bloco de comunicao chamado Event Control Area ou ECA, de

    quatro bytes de longitude de valor zero e inicia uma contagem de tempo.

    Quando o tempo fixado em INTERVAL | TIME tenha expirado, o CICS introduz no

    primeiro byte do ECA o valor 40.

    A sintaxe do comado exige a referncia SET (ponteiro), de modo que para este

    caso h que escrever uma lista BLL na LINKAGE SECTION do programa.

    O parmetro REQID servir para identificar o sucesso de ter estabelecido o ECA.

    Sem obstculo pelo facto de ter emitido um comando POST, a tarefa no se detm;

    se houver que det-la, h que executar o comando:

    EXEC CICS

    WAIT EVENT ECADDR( rea_ECA )

    END-EXEC

    que detm a tarefa at que o primeiro byte do bloco ECA passe de 0 a 40, ou

    seja, se cancele o POST.

    A cancelao do POST ocorre, parte da expirao do tempo:

    Se a tarefa termina

    Se a tarefa emite outro comando POST

    Se se emite um comando CANCEL utilizando o REQID.

    Este comando tem o mesmo formato que o j visto para o comando DELAY, e pode

    emiti-lo tarefa arrancada, para sinalizar que j terminou e ter que o CICS

    voltar a dar controle tarefa invocante

    Comandos especiais.

    ABEND

    Emprega-se para induzir terminaes anormais da tarefa:

  • Manual de CICS Pag. 49 / 52

    EXEC CICS

    ABEND ABCODE('cdigo')

    END-EXEC

    cdigo

    Tira de quatro caracteres eleio do programador, que pode indicar o ponto do

    programa em que se provoca a terminao anormal.

    BIF DEEDIT

    uma funo interna ( Build In Function) do CICS muito til quando se trabalha

    com campos numricos editados em mapas de entrada/sada, que podem acarretar

    problemas na recepo.

    EXEC CICS

    BIF DEEDIT FIELD( campo )

    [ LENGTH( n | identificador ) ]

    END-EXEC

    a actuao da funo :

    Suprimem-se do campo os caracteres no numricos.

    Os caracteres numricos escrevem-se juntos, da direita esquerda a partir do

    final do campo.

    As posies at ao incio do campo se reenchem com zeros.

    Se no se especfica LENGTH, tratam-se todas as posies do campo.

    Sadas impressas em CICS.

    Estam resolvidas na maioria das instalaes mediante uma lista TD que inicia por

    trigger uma transaco que se encarrega do envio dos dados impresso.

    Os programas do utilizador s tm de depositar os registos da impresso na

    lista.

    Hardcopy.

    Ao definir os terminais ao CICS, pode assinalar-se a uma tecla de funo, que

    suele ser uma das PAs, a funo de hardcopy.

    A impresso realiza-se sobre uma impressora associada a um terminal ou a um

    grupo de terminais.

    O comando ISSUE PRINT cumpre o mesmo cometido por programa.

    Notas.

    O buffer da impressora tem de ter capacidade para alojar ao buffer do cran.

    A impressora no pode estar associada a nenhuma tarefa.

  • Manual de CICS Pag. 50 / 52

    Sadas impressas desde BMS.

    Pode fazer-se impresses formatadas desde o BMS com uma variante do comando SEND

    MAP ao que se lhe juntam alguns parmetros:

    SEND MAP

    .....

    PRINT

    Lnn

    onde nn o nmero de linhas por pgina e pode tomar os valores 40, 64 e 80.

    Transaces de servio do CICS.-

    CSSN

    Sign-on do sistema.

    Deve executar-se se necessrio identificar-se, antes de poder executar

    qualquer outro programa do utilizador ou de servio. Retorna automaticamente ao

    CICS, se os dados que pede introduzem-se correctamente. Pode sair-se com F3.

    CEMT

    Executa mltiplas funes. Se o cdigo se digita sem parmetros, vai

    apresentando opes.

    Uma das mais usadas, INQUIRE ( I ), emprega-se para investigar o estado das

    entidades do CICS:

    CEMT I DAT

    Apresenta uma lista dos ficheiros que maneja o CICS, dando, entre outros dados o

    estado ( OPE | CLO ), que pode modificar-se movendo o cursor adequadamente.

    Utiliza-se para desenganchar ficheiros do CICS, p.ex. para recarreg-los.

    CEMT I PRO

    Apresenta uma lista dos programas do utilizador e grupos de mapa, dando, entre

    outros dados o seu estado ( ENA | DIS ), para indicar a disponibilidade do

    programa ou grupo. Emprega-se para dar de alta novas verses, pondo o cursor ao

    final da linha e teclando NEW.

    Nota.

    Os ficheiros que tenham sido fechados ou os programas que tenham sido

    desabilitados, retm o seu estado, ainda que se re-arranque o CICS.

    So vlidas referncias do tipo:

  • Manual de CICS Pag. 51 / 52

    CEMT I PRO( PROG* )

    para conseguir um display dos programas cujo nome comece por PROG.

    CEMT S PRO( PROG* ) N

    d de alta todos os programas cujo nome comece por PROG.

    Retorna ao CICS com F3.

    CSMT

    Teclando:

    CSMT NEW,PGRMID=programa

    d de alta a nova verso de programa.

    Retorna ao CICS com F3.

    CEDF

    Depurador on-line.

    Deve arrancar-se antes de comear a execuo do programa que se quer traar:

    CEDF o CICS responder: This terminal EDF-Mode on

    continuao introduz-se o cdigo do programa a traar.

    EDF apresenta um primeiro cran no qual aparecem as reas EIB e DFHCOMMAREA.

    EDF detm-se antes da execuo de cada comando CICS, permitindo mltiplas

    funes, entre elas:

    Modificar parmetros do comando

    Aceder, mediante a pulsao da tecla F5, imagem do programa em memria no

    momento actual. Podem modificar-se, por exemplo, dados de WORKING para canalizar

    a execuo da forma mais conveniente. Pode paginar-se dentro da imagem para a

    frente e para trs.

    Em relao com a modificao de dados de WORKING, convm fazer notar a

    dificuldade de encontrar esta num display em formato DUMP, parte em hexadecimal,

    parte em carcter, e de localizar um item determinado dentro dela. Certos

    truques, sem embarao, fazem este trabalho mais fcil.

    Os itens de WORKING com nveis 01 e 77 ensamblam-se fronteira de meia palavra

    ou palavra inteira; os demais, contguos.

    Por tanto escreva-se toda a WORKING empregando nveis do 02 em frente, na forma:

    WORKING-STORAGE SECTION.

    01 FILLER.

    03 FILLER PIC X(19) VALUE '** START WORKING **'.

    03 CAMPO1 PIC ...

    ..............

  • Manual de CICS Pag. 52 / 52

    com o qual:

    Localiza-se facilmente o incio da WORKING.

    Todos os dados seram contguos e basta com contar bytes de longitude para passar

    de um a outro.

    Uma vez executado o comando, EDF informa o resultado. Este resultado tambm pode

    modificar-se, bem para provocar o tratamento de uma condio excepcional, como

    para impedi-lo.

    Cancelar a execuo com a tecla F12.

    Retorna ao CICS com F3.

    CECI

    Permite a execuo de comandos CICS sem necessidade de programa.

    Primindo a tecla F5, acede-se a uma WORKING fictcia, na que se podem definir

    variveis, p.ex. para ler registos de um ficheiro.

    Retorna ao CICS com F3.

    CSSF

    Desconexo do CICS:

    CSSF LOGOFF