Você está na página 1de 74

CICS

____________________________________________________________________________________________ Verso 1 1

PROGRAMAO
COMMAND LEVEL

Participante : ___________________________________ Treinamento: ___________________________________ Perodo : ___________________________________ Sa a : ____________!or"rio: _______________ Instr#tores :____________________________________ ____________________________________

____________________________________________________________________________________________ Verso 1 $

Legenda dos Componentes Orientativos........................................................................................................................5 Introduo.......................................................................................................................................................................6 UNIDADE 1...................................................................................................................................................................7 UNIDADE .................................................................................................................................................................17 UNIDADE !................................................................................................................................................................. 6 UNIDADE "................................................................................................................................................................. # UNIDADE 5.................................................................................................................................................................!6 UNIDADE 6................................................................................................................................................................." UNIDADE 7................................................................................................................................................................."$ UNIDADE $.................................................................................................................................................................5" UNIDADE #.................................................................................................................................................................61 %&1'(EL% %& ')*I+C( (E,-C(A. %&!'+E./INA+E 0.O*)E..................................................................6$ UNIDADE 11...............................................................................................................................................................6# +.AN)AC+ION'U%D+ %.O2.A/'U%D+%2/ +A)3'11111!$ A%%LID'CIC+)+1 DI)%LA4'11....................6# )+A+U)' %.O2.A/ INI+IA+ION...........................................................................................................................6# EI0+I/E 5 1# 1"6.....................................................................................................................................................6# EI0DA+E 5 1 1$1......................................................................................................................................................6# EI0+.NID 5 6U%D+7..................................................................................................................................................6# EI0+A)3N 5 !$..........................................................................................................................................................6# EI0+./ID 5 6"6117...................................................................................................................................................6# EI0C%O)N 5 "............................................................................................................................................................6# EI0CALEN 5 1............................................................................................................................................................6# EI0AID 5 ,77D7 A+ ,7111"11EA7.....................................................................................................................6# EI0&N 5 ,711117 A+ ,7111"11E07....................................................................................................................6# EI0.CODE 5 ,71111111111117 A+ ,7111"11ED7..............................................................................................6# EI0D) 5 6........7...........................................................................................................................................................6# 8 EI0.E9ID 5 6........7..............................................................................................................................................6# EN+E.' CON+INUE...................................................................................................................................................6# %&1'UNDE&INED %& ')*I+C( (E,-C(A. %&!'END ED& )E))ION..............................................................6# +.AN)AC+ION'U%D+ %.O2.A/'U%D+%2/ +A)3'11111!$ A%%LID'CIC+)+1 DI)%LA4'11....................6# )+A+U)' A0OU+ +O E,ECU+E CO//AND........................................................................................................6# E,EC CIC) .EAD......................................................................................................................................................6# &ILE:6A.9117;............................................................................................................................................................6# IN+O:6 6...;.......................................................................................................6# LEN2+(:#1;................................................................................................................................................................6# .ID&LD:61111117;.......................................................................................................................................................6# E9UAL.........................................................................................................................................................................6# NO(ANDLE................................................................................................................................................................6# ......................................................................................................................................................................................6# O&&)E+',71117!E7 LINE'11 16 EI0&N5,7161 7.....................................................................................6# EN+E.' CON+INUE...................................................................................................................................................6# %&1'UNDE&INED %& ')*I+C( (E,-C(A. %&!'UNDE&INED.........................................................................6# +.AN)AC+ION'U%D+ %.O2.A/'U%D+%2/ +A)3'11111!$ A%%LID'CIC+)+1 DI)%LA4'11....................71 )+A+U)' CO//AND E,ECU+ION CO/%LE+E..................................................................................................71 E,EC CIC) .EAD......................................................................................................................................................71 &ILE:6A.9117;............................................................................................................................................................71 IN+O:6 6...;.......................................................................................................71 LEN2+(:#1;................................................................................................................................................................71 .ID&LD:61111117;.......................................................................................................................................................71 E9UAL.........................................................................................................................................................................71 NO(ANDLE................................................................................................................................................................71 ......................................................................................................................................................................................71 O&&)E+',71117!E7 LINE'11 16 EI0&N5,7161 7.....................................................................................71 .E)%ON)E' NO+&ND................................................................................................................................................71 EN+E.' CON+INUE...................................................................................................................................................71 %&1'UNDE&INED %& ')*I+C( (E,-C(A. %&!'END ED& )E))ION..............................................................71 +.AN)AC+ION'U%D+ %.O2.A/'U%D+%2/ +A)3'11111"6 A%%LID'CIC+)+1 DI)%LA4'11....................71 )+A+U)' A0OU+ +O E,ECU+E CO//AND........................................................................................................71 E,EC CIC) )END /A%.............................................................................................................................................71 /A%:6+E)+/%7;.........................................................................................................................................................71 &.O/:6................<................<........................7...;....................................................................................................71 LEN2+(:!1";..............................................................................................................................................................71

/A%)E+:6+E)+/)17;................................................................................................................................................71 +E./INAL..................................................................................................................................................................71 &.EE30.......................................................................................................................................................................71 E.A)E..........................................................................................................................................................................71 ......................................................................................................................................................................................71 O&&)E+',7111A0$7 LINE'11!1# EI0&N5,71$1"7....................................................................................71 EN+E.' CON+INUE...................................................................................................................................................71 %&1'UNDE&INED %& ')*I+C( (E,-C(A. %&!'UNDE&INED.........................................................................71 0i=>iogra?ia..................................................................................................................................................................7"

"

Legenda dos Componentes Orientativos.

DICA

LEIA

TOME NOTA

ATENO

CURIOSIDADE

Introduo

Este curso oferece uma viso geral de programao CICS, conceitos e comandos. Ao final deste curso voc estar apto a desenvolver programas CICS.

UNIDADE 1

Conceitos fundamentais e pseudo-conversao O @ue A CIC)B %ara @ue serveB Como desenvo>ver ap>iCaDesB Nessa primeira unidade veremos ConCeitos ?undamentais para ConEeCermos um pouCo do produto CIC)F assim Como a sintaGe dos Comandos neCessHrios para desenvo>ver uma ap>iCao CO0OL-CIC). +am=Am aprenderemos o ConCeito de programao %seudoIConversaCiona>F a ?orma mais moderna e vantaJosa de desenvo>ver ap>iCativos so= CIC). Customer Information Control System O CIC) A um produto @ue ?oi Criado em 1#6$ e trans?ormado em programaIproduto I0/ em 1#6#F na sua primeira verso. +rataIse de um monitor transaCiona> On>ineF ou seJaF um produto @ue gerenCia a eGeCuo de ap>iCaDes em tempo rea>. O CIC) A um produto mu>tiIusuHrio e mu>tiItasK :mu>tiItare?a;F portanto permite a eGeCuo ConCorrente de inLmeras ap>iCaDes de uma grande @uantidade de usuHrios. O CIC) A Composto de @uatro Hreas' %C+ M ta=e>a de Contro>e de transaDes +C+ M ta=e>a de Contro>e de terminais %%+ M ta=e>a de Contro>e de programas &C+ M ta=e>a de Contro>e de ar@uivos N)A/ A comunicao entre CICS %odemos ter uma LniCa regio de CIC) se tivermos uma Carga de tra=a>Eo pe@uenaF mas Caso a empresa tenEa um a>to nLmero de usuHrios e muito proCessamento on>ine a ser eGeCutado diariamenteF podemos ter diversas regiDes CIC) tra=a>Eando e distri=uindo a Carga atravAs de ?aCi>idades de ComuniCao. Um CIC) pode ComuniCarIse Com outros CIC) residentes na mesma C%UF em C%Us di?erentes e mesmo em >oCa>idades diversas do p>anetaF ?aCi>itando muito o proCessamento distri=uOdo.

Conceitos Dois ConCeitos ?undamentais para tra=a>Ear Com o CIC)' +ransao' A o CPdigo de 1 a " CaraCteres de?inido na %C+ :program Contro> ta=>e; do CIC)F e @ue representa o proCesso de uma ap>iCao. Uma transao sempre ?iCa amarrada a um programa de ap>iCaoF @ue A o proCessado @uando a transao A eGeCutada. 9uase sempre a transao tra=a>Ea assoCiada a um termina>F JH @ue o CIC) A um produto @ue proCessa ap>iCaDes em tempo rea>. Esse termina> A denominado Qtermina> assoCiado R transaoS. +asK' A a unidade de tra=a>Eo do CIC)F ou para ser mais eGatoF A a eGeCuo de uma transao. %odemos ter diversos usuHrios eGeCutando a mesma transao em vHrios terminais. Cada eGeCuo A denominada +asK.

Executando transaes 9uando o usuHrio CEama uma transao a partir de um termina> ConeCtado ao CIC)F imediatamente A veri?iCado se essa transao estH Cadastrada na ta=e>a %C+. )e estiverF um =>oCo de Contro>e denominado +CA :+asK Contro> Area; A Criado e vai eGistir durante a eGeCuo da tasK. AtravAs da %C+ o CIC) sa=e @ua> o programa assoCiado R transaoF e veri?iCa se esse programa estH Cadastrado na ta=e>a %%+ :%roCessing %rogram +a=>e;. )e estiver tudo o.K.F a tasK A eGeCutada. Execuo concorrente de tasks Como dissemosF para Cada eGeCuo de transao :tasK;F A Criado um =>oCo de Contro>e CEamado +CA. %ortantoF se tivermos vHrias tasKs da mesma transaoF teremos vHrias +CAsF uma para Cada tasK. EntretantoF o CIC) no Carrega na memPria vHrias CPpias de um mesmo programa. Apenas uma CPpia do programa A Carregada e uti>iTada por todas as tasKs. A *O.3IN2I)+O.A2E tem @ue ter uma CPpia para Cada tasKF JH @ue e>a A uti>iTada Com dados di?erentes para Cada usuHrio. A +CA A o ponto ?oCa> da tasKF JH @ue todas as Hreas so enCadeadas a partir de>a. Cada tasK terH tam=Am uma Hrea denominada EI0 :EGeC Inter?aCe 0>oCK;F @ue traT uma sArie de in?ormaDes muito Lteis para nossos programas. Formato dos comandos E,EC CIC) .ECEINE IN+O:&LDA; LEN2+(:*ILEN; ENDIE,EC

1 1 IU 3E4*O.D) IU &UNVWO ! IU O%VWO " IU A.2U/EN+O 5 IU O%VWO 6 IU A.2U/EN+O 7 IU DELI/I+ADO.

"

Um Comando CIC) A ?ormado pe>a estrutura mostrada aCima' As KeXYords E,EC CIC) A ?uno so>iCitada :sendF reCeiveF ...; As opDes Com seus respeCtivos argumentos %ara CO0OLF o de>imitador ENDIE,EC. Argumentos DataIva>ue %iC s#:1"; Comp %iC s#:1$; Comp

%iC G:15; Constantes permitidas DataIarea CO0OL data name No Constante Name CO0OL data name Constantes permitidas La=e> (Emmss %ointerIre? Nome de parHgra?o %iC s#:17; CompI! 0LL Ce>> Usage pointer O @uadro aCima mostra os di?erentes tipos de dados no Co=o> para Cada tipo de argumento dos Comandos CIC). Comandos )END .ECEINE Comandos de ?ormatao de data e Eora A)3+I/E &O./A++I/E Comandos de tArmino de programa .E+U.N !sicos Comandos de termina> Contro>

Comando RECEIVE
*O.3IN2I)+O.A2E )EC+ION. 77 *ILEN %IC )#:1"; CO/%. A.EAIIN%U+. 1 CODI+.AN) %IC ,:1";. 1 &ILLE. %IC ,:11;. 1 )OLICI+ %IC ,:1";. ..................... PROCEDURE DIVISION. /ONE # +O E,EC CIC) .ECEINE *ILEN IN+O:A.EAIIN%U+; LEN2+(:*ILEN; ENDIE,EC.

O Comando .ECEINE serve para traTer para a memPria do CIC) e do programa os dados @ue ?oram digitados pe>o usuHrio no termina>. Os dados norma>mente so reCe=idos na *O.3IN2I)+O.A2E do programa. A opo LEN2+( espeCi?iCa o tamanEo mHGimo permitido para a reCepo dos dados. A partir do CO0OL IIF o LEN2+( deiGou de ser neCessHrio. O Co=o> assume @ue o tamanEo mHGimo dos dados A o tamanEo da Hrea espeCi?iCada na opo IN+O.

3.9.1.1 Condies de Exceo - RESP


*O.3IN2I)+O.A2E )EC+ION. 77 *ILEN %IC )#:1"; CO/%. 77 *IE.. %IC )#:1$; CO/%. A.EAIIN%U+. CODI+.AN) %IC ,:1";. 1 &ILLE. %IC ,:11;. 1 )OLICI+ %IC ,:1";. 11 /)2 %IC ,:$1;. .................... %.OCEDU.E DINI)ION. /ONE # +O *ILEN E,EC CIC) .ECEINE IN+O :A.EAIIN%U+; LEN2+( :*ILEN; .E)% :*IE..; ENDIE,EC. I& %&'RR E9UAL /ONE 6/A, # CA.AC+E.E)7 +O ()!R'SP*+',G'RR/)2 .....

A opo .E)% nos Comandos ?aT Com @ue o CIC) no manuseie as CondiDes de eGCeo. O CIC) simp>esmente armaTena no Campo indiCado o tipo de eGCeo e o programa deve veri?iCar se o Comando o=teve suCesso ou no.

EX !E"A"E# E I"$%! A# E &E!I'ICA! EXCE()ES E" C%"A#*%S CICS.

Comando SEND
*O.3IN2I)+O.A2E )EC+ION. 77 *ILEN 77 *IE.. A.EAIIN%U+. CODI+.AN) %IC )#:1"; CO/%. %IC )#:1$; CO/%. %IC ,:1";.

11

1 &ILLE. 1 )OLICI+ 11 /)2 ................................ %.OCEDU.E DINI)ION. /ONE # E,EC CIC) .ECEINE

%IC ,:11;. %IC ,:1";. %IC ,:$1;. +O *ILEN IN+O :A.EAIIN%U+; LEN2+( :*ILEN; .E)% :*IE..; ENDIE,EC.

*IE.. E9UAL D&(.E)%:LEN2E..; /ONE 6/A, # CA.AC+E.E)7 +O /)2 E,EC CIC) )END &.O/ :/)2; LEN2+( :51; ENDIE,EC E,EC CIC) .E+U.N ENDIE,EC.

I&

O Comando )END serve para enviar dados ao termina> do usuHrio. A in?ormao A gravada na te>a do termina> a partir do ponto onde o Cursor ?iCou posiCionado. O Comando .E+U.N serve para terminar a ap>iCao e devo>ver o Contro>e ao CIC).

Posicionamento de Cursor
*O.3IN2I)+O.A2E )EC+ION. 77 *ILEN 77 *IE.. 11 A.EAIIN%U+. 1 CODI+.AN) 1 &ILLE. 1 )OLICI+ 11 /)2 ...................... %.OCEDU.E DINI)ION. /ONE # E,EC CIC) .ECEINE %IC )#:1"; CO/%. %IC )#:1$; CO/%. %IC ,:1";. %IC ,:11;. %IC ,:1";. %IC ,:$1;. +O *ILEN IN+O :A.EAIIN%U+; LEN2+( :*ILEN; .E)% :*IE..; ENDIE,EC. E9UAL +O /)2 CU.)O.:1$"1;

*IE.. D&(.E)%:LEN2E..; /ONE 6/A, # CA.AC+E.E)7 E,EC CIC) )END CON+.OL

I&

11

ENDIE,EC E,EC CIC) )END &.O/ :/)2; LEN2+( :51; ENDIE,EC E,EC CIC) .E+U.N ENDIE,EC.

O Comando )END CON+.OL estH sendo uti>iTado nesse momento para posiCionar o Cursor na primeira posio da >inEa " do termina>F JH @ue norma>mente uma te>a de termina> tem " G $1 :1# 1 posiDes;. %ortantoF a mensagem enviada pe>o Comando )END ?iCarH posiCionada na >inEa " do termina> do usuHrio.

ormatao de Data e !ora


*O.3IN2I)+O.A2E )EC+ION. 77 *ILEN 77 *IE.. 77 *IA0) *IDA+AI). &ILLE. 1 *IDA+A *I(O.AI). &ILLE. 1 *I(O.A 11 A.EAIIN%U+. 1 CODI+.AN) 1 &ILLE. 1 )OLICI+ 11 /)2 .................... %.OCEDU.E DINI)ION. /ONE # E,EC CIC) .ECEINE %IC )#:1"; CO/%. %IC )#:1$; CO/%. %IC )#:15; CO/%I!. %IC ,:!1; NALUE 6DA+A DE (OZE' 6. %IC ,:1$;. %IC ,:!1; NALUE 6(O.A CE.+A' 6. %IC ,:1$;. %IC ,:1";. %IC ,:11;. %IC ,:1";. %IC ,:$1;.

I&

+O *ILEN IN+O :A.EAIIN%U+; LEN2+( :*ILEN; .E)% :*IE..; ENDIE,EC. I& *IE.. E9UAL D&(.E)%:LEN2E..; /ONE 6/A, # CA.AC+E.E)7 +O /)2 E,EC CIC) )END CON+.OL CU.)O.:1$"1; ENDIE,EC E,EC CIC) )END &.O/ :/)2; LEN2+( :51; ENDIE,EC E,EC CIC) .E+U.N ENDIE,EC. )OLICI+ E9UAL 6DA+A7

E,EC CIC) A)3+I/E E,EC CIC)

E,EC CIC) E,EC CIC) E,EC CIC) )OLICI+ E,EC CIC) E,EC CIC)

I&

E,EC CIC) E,EC CIC)

A0)+I/E :*IA0); ENDIE,EC &O./A++I/E A0)+I/E :*IA0); DA+E)E% DD//44 :*IDA+A; ENDIE,EC )END CON+.OL CU.)O.:1$"1; ENDIE,EC )END &.O/ :*IDA+AI); LEN2+( :"1; ENDIE,EC .E+U.N ENDIE,EC. E9UAL 6(O.A7 A)3+I/E A0)+I/E :*IA0); ENDIE,EC &O./A++I/E A0)+I/E :*IA0); +I/E)E% +I/E :*I(O.A; ENDIE,EC )END &.O/ :*I(O.AI); LEN2+( :"1; ENDIE,EC .E+U.N ENDIE,EC.

A ap>iCao reCe=erH o tipo de so>iCitao do usuHrioF proCessarH Con?orme ?or a neCessidade e devo>verH a resposta ao termina>. %ortantoF uma tOpiCa :em=ora simp>es; ap>iCao CIC)' reCe=e a so>iCitaoF proCessaF devo>ve a resposta para o usuHrio e termina. O Comando A)3+I/E in?orma ao programa o momento eGatoF e a partir daO podemos uti>iTar o &O./A++I/E para editar a data e Eora de aCordo Com a pre?er[nCia do usuHrio.

*atesep+ fa, a separao com -./ da data. Se colocarmos argumento *A ESE$ 0-./1 para a separao, formatar a data dd.mm.2222

Exec Interface "lock #EI"$ EI0+I/E EI0DA+E EI0C%O)N EI0AID EI0CALEN EI0+.NID EI0+./ID EI0&N (ora Data :Ju>iano; %osio do Cursor +eC>a pressionada :enterF p?F ...; +amanEo da Commarea CPdigo da transao +ermina> assoCiado \>tima ?uno eGeCutada

1!

EI0.E)% . .

.esponse Code

O EI0 :EGeC Inter?aCe 0>oCK; A uma Hrea @ue ?iCa na LIN3A2E )EC+ION de nosso programa e traT uma sArie de in?ormaDes @ue podem e devem ser uti>iTadas a @ua>@uer momento para ?aCi>itar nosso tra=a>Eo. ACimaF esto a>gumas das in?ormaDes @ue Constam do EI0. Compilao de %rogramas %ara preparar um programa CO0OL-CIC)F so neCessHrias tr[s ?ases na %.OCEDU.E de Compi>ao' +ransa>ator' A um prAIproCessador ?orneCido Com o CIC)F e @ue serve para traduTir os Comandos E,EC CIC) para /ONEs e CALLsF JH @ue o Compi>ador Co=o> no reConEeCe E,EC CIC). O trans>ator tam=Am inC>ui a>gumas Hreas de tra=a>Eo na *O.3IN2 e na LIN3A2EF entre e>as o EI0] Compi>ador Co=o>' para Compi>ar o programa] LinKage Editor' trans?orma em mPdu>o eGeCutHve> e Cata>oga em uma =i=>ioteCa de programas. Conversacional x %seudo-conversacional EGistem duas ?ormas de programao so= CIC)' ConversaCiona>' A uma tACniCa antiga @ue pratiCamente no estH sendo uti>iTadaF uma veT @ue Consome muitos reCursos do sistemaF e vai Contra a ?i>oso?ia do CIC)F @ue A de ap>iCaDes @ue proCessem rapidamente e Consumam pouCos reCursos. Essa tACniCa Consiste em proCessar os dados reCe=idos do usuHrioF devo>ver a respostaF e aguardar para reCe=er novas so>iCitaDes. %seudoIConversaCiona>' A a tACniCa mais uti>iTadaF mais moderna e mais e?iCiente de programao. A ap>iCao reCe=e a so>iCitao do usuHrioF proCessaF envia a resposta e terminaF >i=erando pratiCamente todos os reCursos. Ao terminarF a ap>iCao enCadeia uma nova eGeCuo da transaoF Como veremos a seguir. %seudo-conversacional ApPs enviar a resposta ao usuHrio :)END;F o programa termina atravAs do Comando .E+U.NF enCadeando uma nova eGeCuo da mesma transao M +.AN)ID :6&A+17;. Isso signi?iCa @ue a tasK terminarHF os reCursos sero >i=eradosF mas @uando o usuHrio teC>ar EN+E.F %&sF %AsF ou CLEA.F uma nova tasK da mesma transao serH eGeCutada. %ortantoF o usuHrio terH a sensao de uma ConversaoF mas estarH oCorrendo uma pseudoI Conversao. %assagem de dados para pr&xima task %ara enviar dados para a prPGima tasKF uti>iTamos uma Hrea de ComuniCao CEamada CO//A.EA. Essa Hrea serH passada atravAs de uma Hrea de *O.3IN2I)+O.A2E no programa e pode ter @ua>@uer nome. Na prPGima eGeCuoF os dados passados sero reCe=idos em uma Hrea reservada do programaF >oCa>iTada na LIN3A2E )EC+ION e CEamada D&(CO//A.EA :nome reservado;. A Hrea transmitida deve ter o mesmo tamanEo em sua reCepo na D&(CO//A.EA. Na primeira eGeCuo da transao no podemos uti>iTar a D&(CO//A.EAF pois e>a ainda no eGiste. E>a eGistirH a partir da segunda eGeCuoF Com os dados reCe=idos. Como sa=eremos se estamos proCessando a transao pe>a primeira veTB A resposta para esta

1"

importante @uesto estH em um Campo do EI0 denominado EI0CALEN :Commarea LengtE;. Na primeira eGeCuo da transaoF o EI0CALEN estarH Com va>or TeroF e nas demais eGeCuDes estarH maior @ue Tero. %seudo-Conversacional ' utili(ando commarea IDEN+I&ICA+ION DINI)ION. %.O2.A/IID. &A+1%2/. *O.3IN2I)+O.A2E )EC+ION. *ICO//. C(1 %IC ,:11; NALUE 6N7. 1 9+D %IC #:1#;. LIN3A2E )EC+ION. D&(CO//A.EA. "# $-C!1 PIC %&"1'. 1 LI9+D %IC #:1#;. %.OCEDU.E DINI)ION. I& EI0CALEN E9UAL ^E.O) /ONE5111 +O 9+D E,EC CIC) .E+U.N +.AN)ID :6&A+17; CO//A.EA:*ICO//; LEN2+( :11; ENDIE,EC. /ONE LIC(1 +O ..... /ONELI9+D +O ..... Na primeira eGeCuoF no eGiste a D&(CO//A.EAF portantoF o EI0CALEN estarH TeradoF e passaremos dados atravAs de uma Hrea de *O.3IN2I)+O.A2E. A partir da segunda eGeCuoF teremos D&(CO//A.EAF portanto podemos uti>iTar os dados reCe=idos na D&(CO//A.EA. Dessa ?orma Conseguimos ComuniCao tota> entre as tasKs da mesma transao eGeCutadas pe>o usuHrio.

C%""A!EA 3 *'4C%""A!EA A c5ave da pseudo6conversao esta na Communication Area. #a primeira e3ecuo EI7CA8E# ,ero utili,ar Commarea na 9%!:I#;6S %!A;E para passagem de dados. #as demais e3ecu<es EI7CA8E# maior =ue ,ero dados rece>idos em 8I#:A;E SEC I%# na *'4C%""A!EA.

C)")* so CICS ' +estries IDEN+I&ICA+ION DINI)ION. %.O2.A/IID. ENNI.ON/EN+ DINI)ION. 15

CON&I2U.A+ION )EC+ION. X IN%U+IOU+%U+ )EC+ION. DA+A DINI)ION. X &ILE )EC+ION. *O.3IN2I)+O.A2E )EC+ION. LIN3A2E )EC+ION. %.OCEDU.E DINI)ION. )o= CIC) no uti>iTamos IN%U+IOU+%U+ )EC+ION e &ILE )EC+ION. 9uem gerenCia os ar@uivos A o CIC)F e no o programa de ap>iCao. CO0OL II ACCE%+ DI)%LA4 CLO)E O%EN .EAD *.I+E .E*.I+E DELE+E O)-CO0OL ACCE%+ DI)%LA4 E,A/INE E,(I0I+ )+O% .UN IN)%EC+ )+.IN2 +I/E +.AN)&O./ UN)+.IN2 CLO)E O%EN .EAD *.I+E

)o= CIC) no podemos uti>iTar instruDes CO0OL @ue so>iCitem servio direto ao )istema OperaCiona>. ApPs eGeCutarmos uma transao no CIC)F Caso tenEa oCorrido a>guma modi?iCao no programa de ap>iCao e e>e tenEa sido reCompi>adoF teremos @ue in?ormar ao CIC) @ue uma nova CPpia deve ser Carregada na memPria. %ara tantoF uti>iTamos a transao de /aster +ermina> M CE/+. CE/+ )E+ %.O2:name; NE*CO%4 OU CE/+ )E+ %.O2:name; %(A)EIN

16

UNIDADE 2

"ASIC ,A%%I-. S/%%)+0 Nessa unidade veremos mapasF @ue so te>as de termina> Compostas de diversos Campos de dados ?ormatadosF isto AF Com posio ?iGa na te>a. AtravAs dos mapas tornaIse muito mais simp>es tra=a>Earmos Com apresentao de dados ao usuHrio atravAs de nossos programas de ap>iCao. A ?aCi>idade @ue o CIC) ?orneCe para tra=a>Earmos Com mapas CEamaIse 0/) :0asiC /apping )upport;. 0asiC /apping )upport :0/); uti>iTa dados ?ormatados :mapas; Campos Constantes e variHveis inter?aCe muito mais atrativa para o usuHrio Um mapa norma>mente A Composto por Campos Constantes e variHveisF @ue ?aTem uma inter?aCe =astante atrativa para o usuHrio ?ina>. Cada Campo tem atri=utos prPpriosF visando ?aCi>itar o tra=a>Eo do usuHrio. 1efinio de mapas %ara deCidir Como sero os mapas :te>as de termina>; de determinada ap>iCao CIC)F A neCessHrio @ue o ana>ista responsHve> pe>a ap>iCao ?aa uma reunio Com os usuHrios ?inaisF a ?im de sa=er @uais so suas neCessidades de in?ormaDes. A partir desse pontoF serH neCessHrio ?aTer a de?inio dos mapas seguida de sua gerao. NO/E' Campos 2345 1 ! " 5 6 . . ENDE.EVO' C%&' NO. CON+A'

stopper :de>imitador;

17

. . " Um mapa A Composto por Campos ?ormatados ! 71. Cada Campo tem uma posio ?iGa no =u??er do termina> :te>a;F e A de>imitado por atri=utos. Um atri=uto oCupa o espao de um =Xte na te>a do termina>F mas seu ConteLdo no A visOve>F JH @ue estamos tratando do Contro>e das CaraCterOstiCas do Campo. Campos formatados 2345 Campos %osiC. Cursor protegidos

de>imitadores

NO/E' ` C%&' NO. CON+A' Constantes numeriC ?ie>ds Campos protegidos

A ?igura aCima mostra o eGemp>o de um mapa. Esse mapa A ?ormado por Constantes e variHveisF e Cada Campo tem seu atri=uto. Os Campos Constantes gera>mente tem atri=uto protegido. Os Campos variHveisF @uando servirem para entrada de dadosF devem ter atri=uto desprotegido. Os Campos numAriCos neCessitam ter atri=uto numAriCoF para impedir @ue o usuHrio digite CaraCteres no numAriCos. Os de>imitadores so Campos de 1 =XteF Compostos apenas pe>o atri=uto QasKipSF e servem para de>imitar o tamanEo do Campo onde o usuHrio digitarH in?ormaDes. A+.I0U+O)' UN%.O+EC+ED-%.O+EC+ED :UN%.O+-%.O+;' usuHrio pode ou no digitar in?ormaDes. A)3I%' Campo protegido e o Cursor no pode ser posiCionado ne>e. NU/' dependendo do EardYareF permite ao usuHrio digitar apenas dados numAriCos. NO./AL-0.I2(+-DA.3 :NO-0.+-D.3;' Campo Com intensidade norma>F =ri>Eante ou invisOve>. /D+ ON-O&&' se o /D+ :/odi?ied Data +ag; de um Campo estiver >igadoF o ConteLdo desse Campo serH transmitido para o programa. )e estiver des>igadoF o ConteLdo no serH transmitido para o pgm. 1efinindo um mapa +E)+/)1 D&(/)D +4%E5_)4)%A./F/ODE5INOU+FLAN25CO0OL , +IOA%&,54E)F)+O.A2E5AU+O +E)+/% D&(/DI )I^E5: "F$1;FLINE51FCOLU/N51 1$

D&(/D& %O)5:!F1;FLEN2+(55FINI+IAL57NO/E'7FA++.I05A)3I% D&(/D& %O)5:!F7;FLEN2+(5!1FA++.I05:UN%.O+FIC; D&(/D& %O)5:!F!$;FLEN2+(51FA++.I05A)3I% D&(/D& %O)5:5F1;FLEN2+(5"FINI+IAL57END'7FA++.I05A)3I% ENDE. D&(/D& %O)5:5F6;FLEN2+(5"1FA++.I05UN%.O+ D&(/D& %O)5:5F"7;FLEN2+(51FA++.I05A)3I% D&(/D& %O)5:7F1;FLEN2+(5"FINI+IAL57C%&'7FA++.I05A)3I% C%& D&(/D& %O)5:7F6;FLEN2+(511FA++.I05:UN%.O+FNU/; D&(/D& %O)5:7F1$;FLEN2+(51FA++.I05A)3I% /)2 D&(/D& %O)5: "F1;FLEN2+(571FA++.I05A)3I% D&(/)D +4%E5&INAL END NO/E Um /A%)E+ pode Conter vHrios /A%A)F mas muitas veTes ContAm apenas 1 mapa. No podemos de?inir um /A%A sem de?inir tam=Am o /A%)E+. %ara ?aTer a de?inio A neCessHrio uti>iTarmos as maCros 0/) @ue o CIC) ?orneCe. As maCros so' D&(/)D' de?ine o mapset] D&(/DI' de?ine o mapa] D&(/D&' de?ine Campos no mapa. O eGemp>o aCima mostra a de?inio de um /A%)E+ CEamado +E)+/)1. Nesse /A%)E+ temos apenas um /A%A de?inido M +E)+/%. Em seguidaF temos as de?iniDes dos Campos do /A%A.

% atri>uto IC, indica =ue neste campo ? =ue deve ser posicionado o cursor. Apenas um campo em cada mapa deve conter este atri>uto.

$odemos utili,ar par@metros para definir a picture de edio do campo e tam>?m para alin5amento e valori,ao de caracteres no preenc5idos. $IC%A B-CC/ demonstrar para o usurio o campo com esta edio. DAS I'EB08E' ,78A#:1 ou DAS I'EB0!I;4 ,FE!%1 alin5ar o campo G es=uerda ou G direita e valori,ar os caracteres no preenc5idos com >rancos ou ,eros.

1#

Se =uisermos inserir neste "apset mais um "apa devemos colocar outro *'4"*I antes do *'4"S* E$EB'I#A8.

Compilao de um mapa ApPs de?inir o /apset-/apaF temos @ue ?aTer sua gerao. Isso A ?eito atravAs da Compi>ao do /apsetF atravAs de uma %.OCEDU.E. Essa Compi>ao A ?eita em duas ?ases' 1a ?ase' Compi>ao e >inKedio resu>tando em um mPdu>o eGeCutHve> assem=>erF @ue A Cata>ogado em uma =i=>ioteCa de programas. Esse mPdu>o A CEamado de /apa &OsiCoF Composto pe>as in?ormaDes de?inidas nas maCros. Assim Como os programasF os mapas ?OsiCos dever ser de?inidos na %%+ do CIC)]
a

?ase' Compi>ao das maCrosF resu>tando no /apa )im=P>iCoF @ue na verdade A o CopX=ooK Co=o> re?erenCiando os Campos @ue sero uti>iTados no programa. Durante a Compi>ao do programaF o CO%4 6nomeIdoImapset7 Co>oCado na *O.3IN2I )+O.A2E eGpande o /apa )im=P>iCoF para podermos re?erenCiar os Campos do mapa. Durante a eGeCuo do programaF @uando A emitido um Comando para reCe=er ou enviar um mapaF o /apa ?OsiCo A eGeCutado. A seguir veremos o resu>tado da eGpanso do CO%4 +E)+/)1 Codi?iCado na *O.3IN2 do programa. %erCe=am @ue todos os Campos @ue ?oram de?inidos Com >a=e> no 0/) apareCem no CopX=ooK gerado. /apa )im=P>iCo CO%4 +E)+/)1.

,apas e %rogramas

+E)+/%I. &ILLE. %IC ,:1 ;. 1 NO/EL %IC )#:1"; CO/%. 1 NO/E& %IC ,:11;. 1 &ILLE. .EDE&INE) NO/E&. 1! NO/EA %IC ,:11;. 1 NO/EI %IC ,:!1;. 1 ENDE.L %IC )#:1"; CO/%. 1 ENDE.& %IC ,:11;. 1 &ILLE. .EDE&INE) ENDE.&. 1! ENDE.A %IC ,:11;. 1 ENDE.I %IC ,:"1;. 1 C%&L %IC )#:1"; CO/%. 1 C%&& %IC ,:11;. 1 &ILLE. .EDE&INE) C%&&. 1! C%&A %IC ,:11;. 1 C%&I %IC ,:11;. 1

1 /)2L %IC )#:1"; CO/%. 1 /)2& %IC ,:11;. 1 &ILLE. .EDE&INE) /)2&. 1! /)2A %IC ,:11;. 1 /)2I %IC ,:71;. +E)+/%O .EDE&INE) +E)+/%I. &ILLE. 1 &ILLE. 1 NO/EO 1 &ILLE. 1 ENDE.O 1 &ILLE. 1 C%&O %IC 1 &ILLE. 1 /)2O %IC %IC %IC %IC %IC %IC ,:1 ;. ,:1!;. ,:!1;. ,:1!;. ,:"1;. %IC ,:1!;.

,:11;. %IC ,:1!;. ,:71;.

I+ L+ F+ A+ O+

I#$A A"A#4% *% CA"$% !ECE7I*% '8A; X/HH/ %A X/IH/ A !I7A % %A $A

Como o mapa ?oi de?inido Como IN%U+-OU+%U+F a Hrea +E)+/%I A rede?inida Com o nome +E)+/%O :I5input-O5output;. Cada Campo apareCe 5 veTesF Com su?iGos di?erentes. +omando Como eGemp>o o Campo nomeF temos' NO/EL' :L5LEN2+(; esse Campo serH a>imentado pe>o CIC) Com o tamanEo do ConteLdo digitado pe>o usuHrio em uma operao de Input] NO/E&' :&5&LA2; em uma operao de InputF esse Campo poderH ter o ConteLdo ,7117 ou ento ,7$17 se o usuHrio digitar in?ormaDes no Campo e em seguida apagar essa in?ormao uti>iTando a teC>a E.A)E EO&] NO/EI' :I5IN%U+; armaTena o ConteLdo pe>o usuHrio no Campo] NO/EA' :A5A+.I0U+O; A o Campo @ue podemos a>terar o atri=uto de?au>t de um Campo em uma operao de Output] NO/EO' :O5OU+%U+; ContAm a in?ormao @ue @ueremos enviar para o termina> do usuHrio.

J K 8impar a tela no ? movimentar spaces. L K "ovimentar loM6values ? manter os campos da tela. N K $ara ligar "* atri>uto B 'SE

Enviando ,apas

Send (a)

O Comando )END /A% A uti>iTado para enviar um mapa ao termina> do usuHrio. Como podemos ter mais de um mapa em um mapsetF temos @ue in?ormar o nome do mapa e tam=Am do mapset. O )END /A% pega os dados do mapa sim=P>iCo :*O.3IN2;F agrega ao mapa ?OsiCo e envia para o termina> do usuHrio. E,EC CIC) )END /A%:6+E)+/%7; /A%)E+:6+E)+/)17; ENDIE,EC.

*)es
As opDes /A%ONL4 e DA+AONL4 servem para eConomiTar transmisso de dados durante uma operao de envio de mapas. /A%ONL4 ?aT Com @ue o CIC) envie para o termina> do usuHrio apenas o mapa ?OsiCoF ignorando o ConteLdo do mapa sim=P>iCo. %or eGemp>oF o mapa enviado durante a primeira eGeCuo de uma transao :mapa >impo;] DA+AONL4 ?aT Com @ue o CIC) envie para o termina> apenas os dados do mapa sim=P>iCoF ?aTendo um Qre?resES no termina> do usuHrioF JH @ue o mapa ?OsiCo ?oi enviado na primeira eGeCuo da transao. 1; E,EC CIC) )END /A%:6+E)+/%7; /A%)E+:6+E)+/)17; /A%ONL4 ENDIE,EC. No eGemp>o aCima estamos enviando apenas o mapa ?OsiCoF no estamos enviando dados. ; E,EC CIC) )END /A%:6+E)+/%7; /A%)E+:6+E)+/)17; DA+AONL4 ENDIE,EC. ZH neste eGemp>o estamos enviando apenas o mapa sim=P>iCo. %ara mantermos atri=utosF devemos mover >oYIva>ues para os Campos atri=utos e os demais :+E)+/%O; e enviar DA+AONL4. !; E,EC CIC) )END /A%:6+E)+/%7; /A%)E+:6+E)+/)17; &.O/:+E)+/%O; ENDIE,EC.

Neste eGemp>o ! estamos enviando os dados de output.

";

IDEN+I&ICA+ION DINI)ION. %.O2.A/IID. &A+1%2/. *O.3IN2I)+O.A2E )EC+ION. CO%4 +E)+/)1. LIN3A2E )EC+ION. 11 D&(CO//A.EA %IC ,:11;. %.OCEDU.E DINI)ION. I& EI0CALEN E9UAL ^E.O) /ONE 6DI2I+E DADO)7 +O /)2O E,EC CIC) )END /A% :6+E)+/%7; /A%)E+ :6+E)+/)17; &.O/ :+E)+/%O; E.A)E ALA./ &.EE30 ENDIE,EC.

O eGemp>o aCima mostra o envio de um mapa para o termina> do usuHrio durante a primeira eGeCuo da transao :1a ?ase da pseudoIConversao;. A opo E.A)E serve para >impar a te>a do termina> antes de enviar o mapa. A opo &.EE30 ?aT Com @ue o teC>ado do termina> seJa >i=erado >ogo apPs o envio do mapa. A opo ALA./ ?aT som @uando starta a te>a. Nesse eGemp>o a opo /A%ONL4 no pode ser uti>iTada pois @ueremos @ue o ConteLdo do Campo /)2O seJa enviado ao usuHrio Juntamente Com o mapa ?OsiCo.

$ara posicionar o cursor no meio do programa, devemos mover 0KJ1 para o campo 8 e colocar o par@metro CA!S%! no comando SE#*.

Ouando for especificado o par@metro CA!S%! no comando SE#*, e no mapa e3iste um campo com atri>uto IC, prevalecer o posicionamento especificado no SE#*.

+ece endo ,apas ' +eceive ,ap IDEN+I&ICA+ION DINI)ION. !

%.O2.A/IID. &A+1%2/. *O.3IN2I)+O.A2E )EC+ION. 77 *IE.. %IC )#:1$; CO/%. A.9I.E2. .E2INO/E %IC ,:!1;. .... CO%4 +E)+/)1. %.OCEDU.E DINI)ION. E,EC CIC) .ECEINE /A% :6+E)+/%7; /A%)E+ :6+E)+/)17; IN+O :+E)+/%I; .E)% :*IE..; ENDIE,EC. I& *IE.. E9UAL D&(.E)%:/A%&AIL; %E.&O./ +.A+AI/A%&AIL. IF NOMEL NOT EQUAL ZEROS /ONENO/EI +O .E2INO/E.

O Comando uti>iTado para reCe=er mapas A o .ECEINE /A%. Assim Como no )END /A%F devemos in?ormar o nome do mapa e do mapset.

estar sempre a possi>ilidade da condio de e3ceo "A$'AI8 durante um !ECEI&E "A$. Ela pode ocorrer nas seguinte situa<es+ tela do terminal em >ranco 0limpa1 no momento do !ECEI&E "A$ 0 taman5o H1 tela do terminal com um mapa, por?m nen5um campo com "* %# 0taman5o H1 mapa com campos "* %#, por?m o usurio tecla C8EA! ou $As contePdo da tela do terminal composto de dados no formatados no momento do !ECEI&E "A$.

,anuseio de teclas e atri utos %ara podermos a>terar atri=utos e testar teC>as em um programaF o CIC) ?orneCe dois CopX=ooKs @ue podem ser inC>uOdos na *O.3IN2I)+O.A2E' D&(0/)CA' ContAm uma sArie de Campos Com todas as Com=inaDes possOveis de atri=utos de Campos. Dessa ?ormaF podemos a>terar o atri=uto de?au>t movendo uma das Com=inaDes para o Campo Com su?iGo A] D&(AID' ContAm uma >ista Com teC>as :EN+E.F %&sF %AsF CLEA.F...; para podermos testar no programa. /ostraremos a=aiGo um eGemp>o de Codi?iCao. Note @ue o primeiro teste ?eito no programa A o da teC>a %&!. )e essa teC>a ?or aCionadaF a pseudoIConversao termina.

"

Em seguidaF estH sendo testado se a transao estH sendo eGeCutada pe>a primeira veT. Em Caso positivoF um mapa >impo :/A%ONL4; estH sendo enviado ao termina> do usuHrio e a tasK termina enCadeando uma pseudoIConversao e passando uma Commarea. )e no ?or a primeira eGeCuo da transaoF A ?eito um .ECEINE /A% para reCe=er os dados digitados pe>o usuHrio. No .ECEINE /A%F se oCorrer um /A%&AILF uma mensagem in?ormativa A enviada ao usuHrio atravAs do )END /A%F e a tasK termina enCadeando pseudoIConversao. Caso o /A%&AIL no oCorraF o programa eGeCutarH a ?uno so>iCitada e terminarH enviando o mapa Com uma mensagem de eGeCuo =em suCedida.

*O.3IN2I)+O.A2E )EC+ION. 77 77 *IE.. CO/I*O.3 %IC %IC )#:1$; CO/%. ,:11;.

CO%4 D&(0/)CA. CO%4 D&(AID. CO%4 +E)+/)1. LIN3A2E )EC+ION. D&(CO//A.EA. CO/I&LA2 %.OCEDU.E DINI)ION. I& I& EI0AID E9UAL D&(%&! E,EC CIC) .E+U.N ENDIE,EC. EI0CALEN E9UAL E,EC CIC) )END ^E.O) /A% :6+E)+/%7; /A%)E+ :6+E)+/)17; /A%ONL4 E.A)E &.EE30 ENDIE,EC +.AN)ID :EI0+.NID; CO//A.EA:CO/I*O.3; END-EXEC. /A% :6+E)+/%7; /A%)E+ :6+E)+/)17; IN+O :+E)+/%I; .E)% :*IE..; ENDIE,EC. D&(.E)%:/A%&AIL; +O +E)+/%O

%IC

,:11;.

E,EC CIC) .E+U.N

E,EC CIC)

.ECEINE

I&

*IE.. /ONE

E9UAL LO*INALUE)

/ONE

6&ANO. EN+.A. DADO)7 +O /)2O E,EC CIC) )END /A% :6+E)+/%7; /A%)E+ :6+E)+/)17; &.O/ :+E)+/%O; DA+AONL4 &.EE30 ENDIE,EC E,EC CIC) .E+U.N +.AN)ID :EI0+.NID; CO//A.EA:CO//I&LA2; ENDIE,EC. b%.OCE))A &UNVWO )OLICI+ADA /ONE LO*INALUE) +O +E)+/%O /ONE 6&UNVWO CO/%LE+ADA CO/ )UCE))O7 +O /)2O E,EC CIC) )END /A% :6+E)+/%7; /A%)E+ :6+E)+/)17; &.O/ :+E)+/%O; DA+AONL4 &.EE30 ENDIE,EC EXEC CICS RETURN END-EXEC.

UNIDADE 3

Envio e recepo de mapas Essa unidade mostrarH outras CaraCterOstiCas de mapas 0/)F =em Como outras opDes no envio e reCepo de mapas. c um Comp>emento do @ue ?oi visto na unidade . ,apa sim &lico ' 6)+7I-. 8 *I-7A.E O mapa sim=P>iCo :CopX=ooK; Co=o> gera>mente A Copiado na *O.3IN2I)+O.A2E do programa. /as nada impede @ue seJa Copiado na LIN3A2E )EC+ION. %ara isso devemos sa=er @ue o endereamento :addressa=i>itX; de Hreas na LIN3A2E A responsa=i>idade do programa. +ece endo ,apa na *I-7A.E SEC0I)9uando uti>iTamos a LIN3A2E )EC+ION para Copiar o mapa sim=P>iCo :CopX=ooK Co=o>;F devemos uti>iTar a opo )E+ ao invAs de IN+O no Comando .ECEINE /A%. Com )E+F o CIC) ad@uire a Hrea de memPriaF armaTena as in?ormaDes e ?orneCe o endereo da Hrea para o programa enderear o CopX=ooK em LIN3A2E. LIN3A2E )EC+ION. D&(CO//A.EA.

CO%4 +E)+/)1. %.OCEDU.E DINI)ION. E,EC CIC) .ECEINE /A% )E+ ENDIE,EC. Send ,ap ' Constantes e vari!veis 9uando uti>iTamos Constantes para os argumentos das opDes /A% e /A%)E+ em um Comando )END /A%F no A neCessHrio espeCi?iCar a opo &.O/. )e uti>iTarmos variHveis para as opDes /A% e /A%)E+F temos @ue espeCi?iCar a opo &.O/. )e deseJamos Codi?iCar apenas a opo /A% no Comando )END /A%F devemos ter o mapa e o mapset de?inidos Com o mesmo nome. MAPA SIM/0+ICO )END /A%:6+E)+/%7; /A%)E+:6+E)+/)17; /ONE 6+E)+/%7 +E)+/%O /ONE 6+E)+/)17 +O )END /A%:*I/A%A; /A%)E+:*I/A%)E+; &.O/:+E)+/%O; )END /A%:6+E)+/)17; +eceive ,ap ' Constantes e vari!veis 9uando uti>iTamos Constantes para os argumentos das opDes /A% e /A%)E+ em um Comando .ECEINE /A%F no A neCessHrio espeCi?iCar a opo IN+O. )e uti>iTarmos variHveis para as opDes /A% e /A%)E+F temos @ue espeCi?iCar a opo IN+O. )e deseJamos Codi?iCar apenas a opo /A% no Comando .ECEINE /A%F devemos ter o mapa e o mapset de?inidos Com o mesmo nome. /A%A )I/0dLICO .ECEINE +E)+/%I /A%:6+E)+/%7; +E)+/%O +O *I/A%A. *I/A%)E+. +E)+/%O :6+E)+/%7; /A%)E+ :6+E)+/)17; :ADD.E)) O& +E)+/%I;

/A%)E+:6+E)+/)17; /ONE 6+E)+/%7 +E)+/%I /ONE 6+E)+/)17 +O .ECEINE /A%:*I/A%A; /A%)E+:*I/A%)E+; IN+O:+E)+/%I; .ECEINE +E)+/%I /A%:6+E)+/)17; +O *I/A%A. *I/A%)E+.

Send ,ap ' Funes de controle )END /A%:6+E)+/%7; /A%)E+:6+E)+/)17; eE.A)E f E.A)EAU%g e&.EE30g eALA./g e&.)E+g e%.IN+g OU )END CON+.OL ...
E!ASE limpa >uffer do terminal e envia dados E!ASEAA$ limpa todos os campos desprotegidos antes de enviar dados '!EE:7 destrava o teclado do terminal A8A!" soa o alarme ao enviar dados '!SE desliga o "* de todos os campos $!I# =uando o terminal associado ? uma impressora

As opDes de Contro>e de output mostradas aCima em um Comando )END /A% tam=Am podem ser emitidas atravAs do Comando )END CON+.OL. +ECEI9E ' tecla e cursor Em uma operao de .ECEINEF o CIC) in?orma ao programa @ua> a posio do Cursor na te>a e tam=Am @ua> teC>a ?oi pressionada :EI0C%O)N e EI0AID;. AssimF podemos tra=a>Ear Com =arras de aDes e tam=Am Com teC>as ?unCionaisF por eGemp>o %&! 5 &I/F %&$ 5 ANANVA +ELA;.

Edio de campos ' "uilt in Function %odemos em a>gumas oCasiDes permitir ao usuHrio @ue digite dados Com CaraCteres espeCiais Como 6hS ou Q.S ou ainda QFS. EntretantoF se deseJarmos rea>iTar operaDes aritmAtiCas uti>iTando esses CamposF devemos retirar os CaraCteres no numAriCos. O Comando 0I& DEEDI+ pode ser uti>iTado para retirar os CaraCteres espeCiais de um CampoF preparandoIo para operaDes aritmAtiCas. A opo LEN2+( no A neCessHria para programas CO0OL II. E,EC CIC) 0I& DEEDI+ &IELD :A/OUN+; LEN2+( ENDIE,EC. :#;

$odemos editar campos na tela, >asta em sua definio acrescentar o par@metro $IC%A 0 por e3emplo, B F.FFC,CC1 e a saQda do campo R ficar editada.

UNIDADE 4

Acessando 9SA, Nessa unidade veremos Como o CIC) tra=a>Ea Com o mAtodo de aCesso N)A/ :Nirtua> )torage ACCess /etEod;F @uais os tipos de ar@uivos N)A/ suportadosF e @ua> o proCedimento para ?aTer aCesso direto e tam=Am se@ienCia> :0roYse;. Os ar@uivos N)A/ so de?inidos para o CIC) atravAs da ta=e>a &C+ :&i>e Contro> +a=>e;. Nessa ta=e>a temos toda in?ormao re?erente ao ar@uivoF inC>usive os tipos de operao @ue podero ser rea>iTadas. Um programa Co=o>-CIC) no tem de?inio ?OsiCa do ar@uivo @ue serH aCessadoF e tam=Am no ?aT a=ertura ou ?eCEamento dos ar@uivos. Os ar@uivos gera>mente so a=ertos pe>o CIC) @uando um aCesso ?or so>iCitado. Dentro do programaF de?inimos na *O.3IN2 o >aXout do registroF e o Campo CEave M .ID&LD :.eCord Id &ie>d;. O Comando para >eitura direta A o .EAD.

9SA, ' +ecuperao 1ireta

VS+( ESDS

registro

E)D) M EN+.4 )E9UENCED DA+A )E+ O E)D) A o tipo de ar@uivo N)A/ Com estrutura se@ienCia>. OperaDes @ue podem ser rea>iTadas' Leitura direta atravAs do .0A :.e>ative 0Xte Address; ou se@ienCia>] 2ravao sempre apPs o L>timo registro eGistente] Atua>iTao de registrosF sem a>terao de seu tamanEo] No podemos eGC>uir registros] A inC>uso A se@ienCia>. +elative "yte Address 1 111 =Xtes 111 111 =Xtes =Xtes 11 111

.E21

.E2

.E2!

O .0A A o des>oCamento em =Xtes do registro a partir do inOCio do ar@uivoF Como por eGemp>oF o>Eando a ?igura aCimaF ConC>uOmos @ue o .0A do registro A 111.

VS+( RRDS
.E2!

.E21

.E2

.E2"

..D) M .ELA+INE .ECO.D DA+A )E+

!1

O ..D) A Composto por uma sArie de Qs>otsS :gavetas; de tamanEo ?iGoF uma para Cada registro. OperaDes @ue podem ser rea>iTadas' Leitura direta atravAs do ..N :.e>ative .eCord Num=er; ou se@ienCia>] 2ravao de registro no seu respeCtivo Qs>otS] Atua>iTao de registros] EGC>uso de registros.

VS+( ,SDS
$

15 3)D) M 3E4 )E9UENCED DA+A )E+

!"

"1

O 3)D) A o tipo de ar@uivo N)A/ Com estrutura de OndiCes. OperaDes @ue podem ser rea>iTadas' Leitura direta atravAs da CEave do registro ou se@ienCia>] 2ravao de registros] Atua>iTao de registros] EGC>uso de registros. c o tipo de ar@uivo mais uti>iTado so= CIC).

Cam)o C-a.e &RID $D'


Identi?iCao do registro M .ID&LD. %ara ar@uivos 3)D) o .ID&LD deve Conter a CEave do registro a ser aCessado. %odemos tam=Am aCessar registros por pedao de CEave :CEave parCia> 5 3E4LEN2+(;. %ara os ar@uivos E)D) o .ID&LD deve ser um Campo de @uatro =Xtes em ?ormato =inHrio :s#:1$; Comp; e deve Conter o .0A do registro a ser aCessado. %ara os ar@uivos ..D) o .ID&LD deve ser um Campo de @uatro =Xtes em ?ormato =inHrio :s#:1$; Comp; e deve Conter o ..N do registro a ser aCessado.

Comando )ara $eitura - RE+D


%ara programas CO0OL II no A neCessHrio uti>iTar a opo LEN2+( se os registros tiverem tamanEo ?iGo. )e a >eitura ?or ?eita uti>iTando CEave parCia>F a>Am de 3E4LEN2+( devemos espeCi?iCar a opo 2ENE.IC.

!1

E,EC CIC)

.EAD

&ILE

:6name7; IN+O :dataIarea; .ID&LD :dataIarea; :dataIarea;]

[.0A f ..0]

[LEN2+(

[2ENE.IC] [3E4LEN2+(:dataIva>ue;] [2+E9 f E9UAL]


ENDIE,EC. *O.3IN2I)+O.A2E )EC+ION. 15 15 ... %.OCEDU.E DINI)ION. ... /ONE 6111117 E,EC CIC) .EAD &ILE +O *IC(ANE :6A.917; IN+O :*I.E2; .ID&LD ENDIE,EC. O eGemp>o mostra a >eitura do registro CEave 11111 de um ar@uivo 3)D). :*IC(ANE; *IC(ANE *I.E2 %IC ,:15;. %IC ,:$1;.

Condies de exceo
)empre devemos uti>iTar a opo .E)% nos Comandos de .EAD. A=aiGo a>gumas CondiDes de eGCeo' NO+&ND' registro no enContrado em >eitura direta] END&ILE' ?im de ar@uivo em pes@uisa se@ienCia> :veremos no prPGimo tPpiCo;] INN.E9' so>iCitao invH>ida] &ILENO+&OUND' o ar@uivo no estH Cadastrado na ta=e>a &C+] ILLO2IC' erro deteCtado pe>o N)A/ :veremos mais a ?rente;] IOE..' erro no I-O] NO+O%EN' ar@uivo ?eCEado] DI)A0LED' o ar@uivo estH desa=i>itado para aCessoF provave>mente em Conse@i[nCia de outro pro=>ema.

,anuseando condies de exceo Uti>iTando a opo .E)%F o CIC) no toma nenEuma ao se uma Condio de eGCeo oCorrer. Desse modoF nosso programa deve testar o ConteLdo do Campo uti>iTado no .E)% e tomar as provid[nCias Ca=Oveis. *O.3IN2I)+O.A2E )EC+ION. 15 15 ... %.OCEDU.E DINI)ION. ... /ONE 6111 E,EC CIC) 7 .EAD &ILE +O *IC(ANE :6A.917; IN+O :*I.E2; .ID&LD ENDIE,EC. I) .... '+S' I) %&'RR ... 9SA, ' +ecuperao Se:;encial #"+)6SE$ %ara ?aTer pes@uisa se@ienCia> :0roYse; em um ar@uivoF A neCessHrio posiCionar o ponteiro de >eitura na CEave deseJada atravAs do Comando )+A.+0.F e em seguida ?aTer a >eitura se@ienCia> dos registros :.EADNE,+ ou .EAD%.EN;. %ara terminar o =roYse emitir o Comando END0.. ,OT '12A+ ()!R'SP*,ORMA+%&'RR '12A+ ()!R'SP*,OT),(:*IC(ANE; .E)% :*IE..; *IC(ANE *IE.. %IC ,:15;. %IC )#:1$; CO/%.

Comandos )ara recu)erao se/0encia1


%osicionando c<ave - S0A+0"+ O Comando )+A.+0. A uti>iTado para posiCionar a CEave no registro deseJado :esta=e>eCer posio;. O De?au>t para o )+A.+0. A 2+E9F isto AF se a CEave deseJada no eGistirF o posiCionamento serH ?eito no registro seguinte.

!!

Esta leitura se=Sencial ? muito utili,ada em programas de paginao.

E,EC CIC) )+A.+0.

&ILE

:name; .ID&LD :dataIarea; [.0A f ..N]

[2ENE.IC] [3E4LEN2+(:dataIva>ue; ] [2+E9 f E9UAL]


ENDIE,EC. *endo se:;encialmente - +EA1-E80 ApPs esta=e>eCer posio Com o )+A.+0.F podemos Comear e >er o ar@uivo se@ienCia>mente em ordem asCendente de CEave atravAs do Comando .EADNE,+. E,EC CIC) .EADNE,+ &ILE :name; IN+O :dataIarea; .ID&LD :dataIarea; :dataIarea;]

[.0A f ..N]

[LEN2+(
ENDIE,EC. *endo se:;encialmente - +EA1%+E9

)e deseJarmos >er o ar@uivo se@ienCia>mente em ordem desCendente de CEaveF podemos uti>iTar o Comando .EAD%.EN. E,EC CIC) .EAD%.EN &ILE :name; IN+O :dataIarea; .ID&LD :dataIarea; :dataIarea;]

[.0A f ..N]

[LEN2+(
ENDIE,EC.

Alterando posicionamento da c<aves - +ESE0"+ )e durante uma operao de 0roYse deseJarmos reposiCionar o ponteiro de >eitura para outra CEaveF podemos uti>iTar o Comando .E)E+0.F ou ento mover a nova CEave para o Campo .ID&LD e uti>iTar o .EADNE,+-.EAD%.EN.

!"

E,EC CIC)

.E)E+0.

&ILE .ID&LD

:name; :dataIarea;

IN+O :dataIarea;

[.0A f ..N]

[2ENE.IC] [3E4LEN2+(:dataIva>ue;] [2+E9 f E9UAL]


ENDIE,EC. 0erminando "ro=se - E-1"+ Ao terminar a Consu>taF temos @ue terminar o 0roYse Com o Comando END0.. E,EC CIC) END0. &ILE ENDIE,EC. :name;

/ONE 61111!7 E,EC CIC) )+A.+0.

+O *IC(ANE. &ILE :6A.917; .ID&LD :*IC(ANE; .E)% :*IE..; ENDIE,EC. I& *IE.. E9UAL D&(.E)%:NO./AL; %E.&O./ UN+IL *IE.. E9UAL D&(.E)%:END&ILE; E,EC CIC) .EADNE,+ &ILE :6A.917; IN+O :*I.E2; .ID&LD :*IC(ANE; .E)% :*IE..; ENDIE,EC ..... ENDI%E.&O./ E,EC CIC) END0. &ILE :6A.917; ENDIE,EC EL)E .... Devemos Contro>ar a Condio de eGCeo END&ILE @ue oCorrerH apPs a >eitura do L>timo registro Com .EADNE,+ ou apPs a >eitura do primeiro registro Com o .EAD%.EN.

!5

UNIDADE

Atuali(ando 9SA, Na unidade anterior veri?iCamos Como A ?eito o aCesso para >eitura em ar@uivos N)A/. Nesta unidade veremos o @ue A neCessHrio para atua>iTar ar@uivos N)A/. ConEeCeremos tam=Am meCanismos CIC) e N)A/ para garantir a integridade de nossos dados. Consideraes so re integridade Como o CIC) A um produto mu>tiIusuHrio e mu>tiItare?aF tem a o=rigao de ?orneCer meCanismos de Contro>e de integridade de dados. +emos @ue ter proteo para Casos de interrupDes no programadasF tais Como erros de operaoF a=ends de tasKsF ?a>ta de energiaF e atA mesmos ?atores ?OsiCos Como por eGemp>oF um inC[ndio. A>Am dissoF temos a neCessidade de proteo de reCursosF para @ue vHrios usuHrios no Consigam atua>iTar o mesmo registro em determinado instante. Controle exclusivo ' 9SA, x CICS %ara manter a integridade de ar@uivos N)A/F o CIC) ?orneCe dois tipos de Contro>e eGC>usivo' Contro>e eGC>usivo do N)A/' @uando uma tasK estH atua>iTando um registroF o Contro> Interva> :CI; @ue ContAm o registro atua>iTado ?iCa QpresoS para essa tasK atA a atua>iTao terminar. Essa proteo ?unCiona de ?orma automHtiCa. Contro>e eGC>usivo do CIC)' A uma eGtenso da proteo mostrada aCima. ApPs atua>iTarF o N)A/ >i=era o CIF mas o CIC) QprendeS o registro atA o ?im da LU*. Essa proteo ?unCiona apenas para ar@uivos de?inidos Como reCuperHveis. A necessidade de proteo Imaginemos uma transao @ue vai atua>iTar o ar@uivo de Caderneta de poupana su=traindo .h 511. Em seguidaF atua>iTarH o ar@uivo de Conta Corrente adiCionando os .h 511. Como os dois ar@uivos so >ogiCamente re>aCionadosF temos @ue ter a garantia de atua>iTao de am=os ou no Caso de ?a>EaF @ue nenEum seJa atua>iTado. Nesse CasoF am=os devem ser de?inidos Como ar@uivos reCuperHveis. )e o primeiro so?rer atua>iTao e oCorrer a>guma ?a>Ea na atua>iTao do segundoF o CIC) automatiCamente deve des?aTer a atua>iTao para @ue am=os ?i@uem sinCroniTados. Esse proCesso de des?aTer a atua>iTao A CEamado 0AC3OU+.

*/6 e "ackout %ara garantir a integridade de ar@uivos reCuperHveisF o CIC) tra=a>Ea Com um ConCeito denominado LogiCa> Unit o? *orK :LU*;. Uma LU* sempre tem inOCio @uando uma tasK ter a inteno de atua>iTar um ar@uivo reCuperHve> : por eG.' um .ead Com Update;. Essa LU* permaneCe a=erta :InI?>igEt; atA oCorrer um )4NC%OIN+ :?ina> de tasK ou Comando )4NC%OIN+;.

!6

9uando a LU* termina oCorre a e?etivao de todas as atua>iTaDes :Commit;. )e oCorrer a>guma ?a>Ea antes do tArmino da LU*F o CIC) ?arH um =aCKout de todos os ar@uivos reCuperHveis @ue ?oram atua>iTados.

% comando EXEC CICS SE#C$%I# E#*6EXEC efetiva atuali,a<es nos &SA"s e o comando EXEC CICS SE#C$%I# !%887AC: E#*6EXEC desfa, todas as atuali,a<es do programa

Atuali(ao 9SA, %ara atua>iTar um ar@uivoF adiCionamos a opo U%DA+E ao Comando .EAD. 9uando ?aTemos o .EAD U%DA+EF oCorre o Contro>e eGC>usivo do N)A/. Esse Contro>e permaneCe atA' .E*.I+E' atua>iTao do registro] DELE+E' eGC>uso do registro] UNLOC3' CanCe>amento da inteno de atua>iTao] &I/ DA +A)3. Atuali(ao de um registro O Comando .E*.I+E ?aT a atua>iTao de um registro. O Campo CEave no pode ser a>terado.

E,EC CIC)

.E*.I+E

&ILE

:name; :dataIva>ue;]

&.O/ :dataIarea;

[LEN2+(
ENDIE,EC.

Antes do comando !E9!I E ? obrigatrio utili,ar o comando !EA* A$*A E+ EXEC CICS READ 'I8E0-A!OJ/1 I# %096!E;1 !I*'8*096 C4A&E1 UPDATE E#*6EXEC.

!7

Excluso de registro#s$ O Comando DELE+E eGC>ui um registro do ar@uivo. O Campo CEave :.ID&LD; no A neCessHrio se oCorrer um .EAD U%DA+E antes do DELE+E. %odemos ?aTer uma eGC>uso genAriCaF in?ormando as opDes 3E4LEN2+( e 2ENE.IC. Nesse CasoF se espeCi?iCarmos NU/.ECF o CIC) in?ormarH @uantos registros ?oram eGC>uOdos na operao. E,EC CIC) DELE+E &ILE :name;

[.ID&LD :dataIarea;] [3E4LEN2+( [.0A f ..N]


ENDIE,EC. :dataIva>ue;]

[2ENE.IC f NU/.EC :dataIarea;]

Apenas os ar=uivos :S*S e !!*S podem ter registros e3cluQdos.

*i erao de registro )e deCidirmos no ?aTer a atua>iTao apPs o Comando .EAD U%DA+EF podemos >i=erar o Contro>e eGC>usivo atravAs do Comando UNLOC3. E,EC CIC) UNLOC3 &ILE ENDIE,EC. Condies de exceo As CondiDes de eGCeo mais ?re@ientes so' NO)%ACE' ao ?aTer a atua>iTao de um registro de tamanEo variHve>F aumentamos seu tamanEo e no EH espao para regravao] INN.E9' so>iCitao invH>ida. %or eGemp>oF emitir o Comando .E*.I+E sem ter ?eito o .EAD U%DA+E] LEN2E..' o tamanEo do registro a ser regravado A muito grande] ILLO2IC' erro do N)A/ @ue no se en@uadra nas outras eGCeDes. :name;

!$

#o caso da condio de e3ceo I88%;IC, podemos utili,ar o campo EI7!C%*E para au3iliar na depurao do erro. #os >2tes J e L ele tra, o tipo de erro+ 6>2te J+ return code do &SA" 6>2te L+ error code do &SA"

Codificao - atuali(ao A=aiGo temos um eGemp>o de Codi?iCao de uma >eitura para atua>iTao seguida de regravao do registro atua>iTado. /ONE 61111!7 E,EC CIC) +O .EAD &ILE *IC(ANE. :6A.917; IN+O :*I.E2; .ID&LD U%DA+E .E)% :*IE..; ENDIE,EC. I& *IE.. NO+ E9UAL D&(.E)%:NO./AL; %E.&O./ .O+IE..O. b/ONE AL+E.AVjE) %A.A A.9UINO E,EC CIC) .E*.I+E &ILE :6A.917; &.O/ :*I.E2; .E)% :*IE..; ENDIE,EC. I& *IE.. NO+ E9UAL D&(.E)%:NO./AL; %E.&O./ .O+IE..O. 1esen<o Conversacional O Contro>e eGC>usivo do N)A/ M @ue QprendeS todo o CI para essa tasK M sP terminarH @uando oCorrer o Comando .E*.I+E. O Contro>e eGC>usivoF nesse CasoF vai ter a durao do tempo @ue o usuHrio >evar entre reCe=er as in?ormaDes em seu termina>F pensar nos dados @ue sero a>teradosF digitar as a>teraDes e pressionar Enter. En@uanto issoF @ua>@uer outra tasK deseJando atua>iTar um registro do mesmo CI ?iCarH em Yait. :esperando;. :*IC(ANE;

!#

Este modelo de desen5o conversacional no ? recomendado, pois o tempo de espera para outras tasT depende de um usurio. E se por e3emplo, ele demorar JH minutos para enviar suas altera<esU

1esen<o %seudo-conversacional %ara reso>ver o pro=>ema mostrado no item aCimaF temos a tACniCa pseudoIConversaCiona>. A >eitura para enviar os dados ao usuHrio no prende nenEum reCurso. )e o tempo de ao do usuHrio ?or >entoF ninguAm serH preJudiCado. O Contro>e eGC>usivo somente oCorrerH apPs o programa reCe=er as a>teraDes digitadasF e terH uma durao muito Curta. /as e se o registro ?or a>terado entre o tempo deCorrido apPs a >eitura na 1a ?ase e as >eitura para update na a ?aseB A resposta para esse pro=>ema A sa>var a imagem do registro @uando ?or ?eita a primeira >eitura. 9uando o programa ?iTer a >eitura para update na a ?aseF deverH Comparar o registro >ido Com a imagem @ue ?oi sa>va. )e estiverem iguaisF podemos e?etivar as a>teraDes. Caso ContrHrioF devemos tomar a>guma provid[nCia.

%nde salvar a imagem do registroU Oue tal na C%""A!EAU %u ento em S 0como veremos adiante1.

.ravao de registros - 6+I0E %ara inC>uir um novo registro em um ar@uivo N)A/F devemos ?ormatar os dados na Hrea do registro em *O.3IN2F esta=e>eCer o Campo CEave :.ID&LD; e gravHI>o atravAs do Comando *.I+E. E,EC CIC) *.I+E &ILE .ID&LD eLEN2+( e.0A f ..Ng :name; :dataIarea; :dataIva>ue;g &.O/ :dataIarea;

"1

e/A))IN)E.+g ENDIE,EC. O Comando *.I+E adiCiona registros em um ar@uivo N)A/. A opo /A))IN)E.+ serve para otimiTar uma inC>uso de registros em massaF desde @ue esteJam em ordem asCendente de CEave. Nesse CasoF o /A))IN+E.+ deve ser Codi?iCado em Cada registro. 9uando a se@i[nCia de inC>usDes terminarF devemos emitir um Comando UNLOC3. No Caso de inC>uso de ar@uivo E)D)F o Campos .ID&LD serH a>imentado pe>o CIC) Com o .0A do registro inC>uOdo. /ONE 61111!7 /ONE 6%(E4)E47 +O /ONE 6)WO %AULO7 /ONE EI0DA+E /ONE EI0+I/E E,EC CIC) *.I+E +O +O +O &ILE .ID&LD ENDIE,EC. I& .... EL)E I& ... *IE.. NO+ E9UAL D&(.E)%:NO./AL; %E.&O./ .O+IE..O. *IE.. E9UAL D&(.E)%:DU%.EC; +O /)2O +O *IC(ANE. .E2INO/E. .E2ICIDADE. .E2IDA+A. .E2I(O.A. :6A.917; :*IC(ANE;

&.O/ :*I.E2; .E)% :*IE..;

/ONE 6.E2I)+.O Zk E,I)+EN+E7

"1

UNIDADE !

Controle de programas Neremos agora os Comandos de trans?er[nCia de Contro>e entre programas em uma mesma tasK' CIC)' LIN3 e ,+CL CO0OL' CALL estHtiCo e dinlmiCo. Neremos tam=Am Como A ?eita a passagem de dados entre os programas. *ink entre programas O Comando LinK passa o Contro>e para o programa indiCadoF esse programa eGeCuta e ao terminarF devo>ve o Contro>e ao programa @ue emitiu o LinK :CEamador;.

%s dois programas so e3ecutados so> a mesma tasT.

%assagem de 1ados /sando *I-7 Assim Como na pseudoIConversaoF tam=Am uti>iTamos a Commarea para passagem de dados entre os programas no Comando LIN3. O programa CEamador : o @ue emite o LIN3; passa Como Commarea uma Hrea de *O.3IN2I)+O.A2E. O programa @ue reCe=e o Contro>e vai aCessar os dados passados atravAs da D&(CO//A.EA em sua LIN3A2E )EC+ION. )e os dados reCe=idos na D&(CO//A.EA pe>o programa CEamado ?orem a>teradosF @uando esse terminar e o Contro>e vo>tar para o programa CEamadorF a Hrea de *O.3IN2 @ue ?oi passada Como Commarea tam=Am estarH a>terada.

"

%s dois programas devem estar definidos na $$ do CICS.

->veis l&gicos - *I-7 NmNEL 1 CIC)

NmNEL 1

%rimeiro %rograma LIN3

NmNEL

)egundo %rograma .E+U.N

+odo programa CEamado atravAs de LIN3 eGeCuta em novo nOve> >PgiCo. 9uando termina :.E+U.N;F o Contro>e vo>ta para o nOve> >PgiCo imediatamente superiorF ou seJaF para o programa @ue emitiu o LIN3. %.O2.A/IID. %.O21. *O.3IN2I)+O.A2E )EC+ION. 77 *IE.. 11 *ICO// .... %.OCEDU.E DINI)ION. ... E,EC CIC) LIN3

%IC %IC

)#:1$; CO/%. ,:1!; NALUE 6)I/7.

%.O2.A/ :6%.O2 7; CO//A.EA:*ICO//; ENDIE,EC. "!

... %.O2.A/IID. %.O2 . *O.3IN2I)+O.A2E )EC+ION. 77 *I&LA2 %IC ,:1!;. LIN3A2E )EC+ION. D&(CO//A.EA. LICO// %IC ,:1!;. %.OCEDU.E DINI)ION. .. /ONE LICO// +O *I&LA2. ... E,EC CIC) .E+U.N ENDIE,EC. O programa %.O21 estH ?aTendo um LIN3 para o programa %.O2 e passando Como Commarea a Hrea *ICO//. O programa %.O2 reCe=e esta Hrea em LIN3A2EF na D&(CO//A.EA. 8C0* entre programas O Comando ,C+L tam=Am passa Contro>e para outro programaF mas ao ContrHrio do LIN3F @uando o programa CEamado terminaF o Contro>e no retorna ao programa CEamador. O ,C+L A muito uti>iTado para desenvo>ver /ENU) de ap>iCaDes. %assagem de dados usando 8C0* A passagem de dados entre os programas tam=Am A ?eita atravAs da Commarea. O programa @ue emite o ,C+L uti>iTa uma Hrea e *O.3IN2 Como CommareaF e o programa @ue torna o Contro>e reCe=e os dados na D&(CO//A.EA.

->veis l&gicos - 8C0* NmNEL 1 CIC)

NmNEL 1

%rimeiro %rograma LIN3 ,C+L

+erCeiro %rograma .E+U.N

""

NmNEL

)egundo %rograma .E+U.N

Como vimosF um programa CEamado atravAs de LIN3 eGeCuta em um novo nOve> >PgiCo. ZH um programa CEamado atravAs de ,C+L eGeCuta no mesmo nOve> >PgiCo do programa @ue ?eT a CEamada. Como o .E+U.N vo>ta para o nOve> >PgiCo imediatamente superiorF temos a Con?irmao @ue no Caso do ,C+L o Contro>e no retorna para o programa @ue ?eT a CEamada. %.O2.A/IID. %.O21. *O.3IN2I)+O.A2E )EC+ION. 77 *IE.. %IC )#:1$; CO/%. 11 *ICO// %IC ,:1!; NALUE 6)I/7. .... %.OCEDU.E DINI)ION. ... E,EC CIC) ,C+L %.O2.A/ :6%.O2 7; CO//A.EA:*ICO//; ENDIE,EC. ... %.O2.A/IID. %.O2 . *O.3IN2I)+O.A2E )EC+ION. 77 *I&LA2 %IC ,:1!;. LIN3A2E )EC+ION. D&(CO//A.EA. LICO// %IC ,:1!;. %.OCEDU.E DINI)ION. .. /ONE LICO// +O *I&LA2. ... E,EC CIC) .E+U.N ENDIE,EC. O eGemp>o aCima mostra o %.O21 ?aTendo um ,C+L para o programa %.O2 e passando Como Commarea a Hrea *ICO//. O programa %.O2 assume o Contro>e e reCe=e os dados na D&(CO//A.EA.

$assagem de controle+ XC 8 programa rece>e ei>calen diferente de ,eros. S A! programa rece>e ei>calen igual a ,eros, devemos, portanto, e3ecutar o comando !E !IE&E para restaurar a commarea.

"5

Cuidados com a *I-7A.E SEC0I)-

*evemos sempre utili,ar os mesmos taman5os de commarea =uando vamos passar controle a outro programa.

Call est!tico ' C)")* CALL LI+E.AL' CALL 6%.O207

O)-CO0OL %2/ C(A/ADO. %2/ C(A/ADO CO/ANDO) CIC) O)-CO0OL N) CO0OL II A))E/0LE. X V X V V

N) CO0OL II V V X V V

Apenas um mPdu>o eGeCutHve>. O Ca>> estHtiCo do Co=o> :Ca>> >itera>; pode ser uti>iTado so= CIC). A ta=e>a aCima mostra as possi=i>idades de CALL dependendo do Compi>ador CO0OL uti>iTado. Os programas CEamador e CEamado so >inKeditados Como um LniCo mPdu>o eGeCutHve>. Do ponto de vista de per?ormanCeF A uma =oa opoF uma veT @ue no oCorrerH Carga do programa CEamado na memPria. %or outro >adoF se diversos programas ?iTerem CALL para esse mesmo programa teremos diversas CPpias de>e em memPria. Call din?mico ' C)")* /ONE 6%.O207 +O *I%.O2 CALL NA.IkNEL' CALL *I%.O2.

"6

O)-CO0OL %2/ C(A/ADO. %2/ C(A/ADO CO/ANDO) CIC) O)-CO0OL N) CO0OL II A))E/0LE.
Dois mPdu>os eGeCutHveis.

N) CO0OL II V V X V V

V X X X X

O Ca>> dinlmiCo do Co=o> :Ca>> variHve>; tam=Am pode ser uti>iTado. A ta=e>a aCima mostra as possi=i>idades de Ca>> dependendo do Compi>ador CO0OL uti>iTado. Os programas CEamador e CEamado so >inKeditados separadamenteF sendo dois mPdu>os eGeCutHveis distintos. 9uando ?or ?eito um Ca>>F o programa CEamado serH Carregado em memPria e eGeCutado. )e diversos programas ?iTerem Ca>> para esse mesmo programaF teremos apenas uma CPpia em memPria. %assagem de dados com I-%/0,S. A partir do CIC)-E)A v!.1.1 temos uma a>ternativa a mais para passagem de dados entre programas. +rataIse da opo IN%U+/)2. AtravAs de>aF podemos passar uma Hrea @ue ?iCa na *O.3IN2I)+O.A2E do programa CEamadorF e reCe=[I>a tam=Am em *O.3IN2I)+O.A2E no programa CEamadoF atravAs do Comando .ECEINE. )e deseJarmosF podemos espeCi?iCar tanto o IN%U+/)2 @uanto a CO//A.EA em um mesmo Comando. O IN%U+/)2 A vH>ido para LIN3 e ,C+L a partir do CIC) N!.1.1. A partir do CIC) N!. .1 A vH>ido tam=Am para .E+U.N +.AN)ID.

%.O2.A/IID. %.O21. *O.3IN2I)+O.A2E )EC+ION. 77 *IE.. *IIN%U+. *I+.AN) %IC 1 *IC(ANE %IC .... %.OCEDU.E DINI)ION.

%IC

)#:1$; CO/%.

,:1";. ,:15;.

"7

... E,EC CIC)

,C+L %.O2.A/ :6%.O2 7; IN%U+/)2 :*IIN%U+; IN%U+LEN :#; ENDIE,EC.

...

%.O2.A/IID. %.O2 . *O.3IN2I)+O.A2E )EC+ION. *I.ECE0E. *I+.N %IC ,:1";. 1 *I3E4 %IC ,:15;. %.OCEDU.E DINI)ION. .. E,EC CIC) .ECEINE IN+O :*I.ECE0E; ENDIE,EC. .. E,EC CIC) .E+U.N ENDIE,EC. O programa %.O21 estH CEamando o %.O2 atravAs de ,C+L e passando a Hrea *I IN%U+ Como IN%U+/)2. O %.O2 ao reCe=er o Contro>e eGeCuta o Comando .ECEINE e reCe=e os dados na Hrea *I.ECE0E.

UNIDADE "

Addressa ility ' uso da *I-7A.E SEC0I)A LIN3A2E )EC+ION A uma Hrea muito eGp>orada pe>o CIC) em nossos programas CO0OL. ZH perCe=emos @ue o EI0 e a D&(CO//A.EA >oCa>iTamIse em LIN3A2E. A>Am dessas duas HreasF podemos uti>iTar a LIN3A2E para diversos outros ?insF pois e>a A uma eGCe>ente a>ternativa ao uso da *O.3IN2. O LniCo Cuidado @ue devemos ter A Com o tamanEo das Hreas e sua Qaddressa=i>itXSF ou seJa esta=e>eCer o endereamento para poder uti>iTHI>as.

"$

Addressa ility

*'4C%""A!EA e *'4EI78:+ Endereados automaticamente pelo prVprio CICS. %utras rea de 8I#:A;E+ *evem ser endereadas pelo programa

% endereamento do *'4EI78: 0EI71 e da *'4C%""A!EA ? feito de forma automtica pelo CICS. % endereamento de outras rea deve ser feito pelo prVprio programa, portanto ? responsa>ilidade do programador.

"** Cells ' )S@9S co ol

LIN3A2E )EC+ION. D&(CO//A.EA. ... 0LLICELL). 15 &ILLE. 15 LI.E2. 15 NO/E 15 ENDE.EVO 15 C%& ... "# %IC ,:!1;. %IC ,:"1;. %IC #:11;. %.+I.E2 15 %.+I+A0 %IC )#:1$; CO/%. %IC )#:1$; CO/%. %IC )#:1$; CO/%.

LI+A0. ... %ara o Compi>ador O)-CO0OLF toda veT @ue neCessitarmos tra=a>Ear Com Hreas em LIN3A2E :eGCeto D&(EI0L3 e D&(CO//A.EA;F temos @ue Criar uma estrutura de ponteiros denominada 0LL Ce>>s :CA>u>as de =ase >oCator ?or LIN3A2E;. A estrutura de 0LL Ce>>s deve ser um nOve> 11 imediatamente antes dos >aXouts das Hreas de tra=a>Eo em LIN3A2E do programa. O primeiro ponteiro da estrutura vai Conter o endereo da prPpria estruturaF e A Carregado pe>o prPprio CO0OL. Cada ponteiro seguinte apontarH para um >aXout de nOve> 11 Codi?iCado apPs a estrutura de 0LLs. Esses ponteiros devem ser Carregados pe>o programa. )po SE0 ' utili(a *I-7A.E SEC0I)-A %.O2.A/A O)-CO0OL' E,EC CIC) .EAD &ILE )E+ ENDIE,EC. %.O2.A/A CO0OL II' E,EC CIC) .EAD &ILE )E+ ENDIE,EC. ACima mostramos um registro de ar@uivo N)A/ sendo >ido em LIN3A2E )EC+ION ao invAs da *O.3IN2. Note @ue no >ugar da opo IN+O estH sendo uti>iTada a opo )E+. Dessa ?ormaF @uando o CIC) ?aT a >eitura JH ad@uire uma Hrea de memPria do tamanEo do registro. A opo )E+ serve para Carregar o ponteiro do 0LL Com o endereo da Hrea onde enContraIse o registro. O primeiro eGemp>o mosta um programa O)-CO0OL. A opo )E+ in?orma o Campo %.+I.E2. Esse Campo A um ponteiro 0LLF mostrado no item $.!. O segundo eGemp>o mostra um programa CO0OL II. Neste Caso A =em mais simp>esF pois o CO0OL II no uti>iTa a estrutura de ponteiros. Ao invAs dissoF uti>iTa um registrador espeCia> de endereamento para Cada nOve> 11 da LIN3A2EF e para Carregar esse registrador o programa deve uti>iTar a instruo QADD.E)) O& nOve>I11S. 0a elas em Assem ler DC DC DC DC CL 7)%7 CL157)WO %AULO7 CL 70A7 CL1570A(IA7 :6A.917; .ID&LD :.E2IC(ANE; :ADD.E)) O& LI.E2; :6A.917; .ID&LD :.E2IC(ANE; :%+.I.E2;

51

DC DC DC DC DC DC

CL 7.Z7 CL157.IO DE ZANEI.O7 CL 7%.7 CL157%A.ANk7 CL 7E)7 CL157E)%m.+O )AN+O7

Uma tACniCa muito uti>iTada no CIC) A a Codi?iCao de ta=e>as em Assem=>er. +rataIse de um programa Assem=>er Composto apenas de Constantes. ACima mostramos uma ta=e>a de Estados. Essa ta=e>a serH Compi>adaF >inKeditada e Cadastrada na %%+ do CIC). Ao invAs de de?inir o >aXout dessa ta=e>a na *O.3IN2 do programaF podemos ?aTer sua de?inio em LIN3A2EF e CarregHI>a em memPria @uando @uisermos Consu>tHI>a. %ara CarregHI>a em memPria veremos o Comando LOAD. Com essa tACniCaF podemos ter inLmeras tasKs no CIC) Consu>tando uma LniCa ta=e>a atravAs de LIN3A2EF possi=i>itando grande eConomia de memPria no Caso de ta=e>as eGtensas. Carga de ta elas C)")* II -*)A1 %.O2.A/IID. %.O21. *O.3IN2I)+O.A2E )EC+ION. 77 ... LIN3A2E )EC+ION. D&(CO//A.EA. 1 LICO// +A0ILOCAL. 1 LOCAL 1! 1! .... E,EC CIC) LOAD %.O2.A/ :6+A0%.O27; )E+ ENDIE,EC. O Comando LOAD ?aT Com @ue o programa so>iCitado seJa Carregado em memPria e o nosso programa tenEa aCesso ao endereo de Carga atravAs da opo )E+. O LOAD Carrega o programa mas no eGeCutaF ao ContrHrio do LIN3 e ,C+L. :ADD.E)) O& +A0ILOCAL; LOC DE)C OCCU.) %IC ,:15;. 1 1. %IC ,:1 ;. %IC ,:1!;. *IE.. %IC )#:1$; CO/%.

%.OCEDU.E DINI)ION.

51

AtravAs do >aXout em LIN3A2EF podemos Consu>tar as oCorr[nCias da ta=e>a. O LOAD mantAm o programa Carregado em memPria atA o ?ina> da tasK. )e apPs o ?ina> da tasK deseJarmos manter o programa em memPriaF devemos uti>iTar a opo (OLD. AssimF o programa permaneCerH em memPria atA o CIC) sair do ar ou a>guma transao emitir o Comando .ELEA)E %.O2.A/. Ad:uirindo mem&ria ' C)")* II %.O2.A/IID. %.O21. *O.3IN2I)+O.A2E )EC+ION. 77 ... LIN3A2E )EC+ION. 11 11 .... E,EC CIC) 2E+/AIN LEN2+( )E+ ENDIE,EC. /ONE6,,,,,,,,,7 ..... O CIC) possi=i>ita tam=Am @ue um programa so>iCite uma Hrea de memPria. Isso A ?eito atravAs do Comando 2E+/AIN. No eGemp>o aCima o programa estH so>iCitando uma Hrea de memPria de tamanEo !11 =XtesF @ue serH uti>iTada atravAs do >aXout LIA.EA em LIN3A2E. Breas maiores :ue C5DE ' C)")* II )e a Hrea de LIN3A2E tiver tamanEo aCima de "1#6 =XtesF no eGiste nenEuma Considerao espeCia> na Codi?iCao do programa CO0OL II. +eremos aCesso aos 7!11 =Xtes da LIA.EA sem nenEum es?oro adiCiona>. %.O2.A/IID. %.O21. *O.3IN2I)+O.A2E )EC+ION. 77 ... LIN3A2E )EC+ION. 11 11 D&(CO//A.EA. 1 LICO// LIA.EA %IC ,:1!;. %IC ,:7!11;. *IE.. %IC )#:1$; CO/%. +O LIA.EA. :!11; :ADD.E)) O& LIA.EA; D&(CO//A.EA. 1 LICO// LIA.EA %.OCEDU.E DINI)ION. %IC ,:1!;. %IC ,:!11;. *IE.. %IC )#:1$; CO/%.

%.OCEDU.E DINI)ION. .... E,EC CIC) 2E+/AIN LEN2+( )E+ ENDIE,EC. /ONE6,,,,,,,,,7 ..... Acessando a Common 6ork Area #C6A$ O CIC) ?orneCe vHrias Hreas de uso ComumF e uma das mais prHtiCas A a Common *orK Area. Cada CIC) tem uma C*AF e essa C*A pode ser aCessada por todas as tasKs. E>a serve para armaTenar dados de uti>iTao pL=>iCa de @ua>@uer espACie. %.O2.A/IID. %.O21. *O.3IN2I)+O.A2E )EC+ION. 77 77 ... LIN3A2E )EC+ION. 11 LIC*A. 1 C*AICA/%O1 1 C*AICA/%O %.OCEDU.E DINI)ION. .... E,EC CIC) A))I2N I& *ILEN E,EC CIC) 2.EA+E. ADD.E)) C*A:ADD.E)) O& LIC*A; ENDIE,EC. ..... AtravAs do Comando A))I2N C*ALEN2 veri?iCamos se a C*A eGiste ou no. )e eGistirF A possOve> aCessHI>a atravAs do Comando ADD.E)) C*A. C*ALEN2:*ILEN; ENDIE,EC. ^E.O) %IC ,:51;. %IC ,:51;. D&(CO//A.EA. 1 LICO// %IC ,:1!;. *IE.. *ILEN %IC )#:1$; CO/%. %IC )#:1"; CO/%. +O LIA.EA. :7!11; :ADD.E)) O& LIA.EA;

5!

%e>o >aXout da C*A na LIN3A2E do programaF podemos Consu>tar dados eGistentes ou ento Carregar novos dados.

UNIDADE #

Fueueing Nessa unidadade veremos os Comandos neCessHrios para tra=a>Ear Com as duas ?aCi>idades @ue o CIC) o?ereCe para armaTenamento temporHrio de dados :en?i>eiramento de dados;' +ransient Data :+D; e +emporarX )torage :+);. 0ransient 1ata - 01 CIC) +D%

DC+ IN+.AI E,+.A%A.+I+ION %A.+I+ION

%.O2.A/A EGeC CiCs .ead@-Yrite@ +D

As ?i>as de +ransient Data so identi?iCadas por um nome de " CaraCteres Cadastrado na ta=e>a DC+ :Destination Contro> +a=>e; e ConEeCido Com DE)+ID :Destination ID;. O CIC) o?ereCe dois tipos de +D' intrapartition e EGtrapartition.

2D Intra)artition
%.O2.A/A E,E
E,EC CIC) .EAD9-*.I+E9 +D

D&(DC+ D&(+D% DE)+ID

D&(IN+.A-N)A/ E)D) CaraCterOstiCas da +D Intrapartition' +odas as ?i>as de +D so direCionadas para o mesmo ar@uivo N)A/ E)D) CEamado D&(IN+.A] Os registros nas ?i>as so gravados sempre se@uenCia>mente e reCuperados da mesma ?orma] A >eitura A destrutivaF ou seJaF uma veT >ido no pode ser reCuperado novamente] 5"

Os registros podem ter tamanEo variHve>.

2D Extra)artition

%.O2.A/A

D&(+D%

D&(DC+

DE)+ID

A +D EGtrapartition A a ?orma @ue o CIC) o?ereCe para uti>iTarmos ar@uivos )A/ :)e@uenCia> ACCess /etEod;. CaraCterOstiCas da +D EGtrapartition' Cada ?i>a de +D Corresponde a um ar@uivo ?OsiCo] A >eitura no A destrutivaF pois podemos >er o mesmo registro diversas veTes] No podemos ?aTer eGC>uso] Os registros podem ter ?ormato ?iGo ou variHve>F =>oCado ou no =>oCado] Cada ?i>a pode ser de?inida Com imput ou outputF nunCa Como input e output. .ravao de 01 E,EC CIC) 9UEUE :name; &.O/ :dataIarea; eLEN2+( :dataIarea;g ENDIE,EC. O Comando *.I+E9 +D A uti>iTado para gravao de +Ds Intrapartition e EGtrapartition. /ONE E,EC CIC) +O *IC(ANE. &ILE :6A.917; .ID&LD :*IC(ANE; .E)% :*IE..; ENDIE,EC. I& *IE.. E9UAL D&(.E)%:NO./AL; %E.&O./ UN+IL *IE.. E9UAL D&(.E)%:END&ILE; E,EC CIC) .EADNE,+ &ILE :6A.917; IN+O :*I.E2; .ID&LD :*IC(ANE; .E)% :*IE..; ENDIE,EC I& *IE.. E9UAL D&(.E)%:NO./AL; /ONE EI0+I/E +O +DI(O.A 55 61111!7 )+A.+0. *.I+E9 +D

/ONE *INO/E +O /ONE *I9+DE +O E,EC CIC) *.I+E9

+D

+DINO/E +DI9+D 9UEUE :6+D117; &.O/ :+DI.E2; .E)% :+DIE..; ENDIE,EC

..... ENDI%E.&O./ E,EC CIC) END0. EL)E .......

&ILE :6A.917; ENDIE,EC

O eGemp>o aCima mostra uma >PgiCa ondeF para Cada registro >ido no ar@uivo A.91F estH sendo gravado um registro na ?>a +D11. *eitura de 01 E,EC CIC) 9UEUE :name; IN+O :dataIarea; eLEN2+( :dataIarea;g ENDIE,EC. O Comando .EAD9 +D A uti>iTado para >eitura de +Ds Intrapartition e EGtrapartition. %E.&O./ UN+IL *IE.. E9UAL D&(.E)%:9^E.O; E,EC CIC) .EAD9 +D 9UEUE :6+D117; IN+O :+DI.E2; .E)% :*IE..; ENDIE,EC I& *IE.. E9UAL D&(.E)%:NO./AL; .... EL)E I& *IE.. NO+ E9UAL D&(.E)%:9^E.O; %E.&O./ +.A+AIE..O ENDII& ENDII& ENDI%E.&O./ O programa estH >endo a +D11 se@uenCia>mente atA o seu ?im :9^E.O;. Excluso de 01 E,EC CIC) DELE+E9 +D 9UEUE :name; ENDIE,EC. .EAD9 +D

O Comando DELE+E9 +D ap>iCaIse apenas para +Ds Intrapartition. Este Comando eGC>ui todos os registros de uma ?i>a +D. Condies de exceo - 01

56

OFE!% 8E#;E!! #%S$ACE #% %$E# OI*E!! I%E!!

CondiDes de eGCeo a serem Consideradas para +Ds' 9^E.O' &i>a vaTia ou ?im de ?i>a] LEN2E..' .egistro maior @ue o tamanEo espeCi?iCado] NO)%ACE' Ar@uivo D&(IN+.A estH CEeio] NO+O%EN' &i>a +D EGtrapartition estH ?eCEada] 9IDE..' A ?i>a +D no ?oi Cadastrada na ta=e>a DC+] IOE..' %ro=>emas Com o ar@uivo. 0emporary Storage - 0S

D&(+E/%

D&(+)%

E,EC CIC) .EAD9-*.I+E9 +) :E)D);

N)A/ +)

A +emporarX )torage : +) ; tem nomes de 1 a $ CaraCteresF e no neCessita @ue esses nomes seJam prAIde?inidos em ta=e>as do CIC). )e a ?i>a no eGistirF e>a serH Criada. As ?i>as +) podem ser gravadas em disCo :AU,; ou ento em memPria :/AIN;F onde o aCesso A muito mais rHpido] Os registros :itens; podem ter tamanEo variHve>] +) aCeita gravao se@uenCia>F >eitura se@uenCia> e diretaF e atua>iTao] Os dados permaneCem disponOveis atA @ue seJam eGC>uOdos por Comando. 57

Se a fila R e3istir, o programa acrescentar dados nela, portanto devemos sempre, ao iniciar o programa, tratar para criar uma S nova.

.ravao de 0S E,EC CIC) *.I+E9 +) 9UEUE eLEN2+( :name; :dataIarea;g &.O/ :dataIarea; eI+E/ :dataIarea; e.E*.I+Egg e/AIN f AU,ILIA.4g ENDIE,EC. O Comando *.I+E9 +) A uti>iTado para gravao de ?i>as +). As opDes /AIN e AU, determinam se a ?i>a serH gravada em memPria ou disCo] 9uando estivermos gravandoF se Codi?iCarmos a opo I+E/F o CIC) retorna o nLmero :posio; desse Otem na ?i>a] )e Codi?iCarmos as opDes I+E/ e .E*.I+EF o CIC) ?arH atua>iTao do Otem indiCado Com o novo ConteLdo.

Cada registro gravado ? um novo item.

*O.3IN2I)+O.A2E )EC+ION. 11 *II+E/ %IC )#:1"; CO/%. +)I.E2. ..... %.OCEDU.E DINI)ION. E,EC CIC) *.I+E9 +) 9UEUE :6&A++)117; &.O/ :+)I.E2; I+E/ :*II+E/; .E)% :*IE..; 5$

I&

ENDIE,EC. *IE.. NO+ E9UAL D&(.E)%:NO./AL; %E.&O./ +.A+AIE..O.

ACima temos um eGemp>o de Codi?iCao de gravao de um Otem na ?i>a +) &A++)11. *O.3IN2I)+O.A2E )EC+ION. 11 *II+E/ %IC )#:1"; CO/%. +)I.E2. ..... %.OCEDU.E DINI)ION. /ONE 11 +O *II+E/ E,EC CIC) *.I+E9 +) 9UEUE :6&A++)117; &.O/ :+)I.E2; I+E/ :*II+E/; .E*.I+E .E)% :*IE..; ENDIE,EC. I& *IE.. NO+ E9UAL D&(.E)%:NO./AL; %E.&O./ +.A+AIE..O. E este eGemp>o mostra atua>iTao do Otem 11 da ?i>a +) &A++)11. *eitura de 0S E,EC CIC) .EAD9 +) 9UEUE eLEN2+( :name; :dataIarea;g IN+O :dataIarea; eI+E/ :dataIarea; f NE,+g eNU/I+EN):dataIarea;g ENDIE,EC. O Comando .EAD9 +) A uti>iTado para >eitura de ?i>as +). A opo NE,+ indiCa @ue estamos ?aTendo >eitura se@uenCia> da ?i>a] )e uti>iTarmos a opo I+E/ estaremos ?aTendo >eitura direta] )e a opo NU/I+EN) ?or Codi?iCadaF o CIC) in?orma o nLmero tota> de itens na ?i>a.

As data6areas dos campos I E" e #A"I E#S devem ser codificadas no programa com $IC SC0HW1 C%"$.

5#

*O.3IN2I)+O.A2E )EC+ION. 11 *II+E/ %IC )#:1"; CO/%. +)I.E2. ..... %.OCEDU.E DINI)ION. E,EC CIC) .EAD9 +) 9UEUE :6&A++)117; IN+O :+)I.E2; NE,+ .E)% :*IE..; ENDIE,EC. D&(.E)%:I+E/E..; +) 9UEUE:6&A++)117; ENDIE,EC

I& EL)E

*IE.. E9UAL E,EC CIC) DELE+E9 I&

*IE.. NO+ E9UAL D&(.E)%:NO./AL; %E.&O./ +.A+AIE..O.

...... ACima temos a >eitura da ?i>a &A++)11. Em seguidaF se oCorrer a Condio de ?im de ?i>aF a +) estH sendo eGC>uOda atravAs do Comando DELE+E9 +).:a=ordado no prPGimo tPpiCo;. Excluso de 0S E,EC CIC) DELE+E9 +) 9UEUE :name; ENDIE,EC.

O Comando DELE+E9 +) serve para eGC>uir todos os itens de uma ?i>a +). c importante eGC>uir ?i>a apPs seu usoF prinCipa>mente se a ?i>a ?oi gravada em memPria. Condies de exceo - 0S

I E"E!! 8E#;E!! #%S$ACE OI*E!! I%E!!

CondiDes de eGCeo a serem Consideradas para +)s' I+E/E..' &im de ?i>a ou Otem no enContrado] LEN2E..' .egistro maior @ue o tamanEo espeCi?iCado] NO)%ACE' No EH espao para gravao]

61

9IDE..' A ?i>a +) no ?oi enContrada em uma >eitura ou eGC>uso] IOE..' %ro=>emas Com o ar@uivo.

UNIDADE $

,anuseio de excees c de eGtrema importlnCia o manuseio de CondiDes de eGCeo em programas eGeCutando so= CIC). Uma das tACniCas A a CEamada tACniCa estruturadaF @ue temos uti>iTado desde o inOCio dessa aposti>a. Codi?iCamos a opo .E)% nos Comandos e em seguida testamos o Campo uti>iTado Como argumento. Nessa unidade veremos as outras tACniCas para manusear CondiDes de eGCeoF e tam=Am o @ue so transaDes CECI e CE0.. ,anuseio de condies de exceo E,EC CIC) (ANDLE CONDI+ION Condition:>a=e>; Condition:>a=e>; ...... E,EC CIC) I2NO.E CONDI+ION Condition Condition ...... O Comando (ANDLE CONDI+ION serve para deiGarmos prAIesta=e>eCidas as rotinas para manuseio de CondiDes de eGCeo. %odemos espeCi?iCar atA 16 CondiDesF e ao eGeCutar um ComandoF se a Condio oCorrer serH ?eito um desvio automHtiCo para a rotina espeCi?iCada no (ANDLE CONDI+ION. O Comando I2NO.E CONDI+ION serve para o CIC) ignorar as CondiDes espeCi?iCadasF e deiGar o programa Continuar. )erve tam=Am para resetar CondiDes tratadas anteriormente em (ANDLE CONDI+ION. %.OCEDU.E DINI)ION. E,EC CIC) (ANDLE CONDI+ION INN.E9:+.A+AIINN;

61

LEN2E..:+.A+AILEN2+(; NO+&ND:NWOIAC(OU; %2/IDE..:+.A+AI%.O2; E..O.:+.A+AIE..O; ENDIE,EC. ...... E,EC CIC) I2NO.E CONDI+ION INN.E9 ENDIE,EC. ...... E,EC CIC) .EAD &ILE :6+E)+A.97; IN+O :*I.E2; .ID&LD ENDIE,EC. ...... NWOIAC(OU. .... +.A+AILEN2+(. ..... O eGemp>o aCima mostra @ue o programa emitiu um (ANDLE CONDI+ION Com o nome de a>gumas rotinas para tratar CondiDes de eGCeo espeCO?iCasF e Com a rotina +.A+AI E..O para o Caso de uma Condio no espeCi?iCada. Em seguidaF e>e so>iCita @ue o CIC) ignore a Condio INN.E9 atravAs de um Comando I2NO.E CONDI+ION. Ao eGeCutar o Comando .EADF dependendo do @ue oCorrer o CIC) ?arH um desvio para a rotina so>iCitada ou ento deiGarH o programa prosseguir. )pes para ,anuseio de excees
utili,ar a opo !ES$ nos comandos, testando o campo da 9%!:I#;6S %!A;E utili,ar a opo #%4A#*8E nos comandos, e testar EI7!ES$ utili,ar 4A#*8E e I;#%!E C%#*I I%# CICS toma ao *efault, =ue geralmente ? a>endar a tasT.

:*IC(ANE;

Uma das maneiras de tratar as CondiDes de eGCeo A a @ue estamos uti>iTando desde o inOiCio da aposti>a' Codi?iCar a opo .E)%F e em seguida testar o Campo uti>iTado Como argumento. Outra ?orma estruturada de tra=a>Ear A Codi?iCar a opo NO(ANDLE nos Comandos' o CIC) deiGarH o programa prosseguirF e devemos testar o Campo EI0.E)%.

A ut>iTao de (ANDLE e I2NO.E CONDI+ION @ue=ra a estrutura do programaF portantoF no A aConse>Eada. )e no uti>iTarmos nenEuma das opDes mostradas aCimaF no Caso de eGCeDes o CIC) toma uma ao Qde?au>tSF @ue gera>mente A a=endar a tasK. EI"+ES%3 para auxiliar I,VR'1 READ no especific !o n FCT READ UPDATE no especific !o n FCT 3E4LEN2+( inCorreto e 2ENE.IC no espeCi?iCado 3E4LEN2+( aCima do permitido :2ENE.IC espeCi?iCado; 3E4LEN2+( NE2A+INO :2ENE.IC espeCi?iCado; .EAD U%DA+E seguido de .EAD U%DA+E sem UNLOC3F .E*.I+E or DELE+E " $ 'I/R'SP$ 1 6 5

A Condio de eGCeo INN.E9 :so>iCitao invH>ida M EI0.E)%516; A muito vagaF por isso o CIC) traT o Campo EI.E)% F @ue in?orma maiores deta>Ees do pro=>ema. ,anuseio de teclas *O.3IN2I)+O.A2E )EC+ION. .... CO%4 D&(AID. .... PROCEDURE DIVISION. I& EI0AID E9UAL D&(%&! ... I& EI0AID E9UAL D&(CLEA. ... I& EI0AID E9UAL D&(EN+E. ... ..... +.A+AI(EL%. ..... +.A+AI&I/. ...... NOL+AI+ELA. %.OCEDU.E DINI)ION. E,EC CIC) (ANDLE AID %&1:+.A+AI(EL%; %&!:+.A+AI&I/; %&7:NOL+AI+ELA; %&$:ANANVAI+ELA; %&11 AN43E4:+ECLAIINNALIDA; ENDIE,EC.

6!

.....

%ara testar @ua> teC>a ?oi pressionada pe>o usuHrioF vimos a tACniCa estruturadaF @ue Consiste em Copiar o CopX=ooK D&(AID na *O.3IN2I)+O.A2EF e depois testar o Campo EI0AID. Essa A a tACniCa reComendada. EGiste tam=Am o Comando (ANDLE AIDF onde espeCi?iCamos teC>as e para @uais rotinas deve oCorrer o desvio. Esse desvioF oCorre apPs um Comando .ECEINE ou .ECEINE /A%. A opo AN43E4 signi?iCa @ua>@uer teC>a Com eGCeo do EN+E..

Se utili,ar 4A#*8E AI* e o programa e3ecutar um !ECEI&E com !ES$ ou #%4A#*8E, o 4A#*8E AI* ser desa>ilitado na=uele instante.

Cuidado ao utili(ar GA-1*E )e o CIC) deteCta uma teC>a Contro>ado por (ANDLE AID e uma Condio de eGCeo Contro>ada por (ANDLE CONDI+ION apPs um Comando de inputF o desvio A ?eito para a rotina do (ANDLE AID. A=aiGo mostramos uma Condio em @ue a teC>a %&5 ?oi pressionada e um /A%&AIL oCorreu. O desvio ?oi ?eito para a rotina +.A+AI%&5. %.OCEDU.E DINI)ION. E,EC CIC) (ANDLE /A%&AIL NO+&ND LEN2E.. ENDIE,EC. ..... E,EC CIC) (ANDLE %&5 ENDIE,EC. .... +.A+AI/A%&AIL. .... AID :+.A+AI%&5; CONDI+ION :+.A+AI/A%&AIL; :+.A+AINO+&ND; :+.A+AILEN2+(;

6"

+.A+AI%&5. .... Comando GA-1*E A"E-1 O Comando (ANDLE A0END devo>ve o Contro>e para o programa @uando o CIC) determina @ue a transao deveria terminar de ?orma anorma>. Dessa ?ormaF o programa pode rea>iTar um QEouseKeepingS antes de seu tArmino. E,EC CIC) (ANDLE e%.O2.A/ :name; LA0EL CANCEL .E)E+g %ara suspender@restaurar GA-1*Es O Comando %U)( (ANDLE suspende todos os (ANDLEs @ue enContramIse ativos para o programa. O Comando %O% (ANDLE reativa os (ANDLEs @ue ?oram suspensos. Devemos evitar uti>iTar esses Comandos pois e>es @ue=ram a estrutura do programaF di?iCu>tando ?uturas manutenDes. E,EC CIC) %U)( (ANDLE )U)%ENDE +ODO) (ANDLE CONDI+ION I2NO.E CONDI+ION (ANDLE A0END (ANDLE AID :>a=e>; A0END f f f

E,EC CIC) %O% (ANDLE

.E)+AU.A +ODO)

%s comandos 4A#*8E so e3clusivos de cada programa em uma tasT. Isso significa =ue se ocorrer um 8I#:, o programa c5amado dever ter seus prVprios 4A#*8Es. Ouando o controle volta para o programa c5amador, seus 4A#*8Es so reativados.

65

CECI )+A+U)' EN+E. ONE O& +(E &OLLO*IN2 A0end DE9 IN@uire .ECeive )+A.+0r AC@uire DI)A=>e I)sue .ELease )uspend ADdress DI)Card Zourna> .E)Et=r )4nCpoint AL>oCate DUmp LinK .E)4nC +raCe A)3time ENA=>e LOad .E+.ieve Un>oCK A))ign END=r /onitor .E+Urn Neri?X 0i? EN9 %Er?orm .E*rite *AI+ 0Ui>d EN+er %Oint .Oute *AI+CiCs CAnCe> E,traCt %O% )ENd *.I+E C(ange &Epi %O)t )E+ *.I+E9 *.I+E9 &.O/ :6+E)+E DE +)7; COL>eCt +) 9:&A++)1; &Ormattime %U.ge 2.ANACAO )I2NO&? ,Ct> )+A+U)' A0OU+ +O E,ECU+E CO//AND NA/E5 CONNeCt &.EE %U)E )I2NON E,EC CIC) *.I+E9 +) 9uerX CONNerse &.EE/ain )%OOLC>ose 9ueue:6&A++)1 6; C.eate 2Ds .EAD )%OOLOpen n)Xsid:;U DELAX 2Etmain .EADNeGt )%OOL.ead &rom:6+E)+E DE 2.ANACAO DE.EAD%rev +)7; DELE+E (and>e )%OOL*rite CECI M CO//AND LENEL IN+E.%.E+E. nLengtE:8111 1;U DELE+E9 I2nore .EAD9 )+A.+ nNUmitems:; f Item:; n.eYriteUU A transao CECI A uma poderosa ?erramenta @ue o CIC) o?ereCe para auGO>io R n/ain f AuGi>iarXU programao. Com e>a podemos veri?iCar a sintaGe e eGeCutar @uase todos os Comandos nNOsuspendU %& 1 (EL% ! END " EI0 5 NA. um 6 U)E. E,EC CIC) (E, sem neCessidade de esCrever programa. #/)2 A ?igura aCima mostra a te>a iniCia> da CECI.

%& 1 (EL%

(E, ! END " EI0 5 NA. 6 U)E.

#/)2

66

O eGemp>o mostra a gravao de um Otem na +) &A++)1 uti>iTando a CECI. A CECI mostra o Comando antes de ser eGeCutado :A0OU+ +O E,ECU+E CO//AND;. A seguir veremos o resu>tado da eGeCuo.

*.I+E9 +) 9:&A++)1; &.O/ :6+E)+E 2.ANACAO DE +)7; )+A+U)' A0OU+ +O E,ECU+E CO//AND NA/E5 E,EC CIC) *.I+E9 +) 9ueue:6&A++)1 6; n)Xsid:;U &rom:6+E)+E DE 2.ANACAO DE +)7; nLengtE:8111 1;U nNUmitems:; f Item:; n.eYriteUU n/ain f AuGi>iarXU nNOsuspendU

.E)%ON)E'NO./AL EI0.E)%581111111111 EI0.E)% 581111111111


%& 1 (EL% (E, ! END " EI0 5 NA. 6 U)E. 7)0( $ )&( # /)2 11 )0 11 )&

67

A ?igura mostra @ue o Comando teve .esponse5Norma> portanto a +) ?oi rea>mente gravada. A CECI A muito Lti> @uando preCisamos Corrigir registros em ar@uivos ou mesmo para Criar registros para teste de a>gumas ap>iCaDes.

CE"+ CE0. +) 9UEUE CE0.+111 .ECO.D 1 O& 1 COL 1 O& 1 EN+E. CO//AND bbbbbbbbbbbbbbbbbbb +O% O& 9UEUE bbbbbbbbbbbbbbbbbbbbbbbb bbbbbbbbbbbbbbbbb 0O++O/ O& 9UEUE bbbbbbbbbbbbbbbbbbbbbb

+E/%O.A.4 )+O.A2E 9UEUE CE0.+111 DOE) NO+ E,I)+


PF"#$ELP )RO&SE %&"'NIE* +O% %&7')C.OLL 0AC3 (AL& %&11')C.OLL 0AC3 &ULL %&5'NIE* 0O++O/ %&6'.E%EA+ LA)+ &IND %&$')C.OLL &O.*A.D (AL& %&#'UNDE&INED %&11')C.OLL &O.*A.D &ULL %&1 'UNDE&INED PF%#S&ITC$ $EX'C$AR PF(#TERMINATE

CE0. M 0.O*)E +E/%O.A.4 )+O.A2E - +.AN)IEN+ DA+A A transao CE0. permite ?aTer Consu>ta em ?i>as +) e +DF Com uma sArie de ?aCi>idades. AtravAs da %&1 :(EL%;F temos uma >ista de Comandos @ue podemos uti>iTar para Consu>tar o ConteLdo Comp>eto de ?i>as.

6$

UNIDADE 1%

CE1F ' E8EC/0I)- 1IA.-)S0IC FACI*I0H O CED& A uma transao ?orneCida Com o CIC) @ue ?aCi>ita muito o tra=a>Eo de @uem estH testando novas ap>iCaDes ou neCessita ?aTer uma determinao de pro=>emas on>ine e interativa. c uma ?erramenta Com muitos reCursosF os @uais mostraremos nessa unidade. c muito ?HCi> uti>iTHI>a. 0asta digitar CED& no termina> e pressionar a teC>a EN+E.. Em seguida surgirH a mensagem in?ormando @ue o termina> estH em ED&. A partir daO A sP >impar a te>a e CEamar a transao para aCompanEar sua eGeCuo. O CED& mostrarH Cada Comando E,EC CIC) da ap>iCao Com uma sArie de ?aCi>idades.
TRANSACTION#UPDT PRO*RAM#UPDTP*M TAS+#,,,,,(- APPLID#CICTST" DISPLA.#,, STATUS# PRO*RAM INITIATION EI)TIME EI)DATE EI)TRNID EI)TAS+N / "0%"12 / ,%"-, / 3UPDT4 / (-

EI)TRMID / 312,"4 TRANSACTION#UPDT PRO*RAM#UPDTP*M TAS+#,,,,,(- APPLID#CICTST" DISPLA.#,, STATUS# A)OUT TO EXECUTE COMMAND EI)CPOSN /1 EXEC CICS READ EI)CALEN /, FILE73ARQ,"48 EI)AID / X45D4 INTO73 EI)FN / X4,,,,4 LEN*T$70"8 EI)RCODE / X4,,,,,,,,,,,,4 RIDFLD73,,,,",48 EI)DS / 3........4 EQUAL 6 EI)REQID NO$ANDLE / 3........4 AT X4,,"1,,EA4 3...8 AT X4,,"1,,E)4 AT X4,,"1,,ED4

A ?igura anterior A a primeira te>a @ue o CED& mostra. Note @ue temos uma sArie de in?ormaDes >ogo na primeira >inEa' nome da transaoF nome do programaF nLmero da ENTER# CONTINUE tasK.
PF"#UNDEFINED %&"')U%%.E)) DI)%LA4) %&7')C.OLL 0AC3 Em seguidaF o CED& %&11'%.ENIOU) DI)%LA4 OFFSET#X4,,,5(E4

O )+A+U) indiCa @ue estH em %.O2.A/ INI+IA+ION.


%&5'*O.3IN2 )+O.A2E %&11'UNDE&INED

PF%#S&ITC$ $EX'C$AR

PF(#END EDF SESSION

%&6'U)E. DI)%LA4 %&1 'UNDE&INED

&O.*A.D %&#')+O% CONDI+ION) traT%&$')C.OLL os va>ores iniCiais do EI0 :EGeC Inter?aCe 0>oCK; para essa tasK. EI)FN/X4,2,%4

CE1F ' alterao de argumentos


LINE#,,%,2

ENTER# CONTINUE PF"#UNDEFINED %&"')U%%.E)) DI)%LA4) %&7')C.OLL 0AC3 %&11'%.ENIOU) DI)%LA4 PF%#S&ITC$ $EX'C$AR %&5'*O.3IN2 )+O.A2E %&$')C.OLL &O.*A.D %&11'UNDE&INED PF(#UNDEFINED %&6'U)E. DI)%LA4 %&#')+O% CONDI+ION) %&1 'A0END U)E. +A)3

6#

TRANSACTION#UPDT PRO*RAM#UPDTP*M TAS+#,,,,,(- APPLID#CICTST" DISPLA.#,,

O CED& sempre mostra o Comando antes de eGeCutar :)+A+U)' A0OU+ +O E,ECU+E CO//AND; e apPs a eGeCuo :)+A+U)' CO//AND E,ECU+ION CO/%LE+E;. de argumentos antes de eGeCutar o ComandoF ?aCi>itando =astante o proCesso de teste de uma ap>iCao.
3...8

%ermite ainda a a>terao de a>guns va>ores STATUS# COMMAND EXECUTION COMPLETE CE1F ' alterao de response codes FILE73ARQ,"48
INTO73 LEN*T$70"8 RIDFLD73,,,,",48 EQUAL NO$ANDLE EXEC CICS READ

OFFSET#X4,,,5(E4

LINE#,,%,2

EI)FN/X4,2,%4

RESPONSE# NOTFND ENTER# CONTINUE PF"#UNDEFINED %&"')U%%.E)) DI)%LA4) %&7')C.OLL 0AC3 %&11'%.ENIOU) DI)%LA4 71 PF%#S&ITC$ $EX'C$AR %&5'*O.3IN2 )+O.A2E %&$')C.OLL &O.*A.D %&11'UNDE&INED PF(#END EDF SESSION %&6'U)E. DI)%LA4 %&#')+O% CONDI+ION) %&1 'A0END U)E. +A)3

O CED& mostra a eGeCuo do Comando e in?orma o .E)%ON)E. %odemos a>terar esse response para @ua>@uer va>or vH>idoF Com o o=Jetivo de testar rotinas @ue ?aTem tratamento de erros no programa.

CE1F ' line num er e offset


TRANSACTION#UPDT PRO*RAM#UPDTP*M TAS+#,,,,,12 APPLID#CICTST" DISPLA.#,, STATUS# A)OUT TO EXECUTE COMMAND EXEC CICS SEND MAP MAP73TESTMP48 FROM73................9................9........................4...8 LEN*T$7("18 MAPSET73TESTMS"48 TERMINAL FREE+) ERASE

OFFSET#X4,,,A)-4

LINE#,,("0

EI)FN/X4"-,14

ENTER# CONTINUE

Outra ?aCi>idade do CED& A eGi=ir a >inEa onde enContraIse esse Comando na >istagem do PF%#S&ITC$ $EX'C$AR PF(#UNDEFINED pe>o +rans>ator durante a Compi>ao :LINE;. +am=Am mostra o des>oCamento desse Comando a partir do inOCio do programa:O&&)E+;. Isso ?aCi>ita a %&"')U%%.E)) DI)%LA4) %&5'*O.3IN2 )+O.A2E %&6'U)E. DI)%LA4 %&7')C.OLL 0AC3 %&$')C.OLL %&#')+O% CONDI+ION) >oCa>iTao do Comando no programa &O.*A.D ?onte.
PF"#UNDEFINED programa ?onte gerada

Facilidades do CE1F

%&11'%.ENIOU) DI)%LA4

%&11'UNDE&INED

%&1 'A0END U)E. +A)3

CED - -exadecima1
Com a teC>a %& podemos ?aTer a Converso dos argumentos para ?ormato EeGadeCima>. Com esse proCedimentoF o CED& eGi=e tam=Am o endereo de memPria onde esses argumentos esto >oCa>iTados.

71

CED 3 4*R,IN5 S2*R+5E


%ressionando a teC>a %&5 no /enu %rinCipa> do CED&F temos aCesso R *O.3IN2 do programa. A>Am de eGi=ir todos os Campos da *O.3IN2F A permitido a>terar o ConteLdo desses Campos. A>Am da *O.3IN2F podemos veri?iCar o ConteLdo de @ua>@uer endereo de memPria dentro do CIC). 0asta posiCionar o Cursor no Campo ADD.E)) e in?ormar o endereo deseJado.

CED 3 Exec Inter6ace 71oc8


A @ua>@uer instanteF temos aCesso ao EI0. 0asta pressionar %&5 :*O.3IN2I)+O.A2E; e depois %&" :EI0 Disp>aX;.

CED 3 Sto) conditions


)e no deseJamos aCompanEar a eGeCuo da tasK Comando por ComandoF temos a possi=i>idade de de?inir CondiDes de parada :)+O% CONDI+ION); atravAs da %&#. ApPs de?inir as CondiDesF a teC>a %&" :)U%%.E)) DI)%LA4); vai ?aTer Com @ue os Comandos anteriores ao so>iCitado no seJam eGi=idos no CED&.

CED 3 Pre.ious Dis)1a9


O CED& permite visua>iTao de atA 11 painAis anterioresF se tivermos neCessidade de rever a>gum Comando @ue JH ?oi eGeCutado. Isso A ?eito atravAs da teC>a %&11 :%.ENIOU) DI)%LA4;. O Campo DI)%LA4 :1a >inEa da te>a do >ado direito; mostrarH um va>or negativoF indiCando @ue> te>a estH sendo eGi=ida.

CED 3 )seudo-con.ersao
%odemos aCompanEar as vHrias tasKs de uma pseudoIConversao Com o CED&. No ?ina> da tasKF A ?eita a pergunta se @ueremos aCompanEar a prPGima eGeCuo. :.E%L4' 4E)-NO;.

CED 3 so1icitando +:end


%odemos so>iCitar o A0END da tasK @ue estH sendo monitorada pe>o CED&atravAs da %&1 . )erH so>iCitado um CPdigo de A0ENDF e em seguida a %&1 deve ser pressionada novamente.

7!

&i'(iogra)ia

Referncia: CICS PROGRAMAO COMMAND LEVEL RONNAM Con !"#oria e$ Infor$%#ica L#&a'

7"