You are on page 1of 74

CICS

____________________________________________________________________________________________ Versão 1 1

PROGRAMAÇÃO
COMMAND LEVEL

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

____________________________________________________________________________________________ Versão 1 $

Legenda dos Componentes Orientativos........................................................................................................................5 Introdução.......................................................................................................................................................................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............A)E.............................71 &.........71 EN+E.............................................................................................................................................................71 E................................................' CON+INUE.......................................................EE30............................................................................................................................................................................................................................................................................................................71 %&1'UNDE&INED %& ')*I+C( (E........................7111A0$7 LINE'11!1# EI0&N5.........................................................................................................................................71 O&&)E+'................................................................71 0i=>iogra?ia........71 +E..........................-C(A................................................................71$1"7.................................................................................................................. %&!'UNDE&INED......................................../INAL....................71 ...................................................7" " ................................................................

Legenda dos Componentes Orientativos. DICA LEIA TOME NOTA ATENÇÃO CURIOSIDADE 5 .

conceitos e comandos.Introdução Este curso oferece uma visão geral de programação CICS. Ao final deste curso você estará apto a desenvolver programas CICS. 6 .

do CIC)F e @ue representa o proCesso de uma ap>iCação. +asK' A a unidade de tra=a>Eo do CIC)F ou para ser mais eGatoF A a eGeCução de uma transação. Uma transação sempre ?iCa amarrada a um programa de ap>iCaçãoF @ue A o proCessado @uando a transação A eGeCutada. Esse termina> A denominado Qtermina> assoCiado R transaçãoS.UNIDADE 1 Conceitos fundamentais e pseudo-conversação O @ue A CIC)B %ara @ue serveB Como desenvo>ver ap>iCaçDesB 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>iCação CO0OL-CIC). 9uase sempre a transação tra=a>Ea assoCiada a um termina>F JH @ue o CIC) A um produto @ue proCessa ap>iCaçDes em tempo rea>. Conceitos Dois ConCeitos ?undamentais para tra=a>Ear Com o CIC)' +ransação' A o CPdigo de 1 a " CaraCteres de?inido na %C+ :program Contro> ta=>e. O CIC) A um produto mu>tiIusuHrio e mu>tiItasK :mu>tiItare?a. Cada eGeCução A denominada +asK.F portanto permite a eGeCução ConCorrente de inLmeras ap>iCaçDes de uma grande @uantidade de usuHrios. +am=Am aprenderemos o ConCeito de programação %seudoIConversaCiona>F a ?orma mais moderna e vantaJosa de desenvo>ver ap>iCativos so= CIC). O CIC) A Composto de @uatro Hreas' %C+ M ta=e>a de Contro>e de transaçDes +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 comunicação entre CICS %odemos ter uma LniCa região 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 ComuniCação. 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. %odemos ter diversos usuHrios eGeCutando a mesma transação em vHrios terminais. 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 versão. 7 . +rataIse de um monitor transaCiona> On>ineF ou seJaF um produto @ue gerenCia a eGeCução de ap>iCaçDes em tempo rea>.

)e estiverF um =>oCo de Contro>e denominado +CA :+asK Contro> Area. Cada tasK terH tam=Am uma Hrea denominada EI0 :EGeC Inter?aCe 0>oCK. Comp %iC s#:1$...F a tasK A eGeCutada. Comp $ . EntretantoF o CIC) não Carrega na memPria vHrias CPpias de um mesmo programa. AtravAs da %C+ o CIC) sa=e @ua> o programa assoCiado R transaçãoF e veri?iCa se esse programa estH Cadastrado na ta=e>a %%+ :%roCessing %rogram +a=>e. A +CA A o ponto ?oCa> da tasKF JH @ue todas as Hreas são enCadeadas a partir de>a.2U/EN+O 7 IU DELI/I+ADO.K. Execução concorrente de tasks Como dissemosF para Cada eGeCução de transação :tasK..F @ue traT uma sArie de in?ormaçDes muito Lteis para nossos programas.3IN2I)+O.EC CIC) A ?unção so>iCitada :sendF reCeiveF .. A *O.ECEINE IN+O:&LDA. As opçDes Com seus respeCtivos argumentos %ara CO0OLF o de>imitador ENDIE. Argumentos DataIva>ue %iC s#:1".EC.D) IU &UNVWO ! IU O%VWO " IU A. A Criado e vai eGistir durante a eGeCução da tasK. LEN2+(:*ILEN. ! " 5 6 7 Um Comando CIC) A ?ormado pe>a estrutura mostrada aCima' As KeXYords E. Formato dos comandos E. Apenas uma CPpia do programa A Carregada e uti>iTada por todas as tasKs.A2E tem @ue ter uma CPpia para Cada tasKF JH @ue e>a A uti>iTada Com dados di?erentes para Cada usuHrio. ENDIE.2U/EN+O 5 IU O%VWO 6 IU A.Executando transações 9uando o usuHrio CEama uma transação a partir de um termina> ConeCtado ao CIC)F imediatamente A veri?iCado se essa transação estH Cadastrada na ta=e>a %C+. )e estiver tudo o.EC CIC) . %ortantoF se tivermos vHrias tasKs da mesma transaçãoF teremos vHrias +CAsF uma para Cada tasK.F A Criado um =>oCo de Contro>e CEamado +CA.EC 1 1 IU 3E4*O.

EC CIC) ..E+U.. /ONE # +O E....EC..EAIIN%U+. %IC . A.:11.ECEINE Comandos de ?ormatação de data e Eora A)3+I/E &O.. # . PROCEDURE DIVISION.N !sicos Comandos de termina> Contro> Comando RECEIVE *O..EAIIN%U+. CO/%. Comandos )END .. 1 &ILLE. 1 )OLICI+ %IC .A2E )EC+ION...AN) %IC ..3IN2I)+O. 77 *ILEN %IC )#:1"... Constantes permitidas DataIarea CO0OL data name Não Constante Name CO0OL data name Constantes permitidas La=e> (Emmss %ointerIre? Nome de parHgra?o %iC s#:17..%iC G:15..... ENDIE.. . 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).../A++I/E Comandos de tArmino de programa .ECEINE *ILEN IN+O:A.. LEN2+(:*ILEN.:1".:1". 1 CODI+.

CO/%.AC+E. 77 *IE.. 3.. . A.:$1.E)7 +O ()!R'SP*+'........E DINI)ION..:1". 1 &ILLE.AN) %IC )#:1".A2E do programa.3IN2I)+O.EAIIN%U+.. . %...EC CIC) . A partir do CO0OL IIF o LEN2+( deiGou de ser neCessHrio. CO/%.. A opção LEN2+( espeCi?iCa o tamanEo mHGimo permitido para a reCepção dos dados.9. 11 /)2 %IC .1..:1".E)% :*IE. LEN2+( :*ILEN.RESP *O.. CODI+. CO/%.. A.3IN2I)+O..E)% nos Comandos ?aT Com @ue o CIC) não manuseie as CondiçDes de eGCeção.AN) %IC .. Os dados norma>mente são reCe=idos na *O. 77 *ILEN %IC )#:1".:1". Comando SEND *O. %IC .G'RR/)2 . %IC )#:1$... 11 .. I& %&'RR E9UAL /ONE 6/A..A2E )EC+ION... 77 *ILEN 77 *IE.:11. %IC )#:1$.3IN2I)+O. É EX !E"A"E# E I"$%! A# E &E!I'ICA! EXCE()ES E" C%"A#*%S CICS. O Co=o> assume @ue o tamanEo mHGimo dos dados A o tamanEo da Hrea espeCi?iCada na opção IN+O. A opção . CODI+..EC... /ONE # +O *ILEN E. CO/%.EAIIN%U+.1 Condições de Exceção .A2E )EC+ION..ECEINE IN+O :A..O Comando . 1 )OLICI+ %IC . ENDIE.EAIIN%U+.. # CA. %IC .. O CIC) simp>esmente armaTena no Campo indiCado o tipo de eGCeção e o programa deve veri?iCar se o Comando o=teve suCesso ou não.ECEINE serve para traTer para a memPria do CIC) e do programa os dados @ue ?oram digitados pe>o usuHrio no termina>.OCEDU.

....EC CIC) .. . # CA...:1$"1.. LEN2+( :*ILEN...)O.EC CIC) . ENDIE.E)7 +O /)2 E.E)%:LEN2E......E)% :*IE.:1"...AC+E. /ONE 6/A.EAIIN%U+..OCEDU.... 11 A.EC CIC) )END &.. 1 CODI+. ENDIE.E DINI)ION..EC.:11.EAIIN%U+.. I& O Comando )END serve para enviar dados ao termina> do usuHrio. LEN2+( :51........ 1 )OLICI+ 11 /)2 .ECEINE %IC ... LEN2+( :*ILEN.3IN2I)+O....EC. O Comando ... %.A2E )EC+ION. %IC .OCEDU.:$1. CO/%. %IC )#:1$. %..AN) 1 &ILLE..... E9UAL +O /)2 CU. /ONE 6/A.E+U.. CO/%.E)7 E. Posicionamento de Cursor *O.N ENDIE....E DINI)ION. /ONE # E.E)%:LEN2E. E9UAL D&(.. *IE. A in?ormação A gravada na te>a do termina> a partir do ponto onde o Cursor ?iCou posiCionado.EC CIC) .. %IC .EAIIN%U+.:1".EC CIC) )END CON+. # CA..... 1 )OLICI+ 11 /)2 .O/ :/)2. *IE.1 &ILLE..N serve para terminar a ap>iCação e devo>ver o Contro>e ao CIC)..EC E..:11. %IC .. D&(.OL I& 11 .. +O *ILEN IN+O :A.. 77 *ILEN 77 *IE.EC. %IC .E)% :*IE..... %IC .E+U.AC+E.. ENDIE.. /ONE # E.. %IC .:1". .:$1..ECEINE %IC )#:1". +O *ILEN IN+O :A....

EC CIC) )END CON+. %ortantoF a mensagem enviada pe>o Comando )END ?iCarH posiCionada na >inEa " do termina> do usuHrio.EAIIN%U+.+A' 6.EC E.AC+E. %IC . LEN2+( :51. %IC ..EC E. CO/%I!.EC CIC) .:11.OL estH sendo uti>iTado nesse momento para posiCionar o Cursor na primeira posição da >inEa " do termina>F JH @ue norma>mente uma te>a de termina> tem " G $1 :1# 1 posiçDes.ENDIE. ENDIE.EC E..A2E )EC+ION.EC. .E+U. E9UAL D&(.:1$..EC CIC) .. %IC )#:1$.:1$"1.:1"..EC E. 77 *IA0) *IDA+AI).. # CA.. ENDIE. LEN2+( :*ILEN. %IC .EC. %IC )#:15...OCEDU. CO/%. I& +O *ILEN IN+O :A.. %IC .N ENDIE. 1 CODI+.. NALUE 6DA+A DE (OZE' 6....OL CU..E)% :*IE.AI). NALUE 6(O.. %.AN) 1 &ILLE..E DINI)ION.EC CIC) . %IC .. )OLICI+ E9UAL 6DA+A7 1 . 1 *IDA+A *I(O. ENDIE.. ormatação de Data e !ora *O. ENDIE.. 1 *I(O.3IN2I)+O. /ONE 6/A. CO/%. /ONE # E. 1 )OLICI+ 11 /)2 .EC CIC) )END &..E)%:LEN2E. O Comando )END CON+.EC.:$1.EC CIC) )END &. &ILLE.:1".)O.E)7 +O /)2 E..A CE.. &ILLE.. %IC .. I& *IE.O/ :/)2..ECEINE %IC )#:1".E+U.:!1. %IC . 77 *ILEN 77 *IE.:1$..EAIIN%U+... LEN2+( :51.N ENDIE..O/ :/)2.A 11 A..:!1.. %IC .

EC CIC) E. ENDIE./ID EI0&N (ora Data :Ju>iano. *atesep+ fa.)O. A ap>iCação reCe=erH o tipo de so>iCitação do usuHrioF proCessarH Con?orme ?or a neCessidade e devo>verH a resposta ao termina>.EC )END CON+.EC . formatará a data dd. +I/E)E% +I/E :*I(O. +amanEo da Commarea CPdigo da transação +ermina> assoCiado \>tima ?unção eGeCutada 1! .A. %ortantoF uma tOpiCa :em=ora simp>es.O/ :*IDA+AI). DA+E)E% DD//44 :*IDA+A.EC. Se colocarmos argumento *A ESE$ 0-.EC CIC) E.EC CIC) E.EC . LEN2+( :"1. %osição do Cursor +eC>a pressionada :enterF p?F ./1 para a separação.EC CIC) E./A++I/E para editar a data e Eora de aCordo Com a pre?er[nCia do usuHrio. a separação com -. ENDIE.EC &O./A++I/E A0)+I/E :*IA0).N ENDIE.E. ENDIE. ENDIE. ap>iCação CIC)' reCe=e a so>iCitaçãoF proCessaF devo>ve a resposta para o usuHrio e termina./ da data.E+U.EC &O. LEN2+( :"1. E9UAL 6(O.A7 A)3+I/E A0)+I/E :*IA0).EC )END &.OL CU.EC CIC) E. ENDIE.EC CIC) I& E.. ENDIE. ENDIE.:1$"1.EC CIC) )OLICI+ E.2222 Exec Interface "lock #EI"$ EI0+I/E EI0DA+E EI0C%O)N EI0AID EI0CALEN EI0+.EC CIC) A0)+I/E :*IA0)./A++I/E A0)+I/E :*IA0)..EC CIC) A)3+I/E E.N ENDIE.mm.NID EI0+..AI).EC )END &.E+U. O Comando A)3+I/E in?orma ao programa o momento eGatoF e a partir daO podemos uti>iTar o &O.O/ :*I(O.EC.

A Hrea transmitida deve ter o mesmo tamanEo em sua reCepção na D&(CO//A.EA :nome reservado. Como sa=eremos se estamos proCessando a transação pe>a primeira veTB A resposta para esta 1" . O trans>ator tam=Am inC>ui a>gumas Hreas de tra=a>Eo na *O.F uma nova tasK da mesma transação serH eGeCutada.EA. A ap>iCação reCe=e a so>iCitação do usuHrioF proCessaF envia a resposta e terminaF >i=erando pratiCamente todos os reCursos.E de Compi>ação' +ransa>ator' A um prAIproCessador ?orneCido Com o CIC)F e @ue serve para traduTir os Comandos E.esponse Code O EI0 :EGeC Inter?aCe 0>oCK. Conversacional x %seudo-conversacional EGistem duas ?ormas de programação so= CIC)' ConversaCiona>' A uma tACniCa antiga @ue pratiCamente não 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>iCaçDes @ue proCessem rapidamente e Consumam pouCos reCursos.AN)ID :6&A+17.EC CIC).EI0. Na prPGima eGeCuçãoF os dados passados serão reCe=idos em uma Hrea reservada do programaF >oCa>iTada na LIN3A2E )EC+ION e CEamada D&(CO//A. %ortantoF o usuHrio terH a sensação de uma ConversaçãoF mas estarH oCorrendo uma pseudoI Conversação. .3IN2I)+O. Na primeira eGeCução da transação não podemos uti>iTar a D&(CO//A. %seudoIConversaCiona>' A a tACniCa mais uti>iTadaF mais moderna e mais e?iCiente de programação.E)% .F o programa termina atravAs do Comando . Isso signi?iCa @ue a tasK terminarHF os reCursos serão >i=eradosF mas @uando o usuHrio teC>ar EN+E. Essa Hrea serH passada atravAs de uma Hrea de *O. %seudo-conversacional ApPs enviar a resposta ao usuHrio :)END. A uma Hrea @ue ?iCa na LIN3A2E )EC+ION de nosso programa e traT uma sArie de in?ormaçDes @ue podem e devem ser uti>iTadas a @ua>@uer momento para ?aCi>itar nosso tra=a>Eo..E+U. Compilação de %rogramas %ara preparar um programa CO0OL-CIC)F são neCessHrias tr[s ?ases na %. ACimaF estão a>gumas das in?ormaçDes @ue Constam do EI0.NF enCadeando uma nova eGeCução da mesma transação M +.. Ao terminarF a ap>iCação enCadeia uma nova eGeCução da transaçãoF Como veremos a seguir. Essa tACniCa Consiste em proCessar os dados reCe=idos do usuHrioF devo>ver a respostaF e aguardar para reCe=er novas so>iCitaçDes.EAF pois e>a ainda não eGiste.A2E no programa e pode ter @ua>@uer nome.EC CIC) para /ONEs e CALLsF JH @ue o Compi>ador Co=o> não reConEeCe E.F %&sF %AsF ou CLEA.OCEDU.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.EA. E>a eGistirH a partir da segunda eGeCuçãoF Com os dados reCe=idos. . %assagem de dados para pr&xima task %ara enviar dados para a prPGima tasKF uti>iTamos uma Hrea de ComuniCação CEamada CO//A.

NALUE 6N7.. &A+1%2/..E para passagem de dados..ar Commarea na 9%!:I#.E+U. ENNI. C%""A!EA 3 *'4C%""A!EA A c5ave da pseudo6conversação esta na Communication Area. #a primeira e3ecução  EI7CA8E# .A/IID.E DINI)ION.A/IID.EA:*ICO//. /ONE LIC(1 +O .OCEDU.ero  dados rece>idos em 8I#:A. 15 .AN)ID :6&A+17.. #as demais e3ecuç<es  EI7CA8E# maior =ue . LIN3A2E )EC+ION.importante @uestão estH em um Campo do EI0 denominado EI0CALEN :Commarea LengtE..EC CIC) . %. ENDIE.:11. I& EI0CALEN E9UAL ^E. "# $-C!1 PIC %&"1'. LEN2+( :11.A2E )EC+ION. *O.A2E. A partir da segunda eGeCuçãoF teremos D&(CO//A.N +.3IN2I)+O.ON/EN+ DINI)ION..6S %!A.O) /ONE5111 +O 9+D E. Dessa ?orma Conseguimos ComuniCação tota> entre as tasKs da mesma transação eGeCutadas pe>o usuHrio..EA.. CO//A.O2. %.EAF portantoF o EI0CALEN estarH TeradoF e passaremos dados atravAs de uma Hrea de *O. %.O2. %seudo-Conversacional ' utili(ando commarea IDEN+I&ICA+ION DINI)ION. 1 LI9+D %IC #:1#. D&(CO//A. /ONELI9+D +O . 1 9+D %IC #:1#.3IN2I)+O.. C(1 %IC .EA... Na primeira eGeCução da transaçãoF o EI0CALEN estarH Com va>or TeroF e nas demais eGeCuçDes estarH maior @ue Tero. Na primeira eGeCuçãoF não eGiste a D&(CO//A. C)")* so CICS ' +estrições IDEN+I&ICA+ION DINI)ION.ero  utili.E SEC I%# na *'4C%""A!EA.EC. *ICO//.EAF portanto podemos uti>iTar os dados reCe=idos na D&(CO//A.

(I0I+ )+O% . 9uem gerenCia os ar@uivos A o CIC)F e não o programa de ap>iCação. %.AN)&O.O2:name. LIN3A2E )EC+ION.OCEDU.I+E )o= CIC) não podemos uti>iTar instruçDes CO0OL @ue so>iCitem serviço direto ao )istema OperaCiona>. X &ILE )EC+ION.EAD *. X IN%U+IOU+%U+ )EC+ION. *O.E DINI)ION. CO0OL II ACCE%+ DI)%LA4 CLO)E O%EN .I+E .O2:name.IN2 +I/E +.A/INE E. ApPs eGeCutarmos uma transação no CIC)F Caso tenEa oCorrido a>guma modi?iCação no programa de ap>iCação e e>e tenEa sido reCompi>adoF teremos @ue in?ormar ao CIC) @ue uma nova CPpia deve ser Carregada na memPria. NE*CO%4 OU CE/+ )E+ %.I+E DELE+E O)-CO0OL ACCE%+ DI)%LA4 E.IN2 CLO)E O%EN . CE/+ )E+ %.CON&I2U. )o= CIC) não uti>iTamos IN%U+IOU+%U+ )EC+ION e &ILE )EC+ION. %(A)EIN 16 . %ara tantoF uti>iTamos a transação de /aster +ermina> M CE/+.UN IN)%EC+ )+. DA+A DINI)ION.E*./ UN)+.A2E )EC+ION.A+ION )EC+ION.3IN2I)+O.EAD *.

EVO' C%&' NO.A%%I-. CON+A' stopper :de>imitador. de determinada ap>iCação CIC)F A neCessHrio @ue o ana>ista responsHve> pe>a ap>iCação ?aça uma reunião Com os usuHrios ?inaisF a ?im de sa=er @uais são suas neCessidades de in?ormaçDes. Cada Campo tem atri=utos prPpriosF visando ?aCi>itar o tra=a>Eo do usuHrio. A partir desse pontoF serH neCessHrio ?aTer a de?inição dos mapas seguida de sua geração.UNIDADE 2 "ASIC . 1efinição de mapas %ara deCidir Como serão os mapas :te>as de termina>. A ?aCi>idade @ue o CIC) ?orneCe para tra=a>Earmos Com mapas CEamaIse 0/) :0asiC /apping )upport. uti>iTa dados ?ormatados :mapas. NO/E' Campos 2345 1 ! " 5 6 . . AtravAs dos mapas tornaIse muito mais simp>es tra=a>Earmos Com apresentação de dados ao usuHrio atravAs de nossos programas de ap>iCação. 17 . ENDE. 0asiC /apping )upport :0/). S/%%)+0 Nessa unidade veremos mapasF @ue são te>as de termina> Compostas de diversos Campos de dados ?ormatadosF isto AF Com posição ?iGa na te>a.. 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>.

Um atri=uto oCupa o espaço de um =Xte na te>a do termina>F mas seu ConteLdo não A visOve>F JH @ue estamos tratando do Contro>e das CaraCterOstiCas do Campo. )e estiver des>igadoF o ConteLdo não serH transmitido para o pgm. /D+ ON-O&&' se o /D+ :/odi?ied Data +ag. CON+A' Constantes numeriC ?ie>ds Campos protegidos A ?igura aCima mostra o eGemp>o de um mapa.O+EC+ED-%.FLINE51FCOLU/N51 1$ .O+. A)3I%' Campo protegido e o Cursor não pode ser posiCionado ne>e.+-D. Cada Campo tem uma posição ?iGa no =u??er do termina> :te>a. Os Campos Constantes gera>mente tem atri=uto protegido.I0U+O)' UN%.' Campo Com intensidade norma>F =ri>Eante ou invisOve>.3. de um Campo estiver >igadoF o ConteLdo desse Campo serH transmitido para o programa. Os Campos variHveisF @uando servirem para entrada de dadosF devem ter atri=uto desprotegido. " Um mapa A Composto por Campos ?ormatados ! 71. Cursor protegidos de>imitadores NO/E' ` C%&' NO. NU/' dependendo do EardYareF permite ao usuHrio digitar apenas dados numAriCos./F/ODE5INOU+FLAN25CO0OL . Campos formatados 2345 Campos %osiC.3 :NO-0. Esse mapa A ?ormado por Constantes e variHveisF e Cada Campo tem seu atri=uto. +IOA%&.I2(+-DA..54E)F)+O. 1efinindo um mapa +E)+/)1 D&(/)D +4%E5_)4)%A. A+. .F e A de>imitado por atri=utos.O+EC+ED :UN%./AL-0.' usuHrio pode ou não digitar in?ormaçDes. Os Campos numAriCos neCessitam ter atri=uto numAriCoF para impedir @ue o usuHrio digite CaraCteres não numAriCos.A2E5AU+O +E)+/% D&(/DI )I^E5: "F$1.O+-%. Os de>imitadores são 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?ormaçDes. NO.

$odemos utili.O+FNU/.I05UN%. Apenas um campo em cada mapa deve conter este atri>uto.FLEN2+(511FA++. D&(/D& %O)5:!F!$.I05A)3I% /)2 D&(/D& %O)5: "F1.I05:UN%. DAS I'EB08E' .FLEN2+(571FA++. Não podemos de?inir um /A%A sem de?inir tam=Am o /A%)E+.D&(/D& %O)5:!F1.I05A)3I% C%& D&(/D& %O)5:7F6. D&(/D& %O)5:5F6.I05A)3I% D&(/D& %O)5:!F7.I05A)3I% D&(/D& %O)5:5F1.FLEN2+(5!1FA++.FLEN2+(51FA++.O+FIC.ar par@metros para definir a picture de edição do campo e tam>?m para alin5amento e valori. 1# .FLEN2+(51FA++.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. % atri>uto IC. O eGemp>o aCima mostra a de?inição de um /A%)E+ CEamado +E)+/)1.O+ D&(/D& %O)5:5F"7.ará os caracteres não preenc5idos com >rancos ou .78A#:1 ou DAS I'EB0!I.I05:UN%.I05A)3I% D&(/D& %O)5:7F1.FLEN2+(51FA++.FLEN2+(55FINI+IAL57NO/E'7FA++. D&(/D& %O)5:7F1$. Nesse /A%)E+ temos apenas um /A%A de?inido M +E)+/%.4 . Em seguidaF temos as de?iniçDes dos Campos do /A%A.FLEN2+(5"1FA++.FE!%1 alin5ará o campo G es=uerda ou G direita e valori.ação de caracteres não preenc5idos.FLEN2+(5"FINI+IAL57C%&'7FA++.FLEN2+(5"FINI+IAL57END'7FA++. As maCros são' D&(/)D' de?ine o mapset] D&(/DI' de?ine o mapa] D&(/D&' de?ine Campos no mapa. indica =ue neste campo ? =ue deve ser posicionado o cursor.eros. %ara ?aTer a de?inição A neCessHrio uti>iTarmos as maCros 0/) @ue o CIC) ?orneCe. $IC%A B-CC/ demonstrará para o usuário o campo com esta edição.I05A)3I% ENDE.

EDE&INE) ENDE. 1 . A seguir veremos o resu>tado da eGpansão do CO%4 +E)+/)1 Codi?iCado na *O. 1 &ILLE. /apa )im=P>iCo CO%4 +E)+/)1. 1 NO/EL %IC )#:1".3IN2I )+O. 1 NO/E& %IC . Essa Compi>ação A ?eita em duas ?ases' 1a ?ase' Compi>ação e >inKedição resu>tando em um mPdu>o eGeCutHve> assem=>erF @ue A Cata>ogado em uma =i=>ioteCa de programas.EDE&INE) C%&&..Se =uisermos inserir neste "apset mais um "apa devemos colocar outro *'4"*I antes do *'4"S* E$EB'I#A8.A2E eGpande o /apa )im=P>iCoF para podermos re?erenCiar os Campos do mapa..L %IC )#:1". Esse mPdu>o A CEamado de /apa &OsiCoF Composto pe>as in?ormaçDes de?inidas nas maCros.:11.E. 1 ENDE.. 1! ENDE.:1 .&..apas e %rogramas +E)+/%I. 1! C%&A %IC . 1 &ILLE. 1 C%&& %IC .:11. 1 ENDE.:11.:11.. Durante a Compi>ação do programaF o CO%4 6nomeIdoImapset7 Co>oCado na *O.. . 1 &ILLE. 1 C%&L %IC )#:1".. 1 NO/EI %IC . Isso A ?eito atravAs da Compi>ação do /apsetF atravAs de uma %.OCEDU.:11. . 1 ENDE.3IN2 do programa.. . &ILLE.. CO/%.:11.I %IC .:"1.A %IC . Durante a eGeCução do programaF @uando A emitido um Comando para reCe=er ou enviar um mapaF o /apa ?OsiCo A eGeCutado.:!1. 1! NO/EA %IC . 1 C%&I %IC . CO/%. CO/%.. %erCe=am @ue todos os Campos @ue ?oram de?inidos Com >a=e> no 0/) apareCem no CopX=ooK gerado. Assim Como os programasF os mapas ?OsiCos dever ser de?inidos na %%+ do CIC)] a ?ase' Compi>ação das maCrosF resu>tando no /apa )im=P>iCoF @ue na verdade A o CopX=ooK Co=o> re?erenCiando os Campos @ue serão uti>iTados no programa.:11.EDE&INE) NO/E&. %IC .& %IC . . Compilação de um mapa ApPs de?inir o /apset-/apaF temos @ue ?aTer sua geração.

1 C%&O %IC 1 &ILLE.EDE&INE) /)2&. +omando Como eGemp>o o Campo nomeF temos' NO/EL' :L5LEN2+(. ContAm a in?ormação @ue @ueremos enviar para o termina> do usuHrio.. esse Campo serH a>imentado pe>o CIC) Com o tamanEo do ConteLdo digitado pe>o usuHrio em uma operação de Input] NO/E&' :&5&LA2.A)E EO&] NO/EI' :I5IN%U+. . J K 8impar a tela não ? movimentar spaces. A o Campo @ue podemos a>terar o atri=uto de?au>t de um Campo em uma operação de Output] NO/EO' :O5OU+%U+.I0U+O. +E)+/%O . 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. .:11. . 1 NO/EO 1 &ILLE. 1 ENDE... &ILLE.7$17 se o usuHrio digitar in?ormaçDes no Campo e em seguida apagar essa in?ormação uti>iTando a teC>a E. %IC .. .:"1. CO/%.:!1.. L K "ovimentar loM6values ? manter os campos da tela.7117 ou então . 1 /)2I %IC .. 1 /)2O %IC %IC %IC %IC %IC %IC .:1!. armaTena o ConteLdo pe>o usuHrio no Campo] NO/EA' :A5A+.:71.:71..O 1 &ILLE. .. Cada Campo apareCe 5 veTesF Com su?iGos di?erentes.. N K $ara ligar "*  atri>uto B 'SE 1 . 1 &ILLE. em uma operação de InputF esse Campo poderH ter o ConteLdo ...:1!. 1 &ILLE..:1 .EDE&INE) +E)+/%I. . %IC .:11. 1! /)2A %IC . 1 /)2& %IC ..:1!.:1!.1 /)2L %IC )#:1".:11. .

EC.EC. /A%ONL4 ENDIE.apas Send (a) O Comando )END /A% A uti>iTado para enviar um mapa ao termina> do usuHrio. /A%)E+:6+E)+/)17. e enviar DA+AONL4.EC. Como podemos ter mais de um mapa em um mapsetF temos @ue in?ormar o nome do mapa e tam=Am do mapset. ENDIE. E. E. 1. ENDIE. E. . *)ções As opçDes /A%ONL4 e DA+AONL4 servem para eConomiTar transmissão de dados durante uma operação de envio de mapas. &. /A%)E+:6+E)+/)17.3IN2.EC CIC) )END /A%:6+E)+/%7. %or eGemp>oF o mapa enviado durante a primeira eGeCução de uma transação :mapa >impo.EC CIC) )END /A%:6+E)+/%7.EC CIC) )END /A%:6+E)+/%7. /A%)E+:6+E)+/)17. .F agrega ao mapa ?OsiCo e envia para o termina> do usuHrio. !.EC CIC) )END /A%:6+E)+/%7. /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. E.EC. O )END /A% pega os dados do mapa sim=P>iCo :*O. DA+AONL4 ENDIE.Enviando . /A%)E+:6+E)+/)17. %ara mantermos atri=utosF devemos mover >oYIva>ues para os Campos atri=utos e os demais :+E)+/%O. ZH neste eGemp>o estamos enviando apenas o mapa sim=P>iCo.O/:+E)+/%O.] 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 eGeCução da transação. No eGemp>o aCima estamos enviando apenas o mapa ?OsiCoF não estamos enviando dados.

A2E )EC+ION.A)E ALA.E DINI)ION.EA %IC . /A%)E+ :6+E)+/)17. 11 D&(CO//A.O2.:11./ ?aT som @uando starta a te>a.EC. *O. +ece endo .A/IID.A)E serve para >impar a te>a do termina> antes de enviar o mapa. CO%4 +E)+/)1. ". prevalecerá o posicionamento especificado no SE#*.EE30 ENDIE. %. A opção E. A opção ALA. %.EE30 ?aT Com @ue o teC>ado do termina> seJa >i=erado >ogo apPs o envio do mapa. $ara posicionar o cursor no meio do programa.O) /ONE 6DI2I+E DADO)7 +O /)2O E.Neste eGemp>o ! estamos enviando os dados de output. LIN3A2E )EC+ION.OCEDU. Ouando for especificado o par@metro CA!S%! no comando SE#*. IDEN+I&ICA+ION DINI)ION. &.apas ' +eceive . O eGemp>o aCima mostra o envio de um mapa para o termina> do usuHrio durante a primeira eGeCução da transação :1a ?ase da pseudoIConversação. e no mapa e3iste um campo com atri>uto IC.ap IDEN+I&ICA+ION DINI)ION.. I& EI0CALEN E9UAL ^E. &A+1%2/. ! . devemos mover 0KJ1 para o campo 8 e colocar o par@metro CA!S%! no comando SE#*. Nesse eGemp>o a opção /A%ONL4 não pode ser uti>iTada pois @ueremos @ue o ConteLdo do Campo /)2O seJa enviado ao usuHrio Juntamente Com o mapa ?OsiCo.EC CIC) )END /A% :6+E)+/%7. A opção &./ &..O/ :+E)+/%O. E.3IN2I)+O.

&O. /A%)E+ :6+E)+/)17. %IC )#:1$. Note @ue o primeiro teste ?eito no programa A o da teC>a %&!./ +.EC CIC) ...O2..F %&sF %AsF CLEA. por?m nen5um campo com "* %# 0taman5o H1 mapa com campos "* %#.%.ECEINE /A% :6+E)+/%7... CO%4 +E)+/)1... 77 *IE. IN+O :+E)+/%I.E DINI)ION..OCEDU.EC. %E. CO/%. E9UAL D&(. " . ENDIE.:!1. estar sempre a possi>ilidade da condição de e3ceção "A$'AI8 durante um !ECEI&E "A$. E. /ostraremos a=aiGo um eGemp>o de Codi?iCação. Dessa ?ormaF podemos a>terar o atri=uto de?au>t movendo uma das Com=inaçDes para o Campo Com su?iGo A] D&(AID' ContAm uma >ista Com teC>as :EN+E. *O.A2E )EC+ION. ..A/IID. 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.E)% :*IE.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..F.3IN2I)+O. por?m o usuário tecla C8EA! ou $As contePdo da tela do terminal composto de dados não formatados no momento do !ECEI&E "A$. A.E2INO/E %IC .3IN2I)+O. I& *IE. IF NOMEL NOT EQUAL ZEROS /ONENO/EI +O .9I.E2INO/E.ECEINE /A%. .E2. .A2E' D&(0/)CA' ContAm uma sArie de Campos Com todas as Com=inaçDes possOveis de atri=utos de Campos.A+AI/A%&AIL. %. &A+1%2/.E)%:/A%&AIL. Assim Como no )END /A%F devemos in?ormar o nome do mapa e do mapset. )e essa teC>a ?or aCionadaF a pseudoIConversação termina.. O Comando uti>iTado para reCe=er mapas A o . . para podermos testar no programa.

CO//A.3..A)E &. E.EC. /A%)E+ :6+E)+/)17. I& I& EI0AID E9UAL D&(%&! E. /A%ONL4 E. Caso o /A%&AIL não oCorraF o programa eGeCutarH a ?unção so>iCitada e terminarH enviando o mapa Com uma mensagem de eGeCução =em suCedida. CO/I*O.AN)ID :EI0+.EC +.EC CIC) . . CO/I&LA2 %.N ENDIE. LIN3A2E )EC+ION.EC CIC) . /A% :6+E)+/%7. )e não ?or a primeira eGeCução da transaçãoF A ?eito um . D&(. *O.E+U.EC CIC) )END ^E.EA.OCEDU.E)%:/A%&AIL. 77 77 *IE. CO%4 D&(AID.E)% :*IE.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 pseudoIConversação. /A%)E+ :6+E)+/)17.3IN2I)+O. CO/%.. No . D&(CO//A.:11. ENDIE.ECEINE I& *IE. Em Caso positivoF um mapa >impo :/A%ONL4.E DINI)ION.EA:CO/I*O.3 %IC %IC )#:1$.EC CIC) .Em seguidaF estH sendo testado se a transação estH sendo eGeCutada pe>a primeira veT.:11. CO%4 +E)+/)1.E+U.A2E )EC+ION...EC.ECEINE /A% para reCe=er os dados digitados pe>o usuHrio. END-EXEC. /ONE E9UAL LO*INALUE) 5 . +O +E)+/%O %IC . EI0CALEN E9UAL E. CO%4 D&(0/)CA. IN+O :+E)+/%I..O) /A% :6+E)+/%7.N E.EE30 ENDIE. .NID.. estH sendo enviado ao termina> do usuHrio e a tasK termina enCadeando uma pseudoIConversação e passando uma Commarea.

UNIDADE 3 Envio e recepção de mapas Essa unidade mostrarH outras CaraCterOstiCas de mapas 0/)F =em Como outras opçDes no envio e reCepção de mapas.A.NID.EA:CO//I&LA2. DA+AONL4 &. /A%)E+ :6+E)+/)17.E SEC0I)9uando uti>iTamos a LIN3A2E )EC+ION para Copiar o mapa sim=P>iCo :CopX=ooK Co=o>. CO//A.EA. ENDIE.N +. LIN3A2E )EC+ION.3IN2I)+O.EC CIC) . /A%)E+ :6+E)+/)17.EC E. Co=o> gera>mente A Copiado na *O.E+U.EE30 ENDIE. DA+AONL4 &. DADO)7 +O /)2O E.OCE))A &UNVWO )OLICI+ADA /ONE LO*INALUE) +O +E)+/%O /ONE 6&UNVWO CO/%LE+ADA CO/ )UCE))O7 +O /)2O E.apa na *I-7A.F devemos uti>iTar a opção )E+ ao invAs de IN+O no Comando . Com )E+F o CIC) ad@uire a Hrea de memPriaF armaTena as in?ormaçDes e ?orneCe o endereço da Hrea para o programa endereçar o CopX=ooK em LIN3A2E. 8 *I-7A./ONE 6&ANO.EC CIC) )END /A% :6+E)+/%7. %ara isso devemos sa=er @ue o endereçamento :addressa=i>itX.A2E do programa. D&(CO//A. b%. &.EC. . /as nada impede @ue seJa Copiado na LIN3A2E )EC+ION.E O mapa sim=P>iCo :CopX=ooK. &.AN)ID :EI0+. c um Comp>emento do @ue ?oi visto na unidade . 6 . EN+.O/ :+E)+/%O. de Hreas na LIN3A2E A responsa=i>idade do programa.apa sim &lico ' 6)+7I-.EC CIC) )END /A% :6+E)+/%7.EC EXEC CICS RETURN END-EXEC.EE30 ENDIE. +ece endo .O/ :+E)+/%O.ECEINE /A%.

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

ap ' Funções de controle )END /A%:6+E)+/%7. 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 opçDes de Contro>e de output mostradas aCima em um Comando )END /A% tam=Am podem ser emitidas atravAs do Comando )END CON+.IN+g OU )END CON+. IN+O:+E)+/%I.A)EAU%g e&.ECEINE +E)+/%I /A%:6+E)+/)17.. /ONE 6+E)+/%7 +E)+/%I /ONE 6+E)+/)17 +O .OL . AssimF podemos tra=a>Ear Com =arras de açDes e tam=Am Com teC>as ?unCionaisF por eGemp>o %&! 5 &I/F %&$ 5 ANANVA +ELA. *I/A%)E+../A%)E+:6+E)+/)17. eE.ECEINEF o CIC) in?orma ao programa @ua> a posição do Cursor na te>a e tam=Am @ua> teC>a ?oi pressionada :EI0C%O)N e EI0AID.A)E f E. /A%)E+:*I/A%)E+.EE30g eALA. $ .)E+g e%. /A%)E+:6+E)+/)17.. +O *I/A%A.ECEINE /A%:*I/A%A. . +ECEI9E ' tecla e cursor Em uma operação de ./g e&.OL. Send ..

Nessa unidade veremos Como o CIC) tra=a>Ea Com o mAtodo de aCesso N)A/ :Nirtua> )torage ACCess /etEod. E. O Comando 0I& DEEDI+ pode ser uti>iTado para retirar os CaraCteres espeCiais de um CampoF preparandoIo para operaçDes aritmAtiCas.Edição de campos ' "uilt in Function %odemos em a>gumas oCasiDes permitir ao usuHrio @ue digite dados Com CaraCteres espeCiais Como 6hS ou Q. $odemos editar campos na tela. Dentro do programaF de?inimos na *O.... B F.F @uais os tipos de ar@uivos N)A/ suportadosF e @ua> o proCedimento para ?aTer aCesso direto e tam=Am se@ienCia> :0roYse. :#. Nessa ta=e>a temos toda in?ormação re?erente ao ar@uivoF inC>usive os tipos de operação @ue poderão ser rea>iTadas.EAD.eCord Id &ie>d. Os ar@uivos gera>mente são a=ertos pe>o CIC) @uando um aCesso ?or so>iCitado.EC CIC) 0I& DEEDI+ &IELD :A/OUN+.EC. UNIDADE 4 Acessando 9SA.FFC. Os ar@uivos N)A/ são de?inidos para o CIC) atravAs da ta=e>a &C+ :&i>e Contro> +a=>e. EntretantoF se deseJarmos rea>iTar operaçDes aritmAtiCas uti>iTando esses CamposF devemos retirar os CaraCteres não numAriCos. LEN2+( ENDIE. >asta em sua definição acrescentar o par@metro $IC%A 0 por e3emplo.CC1 e a saQda do campo Rá ficará editada. A opção LEN2+( não A neCessHria para programas CO0OL II. # .3IN2 o >aXout do registroF e o Campo CEave M .ID&LD :. O Comando para >eitura direta A o .S ou ainda QFS. Um programa Co=o>-CIC) não tem de?inição ?OsiCa do ar@uivo @ue serH aCessadoF e tam=Am não ?aT a=ertura ou ?eCEamento dos ar@uivos.

E2! .ECO. ' +ecuperação 1ireta VS+( ESDS registro E)D) M EN+.E2 .0A do registro A 111.E2! O ..4 )E9UENCED DA+A )E+ O E)D) A o tipo de ar@uivo N)A/ Com estrutura se@ienCia>. +elative "yte Address 1 111 =Xtes 111 111 =Xtes =Xtes 11 111 .E21 . OperaçDes @ue podem ser rea>iTadas' Leitura direta atravAs do .9SA.E21 .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 .e>ative 0Xte Address.D) M .D DA+A )E+ !1 .E2 .ELA+INE .E2" .0A :. ou se@ienCia>] 2ravação sempre apPs o L>timo registro eGistente] Atua>iTação de registrosF sem a>teração de seu tamanEo] Não podemos eGC>uir registros] A inC>usão A se@ienCia>. VS+( RRDS .

N :. e deve Conter o .ID&LD deve ser um Campo de @uatro =Xtes em ?ormato =inHrio :s#:1$. de tamanEo ?iGoF uma para Cada registro. Comando )ara $eitura .e>ative .. %ara os ar@uivos .e &RID $D' Identi?iCação do registro M . Comp.D) o . ou se@ienCia>] 2ravação de registro no seu respeCtivo Qs>otS] Atua>iTação de registros] EGC>usão de registros.. )e a >eitura ?or ?eita uti>iTando CEave parCia>F a>Am de 3E4LEN2+( devemos espeCi?iCar a opção 2ENE.O . VS+( . Cam)o C-a.ID&LD deve Conter a CEave do registro a ser aCessado... c o tipo de ar@uivo mais uti>iTado so= CIC). Comp.RE+D %ara programas CO0OL II não A neCessHrio uti>iTar a opção LEN2+( se os registros tiverem tamanEo ?iGo.ID&LD. %ara ar@uivos 3)D) o .eCord Num=er. !1 ..ID&LD deve ser um Campo de @uatro =Xtes em ?ormato =inHrio :s#:1$.D) A Composto por uma sArie de Qs>otsS :gavetas. OperaçDes @ue podem ser rea>iTadas' Leitura direta atravAs do .0A do registro a ser aCessado.N do registro a ser aCessado.IC.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. %odemos tam=Am aCessar registros por pedaço de CEave :CEave parCia> 5 3E4LEN2+(. e deve Conter o . OperaçDes @ue podem ser rea>iTadas' Leitura direta atravAs da CEave do registro ou se@ienCia>] 2ravação de registros] Atua>iTação de registros] EGC>usão de registros. %ara os ar@uivos E)D) o .

IC] [3E4LEN2+(:dataIva>ue.0A f . O eGemp>o mostra a >eitura do registro CEave 11111 de um ar@uivo 3)D).E)% nos Comandos de . .] INN.:$1. IN+O :*I. .EAD &ILE +O *IC(ANE :6A.E9' so>iCitação invH>ida] &ILENO+&OUND' o ar@uivo não estH Cadastrado na ta=e>a &C+] ILLO2IC' erro deteCtado pe>o N)A/ :veremos mais a ?rente.E DINI)ION.:15.EC CIC) .' 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. Condições de exceção )empre devemos uti>iTar a opção . %IC ..] IOE.] [2+E9 f E9UAL] ENDIE... 15 15 . *IC(ANE *I.E2.917.. /ONE 6111117 E. IN+O :dataIarea.OCEDU. ! . .EC.] [. :dataIarea.A2E )EC+ION. A=aiGo a>gumas CondiçDes de eGCeção' NO+&ND' registro não enContrado em >eitura direta] END&ILE' ?im de ar@uivo em pes@uisa se@ienCia> :veremos no prPGimo tPpiCo.ID&LD ENDIE.EAD &ILE :6name7..E2 %IC .E.EAD.3IN2I)+O. %.ID&LD :dataIarea..EC.. :*IC(ANE. *O.0] [LEN2+( [2ENE..EC CIC) .

.EC. em um ar@uivoF A neCessHrio posiCionar o ponteiro de >eitura na CEave deseJada atravAs do Comando )+A.:15..E)% :*IE.. %IC .ORMA+%&'RR '12A+ ()!R'SP*. 9SA. '+S' I) %&'RR ..(:*IC(ANE.EADNE. 15 15 .. A 2+E9F isto AF se a CEave deseJada não eGistirF o posiCionamento serH ?eito no registro seguinte.F e em seguida ?aTer a >eitura se@ienCia> dos registros :.encial #"+)6SE$ %ara ?aTer pes@uisa se@ienCia> :0roYse. !! . Desse modoF nosso programa deve testar o ConteLdo do Campo uti>iTado no .EAD &ILE +O *IC(ANE :6A..OT).+0. .EN. .A2E )EC+ION. Comandos )ara recu)eração se/0encia1 %osicionando c<ave . %.anuseando condições de exceção Uti>iTando a opção . O De?au>t para o )+A.E)%F o CIC) não toma nenEuma ação se uma Condição de eGCeção oCorrer. A uti>iTado para posiCionar a CEave no registro deseJado :esta=e>eCer posição.+ ou .EC CIC) 7 .OT '12A+ ()!R'SP*.ID&LD ENDIE...OCEDU..EAD%.917. . I) .E DINI)ION. .. %ara terminar o =roYse emitir o Comando END0. ' +ecuperação Se:.3IN2I)+O.+0.. /ONE 6111 E.E2. *O. %IC )#:1$..... CO/%.S0A+0"+ O Comando )+A..E)% e tomar as provid[nCias Ca=Oveis.. *IC(ANE *IE.+0. IN+O :*I.

Esta leitura se=Sencial ? muito utili,ada em programas de paginação.

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 posição Com o )+A.+0.F podemos Começar 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 operação de 0roYse deseJarmos reposiCionar o ponteiro de >eitura para outra CEaveF podemos uti>iTar o Comando .E)E+0.F ou então 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 Condição de eGCeção 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. Considerações so re integridade Como o CIC) A um produto mu>tiIusuHrio e mu>tiItare?aF tem a o=rigação de ?orneCer meCanismos de Contro>e de integridade de dados. +emos @ue ter proteção para Casos de interrupçDes não programadasF tais Como erros de operaçãoF 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 proteção de reCursosF para @ue vHrios usuHrios não 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>iTação terminar. Essa proteção ?unCiona de ?orma automHtiCa. Contro>e eGC>usivo do CIC)' A uma eGtensão da proteção mostrada aCima. ApPs atua>iTarF o N)A/ >i=era o CIF mas o CIC) QprendeS o registro atA o ?im da LU*. Essa proteção ?unCiona apenas para ar@uivos de?inidos Como reCuperHveis. A necessidade de proteção Imaginemos uma transação @ue vai atua>iTar o ar@uivo de Caderneta de poupança su=traindo .h 511. Em seguidaF atua>iTarH o ar@uivo de Conta Corrente adiCionando os .h 511. Como os dois ar@uivos são >ogiCamente re>aCionadosF temos @ue ter a garantia de atua>iTação 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>iTação e oCorrer a>guma ?a>Ea na atua>iTação do segundoF o CIC) automatiCamente deve des?aTer a atua>iTação para @ue am=os ?i@uem sinCroniTados. Esse proCesso de des?aTer a atua>iTação 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 intenção 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

[LEN2+( ENDIE.aç<es nos &SA"s e o comando EXEC CICS SE#C$%I# !%887AC: E#*6EXEC desfa. :dataIva>ue.I+E ?aT a atua>iTação de um registro.I+E &ILE :name.E*.O/ :dataIarea. E. % comando EXEC CICS SE#C$%I# E#*6EXEC efetiva atuali. todas as atuali.. Antes do comando !E9!I E ? obrigatório utili.EC.EAD. Atuali(ação de um registro O Comando . )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.EC CIC) .1 !I*'8*096 C4A&E1 UPDATE E#*6EXEC.9uando a LU* termina oCorre a e?etivação de todas as atua>iTaçDes :Commit. Esse Contro>e permaneCe atA' .ar o comando !EA* A$*A E+ EXEC CICS READ 'I8E0-A!OJ/1 I# %096!E.I+E' atua>iTação do registro] DELE+E' eGC>usão do registro] UNLOC3' CanCe>amento da intenção de atua>iTação] &I/ DA +A)3.] &. !7 .E*. O Campo CEave não pode ser a>terado.EAD U%DA+EF oCorre o Contro>e eGC>usivo do N)A/. 9uando ?aTemos o .E*.aç<es do programa Atuali(ação 9SA. %ara atua>iTar um ar@uivoF adiCionamos a opção U%DA+E ao Comando .

IC f NU/.E*.I+E sem ter ?eito o .Exclusão de registro#s$ O Comando DELE+E eGC>ui um registro do ar@uivo.0A f .] [2ENE.' o tamanEo do registro a ser regravado A muito grande] ILLO2IC' erro do N)A/ @ue não se en@uadra nas outras eGCeçDes.EAD U%DA+E] LEN2E. Condições de exceção As CondiçDes de eGCeção mais ?re@ientes são' NO)%ACE' ao ?aTer a atua>iTação de um registro de tamanEo variHve>F aumentamos seu tamanEo e não EH espaço para regravação] INN. O Campo CEave :.EC :dataIarea.] [3E4LEN2+( [. *i eração de registro )e deCidirmos não ?aTer a atua>iTação apPs o Comando .ECF o CIC) in?ormarH @uantos registros ?oram eGC>uOdos na operação.. :name.EC CIC) DELE+E &ILE :name. %odemos ?aTer uma eGC>usão genAriCaF in?ormando as opçDes 3E4LEN2+( e 2ENE. [. E. E. %or eGemp>oF emitir o Comando .EAD U%DA+EF podemos >i=erar o Contro>e eGC>usivo atravAs do Comando UNLOC3. :dataIva>ue.EAD U%DA+E antes do DELE+E.] Apenas os ar=uivos :S*S e !!*S podem ter registros e3cluQdos. Nesse CasoF se espeCi?iCarmos NU/.EC.ID&LD :dataIarea.N] ENDIE.EC. não A neCessHrio se oCorrer um .EC CIC) UNLOC3 &ILE ENDIE.. !$ .IC.ID&LD.E9' so>iCitação invH>ida.

EC CIC) +O .&O..AVjE) %A.E*.O/ :*I.917.. 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 .. ENDIE. .E*.#o caso da condição de e3ceção I88%..I+E &ILE :6A.E)%:NO.EC. &.EC CIC) . O Contro>e eGC>usivoF nesse CasoF vai ter a duração do tempo @ue o usuHrio >evar entre reCe=er as in?ormaçDes em seu termina>F pensar nos dados @ue serão a>teradosF digitar as a>teraçDes e pressionar Enter../ . :*IC(ANE.ID&LD U%DA+E . :esperando.&O. /ONE 61111!7 E.IC.I+E.. NO+ E9UAL D&(.A A. b/ONE AL+E. NO+ E9UAL D&(. I& *IE.O. :6A. %E.. !# .E)% :*IE.O+IE.E)% :*IE./AL. . ENDIE. %E.917. En@uanto issoF @ua>@uer outra tasK deseJando atua>iTar um registro do mesmo CI ?iCarH em Yait.9UINO E.EC.ar o campo EI7!C%*E para au3iliar na depuração do erro.EAD &ILE *IC(ANE. I& *IE../ . podemos utili. #os >2tes J e L ele tra. IN+O :*I.O+IE. o tipo de erro+ 6>2te J+ return code do &SA" 6>2te L+ error code do &SA" Codificação .E)%:NO./AL.O..E2.atuali(ação A=aiGo temos um eGemp>o de Codi?iCação de uma >eitura para atua>iTação seguida de regravação do registro atua>iTado.E2.

9uando o programa ?iTer a >eitura para update na a ?aseF deverH Comparar o registro >ido Com a imagem @ue ?oi sa>va.Este modelo de desen5o conversacional não ? recomendado.ID&LD.ID&LD eLEN2+( e. :dataIva>ue.ravação de registros . 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>. pois o tempo de espera para outras tasT depende de um usuário. "1 . . O Contro>e eGC>usivo somente oCorrerH apPs o programa reCe=er as a>teraçDes digitadasF e terH uma duração muito Curta. E se por e3emplo. /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.EC CIC) *.I+E &ILE . E.O/ :dataIarea. A >eitura para enviar os dados ao usuHrio não prende nenEum reCurso.g &. )e estiverem iguaisF podemos e?etivar as a>teraçDes.I+E. e gravHI>o atravAs do Comando *.0A f .Ng :name. )e o tempo de ação do usuHrio ?or >entoF ninguAm serH preJudiCado.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 :. %nde salvar a imagem do registroU Oue tal na C%""A!EAU %u então em S 0como veremos adiante1. Caso ContrHrioF devemos tomar a>guma provid[nCia. :dataIarea.

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

EA em sua LIN3A2E )EC+ION. Neremos tam=Am Como A ?eita a passagem de dados entre os programas. %assagem de 1ados /sando *I-7 Assim Como na pseudoIConversaçãoF tam=Am uti>iTamos a Commarea para passagem de dados entre os programas no Comando LIN3. *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. O programa @ue reCe=e o Contro>e vai aCessar os dados passados atravAs da D&(CO//A.3IN2I)+O.UNIDADE ! Controle de programas Neremos agora os Comandos de trans?er[nCia de Contro>e entre programas em uma mesma tasK' CIC)' LIN3 e . " .3IN2 @ue ?oi passada Como Commarea tam=Am estarH a>terada. %s dois programas são e3ecutados so> a mesma tasT.A2E. )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. passa Como Commarea uma Hrea de *O.+CL CO0OL' CALL estHtiCo e dinlmiCo. O programa CEamador : o @ue emite o LIN3.

E DINI)ION.3IN2I)+O..N +odo programa CEamado atravAs de LIN3 eGeCuta em novo nOve> >PgiCo.. E.F o Contro>e vo>ta para o nOve> >PgiCo imediatamente superiorF ou seJaF para o programa @ue emitiu o LIN3. CO//A.A/IID. %. CO/%.EC CIC) LIN3 %IC %IC )#:1$. NALUE 6)I/7. 9uando termina :.N..*I-7 NmNEL 1 CIC) NmNEL 1 %rimeiro %rograma LIN3 NmNEL )egundo %rograma . %.EA:*ICO//.:1!.O2 7.. *O.O21. ... %.O2. %. 77 *IE. 11 *ICO// . "! .%s dois programas devem estar definidos na $$ do CICS.E+U.A2E )EC+ION. ->veis l&gicos .EC.E+U.O2.A/ :6%. ENDIE. .OCEDU.

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

E+U.:1!. /ONE LICO// +O *I&LA2.EC CIC) . portanto. . %.O2 ...N ENDIE. ENDIE.O2. $assagem de controle+ XC 8  programa rece>e ei>calen diferente de . *O. D&(CO//A. %.:1!. .A2E )EC+ION.. LIN3A2E )EC+ION. E. devemos.A/IID.N Como vimosF um programa CEamado atravAs de LIN3 eGeCuta em um novo nOve> >PgiCo.E+U. NALUE 6)I/7..EA..O2.O2..A2E )EC+ION.O2 assume o Contro>e e reCe=e os dados na D&(CO//A. O programa %.EC CIC) .eros.NmNEL )egundo %rograma . %IC )#:1$. %. O eGemp>o aCima mostra o %.C+L para o programa %.OCEDU.EA:*ICO//.:1!.eros.EC.3IN2I)+O.. %.A/IID.E+U..EA. S A!  programa rece>e ei>calen igual a .. .3IN2I)+O.EC. %.O2 7.O2 e passando Como Commarea a Hrea *ICO//.. 11 *ICO// %IC . .N vo>ta para o nOve> >PgiCo imediatamente superiorF temos a Con?irmação @ue no Caso do . Como o . e3ecutar o comando !E !IE&E para restaurar a commarea..C+L o Contro>e não retorna para o programa @ue ?eT a CEamada.C+L %.C+L eGeCuta no mesmo nOve> >PgiCo do programa @ue ?eT a CEamada. %.E DINI)ION. 77 *IE. LICO// %IC .. 77 *I&LA2 %IC .A/ :6%. CO//A. CO/%. .E DINI)ION.O21 ?aTendo um . "5 . E.. *O.OCEDU. ZH um programa CEamado atravAs de .O21.

X V X V V N) CO0OL II V V X V V Apenas um mPdu>o eGeCutHve>. %or outro >adoF se diversos programas ?iTerem CALL para esse mesmo programa teremos diversas CPpias de>e em memPria.E SEC0I)- *evemos sempre utili.O207 +O *I%. A ta=e>a aCima mostra as possi=i>idades de CALL dependendo do Compi>ador CO0OL uti>iTado. Os programas CEamador e CEamado são >inKeditados Como um LniCo mPdu>o eGeCutHve>. Call est!tico ' C)")* CALL LI+E. Call din?mico ' C)")* /ONE 6%.ar os mesmos taman5os de commarea =uando vamos passar controle a outro programa. pode ser uti>iTado so= CIC). %2/ C(A/ADO CO/ANDO) CIC) O)-CO0OL N) CO0OL II A))E/0LE. O Ca>> estHtiCo do Co=o> :Ca>> >itera>.IkNEL' CALL *I%.O2 CALL NA.O2.Cuidados com a *I-7A. Do ponto de vista de per?ormanCeF A uma =oa opçãoF uma veT @ue não oCorrerH Carga do programa CEamado na memPria. "6 .AL' CALL 6%.O207 O)-CO0OL %2/ C(A/ADO.

O)-CO0OL %2/ C(A/ADO. )e diversos programas ?iTerem Ca>> para esse mesmo programaF teremos apenas uma CPpia em memPria.AN) %IC 1 *IC(ANE %IC . 77 *IE. A ta=e>a aCima mostra as possi=i>idades de Ca>> dependendo do Compi>ador CO0OL uti>iTado. %. "7 .1 A vH>ido tam=Am para . CO/%.O21..EA em um mesmo Comando. %.A/IID.. AtravAs de>aF podemos passar uma Hrea @ue ?iCa na *O.3IN2I)+O. Os programas CEamador e CEamado são >inKeditados separadamenteF sendo dois mPdu>os eGeCutHveis distintos. *O. %assagem de dados com I-%/0.:15. A partir do CIC)-E)A v!.1. .3IN2I)+O..OCEDU.S.A2E )EC+ION.. Dois mPdu>os eGeCutHveis.1.:1". N) CO0OL II V V X V V V X X X X O Ca>> dinlmiCo do Co=o> :Ca>> variHve>.AN)ID.E+U. *I+. tam=Am pode ser uti>iTado.O2. A partir do CIC) N!. .1 temos uma a>ternativa a mais para passagem de dados entre programas. %. )e deseJarmosF podemos espeCi?iCar tanto o IN%U+/)2 @uanto a CO//A.C+L a partir do CIC) N!..N +. *IIN%U+. %2/ C(A/ADO CO/ANDO) CIC) O)-CO0OL N) CO0OL II A))E/0LE..E DINI)ION. %IC )#:1$. O IN%U+/)2 A vH>ido para LIN3 e .3IN2I)+O.1. 9uando ?or ?eito um Ca>>F o programa CEamado serH Carregado em memPria e eGeCutado. .ECEINE.A2E no programa CEamadoF atravAs do Comando . +rataIse da opção IN%U+/)2.A2E do programa CEamadorF e reCe=[I>a tam=Am em *O.

ENDIE.ECEINE IN+O :*I. ENDIE.:15.A/ :6%. UNIDADE " Addressa ility ' uso da *I-7A. "$ . ZH perCe=emos @ue o EI0 e a D&(CO//A. E. IN%U+LEN :#.EC CIC) . O programa %.:1".EA >oCa>iTamIse em LIN3A2E.E DINI)ION. %. ..O2 .E+U.3IN2I)+O..ECE0E.O2.O2 7. *O.A2E )EC+ION. O %.ECE0E. ..EC.ECEINE e reCe=e os dados na Hrea *I.N ENDIE.3IN2.EC CIC) .C+L e passando a Hrea *I IN%U+ Como IN%U+/)2.. *I. O LniCo Cuidado @ue devemos ter A Com o tamanEo das Hreas e sua Qaddressa=i>itXSF ou seJa esta=e>eCer o endereçamento para poder uti>iTHI>as.A/IID.O2 atravAs de ...O2 ao reCe=er o Contro>e eGeCuta o Comando .. E. IN%U+/)2 :*IIN%U+.ECE0E. E.EC. 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.O21 estH CEamando o %. %..N %IC .O2. .OCEDU..EC.EC CIC) . %.E SEC0I)A LIN3A2E )EC+ION A uma Hrea muito eGp>orada pe>o CIC) em nossos programas CO0OL. 1 *I3E4 %IC .C+L %. *I+.

. %IC )#:1$.. 15 LI. %IC )#:1$. %.Addressa ility *'4C%""A!EA e *'4EI78:+ Endereçados automaticamente pelo prVprio CICS... D&(CO//A.+I+A0 %IC )#:1$..+I. %IC #:11. "# %IC . CO/%. 0LLICELL). CO/%. . 15 &ILLE..E+ *evem ser endereçadas pelo programa % endereçamento do *'4EI78: 0EI71 e da *'4C%""A!EA ? feito de forma automática pelo CICS. 15 NO/E 15 ENDE.EVO 15 C%& . %utras área de 8I#:A. % endereçamento de outras área deve ser feito pelo prVprio programa..:"1.E2 15 %.EA.:!1. "** Cells ' )S@9S co ol LIN3A2E )EC+ION.. CO/%. %IC .E2. portanto ? responsa>ilidade do programador.

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

.7 CL157%A.. ACima mostramos uma ta=e>a de Estados.:15.EC CIC) LOAD %. %ara CarregHI>a em memPria veremos o Comando LOAD.IO DE ZANEI.. D&(CO//A. %. 1 LOCAL 1! 1! . Ao invAs de de?inir o >aXout dessa ta=e>a na *O.EC. 1 1. %IC . %IC )#:1$. Essa ta=e>a serH Compi>adaF >inKeditada e Cadastrada na %%+ do CIC). *O. %IC . )E+ ENDIE.:1!.O2. Carga de ta elas C)")* II -*)A1 %. %.. 1 LICO// +A0ILOCAL. *IE..3IN2 do programaF podemos ?aTer sua de?inição em LIN3A2EF e CarregHI>a em memPria @uando @uisermos Consu>tHI>a.A/ :6+A0%.+O )AN+O7 Uma tACniCa muito uti>iTada no CIC) A a Codi?iCação de ta=e>as em Assem=>er.:1 .EA..E)) O& +A0ILOCAL.O7 CL 7%.OCEDU.E DINI)ION.. 77 .Z7 CL157.) %IC . O Comando LOAD ?aT Com @ue o programa so>iCitado seJa Carregado em memPria e o nosso programa tenEa aCesso ao endereço de Carga atravAs da opção )E+. :ADD.3IN2I)+O. CO/%.A2E )EC+ION. O LOAD Carrega o programa mas não eGeCutaF ao ContrHrio do LIN3 e .C+L. 51 . +rataIse de um programa Assem=>er Composto apenas de Constantes.O2.O21. 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.O27...A/IID. E. LOC DE)C OCCU. LIN3A2E )EC+ION.ANk7 CL 7E)7 CL157E)%m.DC DC DC DC DC DC CL 7.

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

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

A-N)A/ E)D) CaraCterOstiCas da +D Intrapartition' +odas as ?i>as de +D são direCionadas para o mesmo ar@uivo N)A/ E)D) CEamado D&(IN+. O CIC) o?ereCe dois tipos de +D' intrapartition e EGtrapartition.+.%e>o >aXout da C*A na LIN3A2E do programaF podemos Consu>tar dados eGistentes ou então Carregar novos dados.+I+ION %A..A/A EGeC CiCs .01 CIC) +D% DC+ IN+.E E.' +ransient Data :+D. e +emporarX )torage :+).A/A E. 0ransient 1ata .A%A.AI E. 2D Intra)artition %.+I+ION %. e ConEeCido Com DE)+ID :Destination ID.EAD9-*.ead@-Yrite@ +D As ?i>as de +ransient Data são identi?iCadas por um nome de " CaraCteres Cadastrado na ta=e>a DC+ :Destination Contro> +a=>e.A] Os registros nas ?i>as são gravados sempre se@uenCia>mente e reCuperados da mesma ?orma] A >eitura A destrutivaF ou seJaF uma veT >ido não pode ser reCuperado novamente] 5" .EC CIC) .I+E9 +D D&(DC+ D&(+D% DE)+ID D&(IN+.O2.. 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.O2.

917. E9UAL D&(. E.ravação de 01 E. *. IN+O :*I.E)%:NO.E)%:END&ILE.. /ONE E. CaraCterOstiCas da +D EGtrapartition' Cada ?i>a de +D Corresponde a um ar@uivo ?OsiCo] A >eitura não A destrutivaF pois podemos >er o mesmo registro diversas veTes] Não podemos ?aTer eGC>usão] Os registros podem ter ?ormato ?iGo ou variHve>F =>oCado ou não =>oCado] Cada ?i>a pode ser de?inida Com imput ou outputF nunCa Como input e output.EC CIC) +O *IC(ANE.EC.E)% :*IE. ENDIE.E)% :*IE.EADNE. .917.A 55 61111!7 )+A../AL.I+E9 +D ..&O.E)%:NO. .ID&LD :*IC(ANE.g ENDIE.ID&LD :*IC(ANE.E2.Os registros podem ter tamanEo variHve>. /ONE EI0+I/E +O +DI(O. &. E9UAL D&(.O2. ENDIE.EC CIC) 9UEUE :name./AL.I+E9 +D A uti>iTado para gravação de +Ds Intrapartition e EGtrapartition. 2D Extra)artition %. eLEN2+( :dataIarea..O/ :dataIarea. ./ UN+IL *IE. &ILE :6A. E9UAL D&(..+ &ILE :6A. O Comando *. %E.EC.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. I& *IE.EC I& *IE.. .EC CIC) ..+0. ..

EAD9 +D 9UEUE :6+D117.EC CIC) *. NO+ E9UAL D&(. %E. eLEN2+( :dataIarea.EAD9 +D A uti>iTado para >eitura de +Ds Intrapartition e EGtrapartition. EL)E .&O.. E9UAL D&(..O..O.EC CIC) .E)%:9^E../ E.&O... IN+O :dataIarea.../AL..&O..01 56 . E9UAL D&(./ONE *INO/E +O /ONE *I9+DE +O E..EC ..E2. %E. O Comando ..EC CIC) END0. IN+O :+DI.EC CIC) 9UEUE :name. ..E)%:NO. Este Comando eGC>ui todos os registros de uma ?i>a +D../ UN+IL *IE.. Condições de exceção .O.. .EC O eGemp>o aCima mostra uma >PgiCa ondeF para Cada registro >ido no ar@uivo A.917. E.A+AIE.. ENDIE. .g ENDIE.EC.I+E9 +D +DINO/E +DI9+D 9UEUE :6+D117. ENDIE.EC.EC CIC) DELE+E9 +D 9UEUE :name.E)%:9^E.91F estH sendo gravado um registro na ?>a +D11. .. *eitura de 01 E. &../ O programa estH >endo a +D11 se@uenCia>mente atA o seu ?im :9^E. EL)E I& *IE.E2.E)% :*IE.O ENDII& ENDII& ENDI%E.O/ :+DI..EAD9 +D O Comando DELE+E9 +D ap>iCaIse apenas para +Ds Intrapartition. ENDI%E. Exclusão de 01 E. &ILE :6A./ +. ENDIE.&O. ENDIE..E)% :+DIE.EC I& *IE.

' %ro=>emas Com o ar@uivo. N)A/ +) A +emporarX )torage : +) .' A ?i>a +D não ?oi Cadastrada na ta=e>a DC+] IOE..0S D&(+E/% D&(+)% E.EC CIC) . 57 .E!! #%S$ACE #% %$E# OI*E!! I%E!! CondiçDes de eGCeção a serem Consideradas para +Ds' 9^E.O' &i>a vaTia ou ?im de ?i>a] LEN2E. tem nomes de 1 a $ CaraCteresF e não neCessita @ue esses nomes seJam prAIde?inidos em ta=e>as do CIC). )e a ?i>a não eGistirF e>a serH Criada. 0emporary Storage .egistro maior @ue o tamanEo espeCi?iCado] NO)%ACE' Ar@uivo D&(IN+. podem ter tamanEo variHve>] +) aCeita gravação se@uenCia>F >eitura se@uenCia> e diretaF e atua>iTação] Os dados permaneCem disponOveis atA @ue seJam eGC>uOdos por Comando.. ou então em memPria :/AIN.' .EAD9-*.      OFE!% 8E#.I+E9 +) :E)D). As ?i>as +) podem ser gravadas em disCo :AU..A estH CEeio] NO+O%EN' &i>a +D EGtrapartition estH ?eCEada] 9IDE..F onde o aCesso A muito mais rHpido] Os registros :itens.

portanto devemos sempre.I+EF o CIC) ?arH atua>iTação do Otem indiCado Com o novo ConteLdo.4g ENDIE. +)I.A2E )EC+ION. Cada registro gravado ? um novo item.g &.. o programa acrescentará dados nela. 5$ . &.E*. desse Otem na ?i>a] )e Codi?iCarmos as opçDes I+E/ e . . CO/%. I+E/ :*II+E/.EC CIC) *.Se a fila Rá e3istir.. 11 *II+E/ %IC )#:1". ao iniciar o programa.ravação de 0S E...I+E9 +) 9UEUE eLEN2+( :name. determinam se a ?i>a serH gravada em memPria ou disCo] 9uando estivermos gravandoF se Codi?iCarmos a opção I+E/F o CIC) retorna o nLmero :posição.ILIA.. tratar para criar uma S nova. E. e. eI+E/ :dataIarea.EC. .E2..I+E9 +) A uti>iTado para gravação de ?i>as +).O/ :+)I. As opçDes /AIN e AU.O/ :dataIarea.I+E9 +) 9UEUE :6&A++)117.I+Egg e/AIN f AU.E DINI)ION. O Comando *.3IN2I)+O. %.E)% :*IE.E2. :dataIarea. *O.OCEDU.E*.EC CIC) *. .

.. As data6areas dos campos I E" e #A"I E#S devem ser codificadas no programa com $IC SC0HW1 C%"$..OCEDU.. NO+ E9UAL D&(. /ONE 11 +O *II+E/ E.E)%:NO..EC CIC) *.. %E./ +.g ENDIE.E)% :*IE../AL.E2. I+E/ :*II+E/.O.A+AIE. ACima temos um eGemp>o de Codi?iCação de gravação de um Otem na ?i>a +) &A++)11. ENDIE. *IE. *eitura de 0S E. E este eGemp>o mostra atua>iTação do Otem 11 da ?i>a +) &A++)11. I& *IE.. . f NE.EAD9 +) 9UEUE eLEN2+( :name. +)I. &.&O.EC.EC..EAD9 +) A uti>iTado para >eitura de ?i>as +).3IN2I)+O.I+E9 +) 9UEUE :6&A++)117.E DINI)ION.O.g IN+O :dataIarea.I+E . NO+ E9UAL D&(. :dataIarea.E2. 11 *II+E/ %IC )#:1".I& ENDIE.&O.+ indiCa @ue estamos ?aTendo >eitura se@uenCia> da ?i>a] )e uti>iTarmos a opção I+E/ estaremos ?aTendo >eitura direta] )e a opção NU/I+EN) ?or Codi?iCadaF o CIC) in?orma o nLmero tota> de itens na ?i>a./ +. .E)%:NO. eI+E/ :dataIarea.EC CIC) . %E.E*. 5# .O/ :+)I. *O. O Comando . A opção NE..+g eNU/I+EN):dataIarea.EC. %.A2E )EC+ION./AL.A+AIE. CO/%.

' &im de ?i>a ou Otem não enContrado] LEN2E..E)%:NO. ENDIE. ENDIE... IN+O :+)I.E)% :*IE./ +.EC.E!! #%S$ACE OI*E!! I%E!! CondiçDes de eGCeção a serem Consideradas para +)s' I+E/E. %..&O...' . CO/%.EC.EC CIC) DELE+E9 I& *IE. ... +)I.. E. %E. NE.E2..*O.. +) 9UEUE:6&A++)117.EC I& EL)E *IE. Em seguidaF se oCorrer a Condição de ?im de ?i>aF a +) estH sendo eGC>uOda atravAs do Comando DELE+E9 +)..EC CIC) DELE+E9 +) 9UEUE :name. c importante eGC>uir ?i>a apPs seu usoF prinCipa>mente se a ?i>a ?oi gravada em memPria.3IN2I)+O. E9UAL E.egistro maior @ue o tamanEo espeCi?iCado] NO)%ACE' Não EH espaço para gravação] 61 .A+AIE.E DINI)ION.. NO+ E9UAL D&(.O.. O Comando DELE+E9 +) serve para eGC>uir todos os itens de uma ?i>a +). 11 *II+E/ %IC )#:1". Condições de exceção .EAD9 +) 9UEUE :6&A++)117.+ .:a=ordado no prPGimo tPpiCo..EC CIC) . Exclusão de 0S E./AL... D&(.E2.E)%:I+E/E. ENDIE. ACima temos a >eitura da ?i>a &A++)11...A2E )EC+ION.OCEDU. .0S      I E"E!! 8E#.

)erve tam=Am para resetar CondiçDes tratadas anteriormente em (ANDLE CONDI+ION.EC CIC) (ANDLE CONDI+ION INN.. E. %. Codi?iCamos a opção .A+AIINN.. 61 ....EC CIC) I2NO. O Comando I2NO.. Nessa unidade veremos as outras tACniCas para manusear CondiçDes de eGCeçãoF e tam=Am o @ue são transaçDes CECI e CE0... %odemos espeCi?iCar atA 16 CondiçDesF e ao eGeCutar um ComandoF se a Condição oCorrer serH ?eito um desvio automHtiCo para a rotina espeCi?iCada no (ANDLE CONDI+ION.E CONDI+ION serve para o CIC) ignorar as CondiçDes espeCi?iCadasF e deiGar o programa Continuar. UNIDADE $ ..anuseio de exceções c de eGtrema importlnCia o manuseio de CondiçDes de eGCeção em programas eGeCutando so= CIC). Condition:>a=e>. .' A ?i>a +) não ?oi enContrada em uma >eitura ou eGC>usão] IOE..' %ro=>emas Com o ar@uivo. E.E)% nos Comandos e em seguida testamos o Campo uti>iTado Como argumento.E CONDI+ION Condition Condition .E9:+..9IDE.E DINI)ION.EC CIC) (ANDLE CONDI+ION Condition:>a=e>. Uma das tACniCas A a CEamada tACniCa estruturadaF @ue temos uti>iTado desde o inOCio dessa aposti>a..OCEDU. .anuseio de condições de exceção E.. O Comando (ANDLE CONDI+ION serve para deiGarmos prAIesta=e>eCidas as rotinas para manuseio de CondiçDes de eGCeção.

O2. ..anuseio de exceções utili.EC.E9 atravAs de um Comando I2NO.E9 ENDIE.EAD &ILE :6+E)+A.EADF dependendo do @ue oCorrer o CIC) ?arH um desvio para a rotina so>iCitada ou então deiGarH o programa prosseguir.ID&LD ENDIE.A+AI E.. 6 .E utili.A+AIE.ar a opção !ES$ nos comandos... O eGemp>o aCima mostra @ue o programa emitiu um (ANDLE CONDI+ION Com o nome de a>gumas rotinas para tratar CondiçDes de eGCeção espeCO?iCasF e Com a rotina +.... .. Em seguidaF e>e so>iCita @ue o CIC) ignore a Condição INN.LEN2E...E CONDI+ION INN..E2... =ue geralmente ? a>endar a tasT.EC. %2/IDE.O.. Outra ?orma estruturada de tra=a>Ear A Codi?iCar a opção NO(ANDLE nos Comandos' o CIC) deiGarH o programa prosseguirF e devemos testar o Campo EI0.E CONDI+ION. ENDIE. testando o campo da 9%!:I#..:+. e testar EI7!ES$ utili... Ao eGeCutar o Comando .O para o Caso de uma Condição não espeCi?iCada..:+.E)%. E..ar a opção #%4A#*8E nos comandos.97... E.E)%F e em seguida testar o Campo uti>iTado Como argumento.A+AI%.ar 4A#*8E e I. .. ..:+.O. NO+&ND:NWOIAC(OU. E. +.EC CIC) I2NO. Uma das maneiras de tratar as CondiçDes de eGCeção A a @ue estamos uti>iTando desde o inOiCio da aposti>a' Codi?iCar a opção .#%!E C%#*I I%# CICS toma ação *efault. . IN+O :*I..A+AILEN2+(.A+AILEN2+(. . :*IC(ANE... NWOIAC(OU..EC.6S %!A. )pções para .EC CIC) .

+...E9 :so>iCitação invH>ida M EI0..I+E or DELE+E " $ 'I/R'SP$ 1 6 5 A Condição de eGCeção INN.anuseio de teclas *O. %. . A muito vagaF por isso o CIC) traT o Campo EI.. I& EI0AID E9UAL D&(CLEA. %&11 AN43E4:+ECLAIINNALIDA.IC espeCi?iCado.. ENDIE.. %&$:ANANVAI+ELA. I& EI0AID E9UAL D&(EN+E. ..A+AI&I/.E*. PROCEDURE DIVISION.E)%516.. 3E4LEN2+( NE2A+INO :2ENE. . ....VR'1 READ não especific !o n FCT READ UPDATE não especific !o n FCT 3E4LEN2+( inCorreto e 2ENE.EC.A+AI&I/. .IC espeCi?iCado. 6! ..A ut>iTação de (ANDLE e I2NO. EI"+ES%3 para auxiliar I... +.E)% F @ue in?orma maiores deta>Ees do pro=>ema.IC não espeCi?iCado 3E4LEN2+( aCima do permitido :2ENE..A+AI(EL%. .. %&!:+.A2E )EC+ION...3IN2I)+O. %&7:NOL+AI+ELA.EC CIC) (ANDLE AID %&1:+..EAD U%DA+E seguido de .. E..A+AI(EL%. NOL+AI+ELA.E DINI)ION. I& EI0AID E9UAL D&(%&! ... CO%4 D&(AID. )e não uti>iTarmos nenEuma das opçDes mostradas aCimaF no Caso de eGCeçDes o CIC) toma uma ação Qde?au>tSF @ue gera>mente A a=endar a tasK. . ..OCEDU. .EAD U%DA+E sem UNLOC3F ..E CONDI+ION @ue=ra a estrutura do programaF portantoF não A aConse>Eada.

A+AINO+&ND.. A=aiGo mostramos uma Condição em @ue a teC>a %&5 ?oi pressionada e um /A%&AIL oCorreu.3IN2I)+O...A2EF e depois testar o Campo EI0AID.A+AI/A%&AIL.. O desvio ?oi ?eito para a rotina +.. 6" . :+.A+AI%&5.OCEDU.EC.A+AILEN2+(..EC CIC) (ANDLE %&5 ENDIE.. CONDI+ION :+.. %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.. :+.A+AI/A%&AIL. A opção AN43E4 signi?iCa @ua>@uer teC>a Com eGCeção do EN+E.. E.. . Cuidado ao utili(ar GA-1*E )e o CIC) deteCta uma teC>a Contro>ado por (ANDLE AID e uma Condição de eGCeção Contro>ada por (ANDLE CONDI+ION apPs um Comando de inputF o desvio A ?eito para a rotina do (ANDLE AID.. .ECEINE ou .ECEINE /A%. Se utili. ENDIE. %. +.. . EGiste tam=Am o Comando (ANDLE AIDF onde espeCi?iCamos teC>as e para @uais rotinas deve oCorrer o desvio.EC. AID :+.ar 4A#*8E AI* e o programa e3ecutar um !ECEI&E com !ES$ ou #%4A#*8E....A+AI%&5. o 4A#*8E AI* será desa>ilitado na=uele instante. E.EC CIC) (ANDLE /A%&AIL NO+&ND LEN2E. Esse desvioF oCorre apPs um Comando . Essa A a tACniCa reComendada..E DINI)ION.

. 65 .EC CIC) (ANDLE e%. .+.EC CIC) %U)( (ANDLE )U)%ENDE +ODO) (ANDLE CONDI+ION I2NO.A+AI%&5. Isso significa =ue se ocorrer um 8I#:. E.E)E+g %ara suspender@restaurar GA-1*Es O Comando %U)( (ANDLE suspende todos os (ANDLEs @ue enContramIse ativos para o programa.E CONDI+ION (ANDLE A0END (ANDLE AID :>a=e>. 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 transação deveria terminar de ?orma anorma>.E)+AU. Ouando o controle volta para o programa c5amador.A +ODO) %s comandos 4A#*8E são e3clusivos de cada programa em uma tasT. A0END f f f E.. O Comando %O% (ANDLE reativa os (ANDLEs @ue ?oram suspensos.A/ :name. Devemos evitar uti>iTar esses Comandos pois e>es @ue=ram a estrutura do programaF di?iCu>tando ?uturas manutençDes. seus 4A#*8Es são reativados. Dessa ?ormaF o programa pode rea>iTar um QEouseKeepingS antes de seu tArmino.EC CIC) %O% (ANDLE . E. o programa c5amado deverá ter seus prVprios 4A#*8Es. LA0EL CANCEL .O2..

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

O/ :6+E)+E 2.U nNUmitems:. n.ANACAO DE +)7.ECU+E CO//AND NA/E5 E.E)%581111111111 EI0.ANACAO DE +)7. )+A+U)' A0OU+ +O E./AL EI0.E)% 581111111111 %& 1 (EL% (E. 7)0( $ )&( # /)2 11 )0 11 )& 67 . *.O eGemp>o mostra a gravação de um Otem na +) &A++)1 uti>iTando a CECI.E)%ON)E'NO. A seguir veremos o resu>tado da eGeCução. 6 U)E.eYriteUU n/ain f AuGi>iarXU nNOsuspendU . ! END " EI0 5 NA. n)Xsid:.I+E9 +) 9:&A++)1.U &rom:6+E)+E DE 2..ECU+E CO//AND. &.I+E9 +) 9ueue:6&A++)1 6.EC CIC) *. f Item:. nLengtE:8111 1. A CECI mostra o Comando antes de ser eGeCutado :A0OU+ +O E.

4 )+O.O*)E +E/%O.E%EA+ LA)+ &IND %&$')C.A2E .A.OLL &O.+.OLL 0AC3 (AL& %&11')C.A ?igura mostra @ue o Comando teve . permite ?aTer Consu>ta em ?i>as +) e +DF Com uma sArie de ?aCi>idades. AtravAs da %&1 :(EL%.D &ULL %&1 'UNDE&INED PF%#S&ITC$ $EX'C$AR PF(#TERMINATE CE0.A. A CECI A muito Lti> @uando preCisamos Corrigir registros em ar@uivos ou mesmo para Criar registros para teste de a>gumas ap>iCaçDes. +) 9UEUE CE0.I)+ PF"#$ELP )RO&SE %&"'NIE* +O% %&7')C.A2E 9UEUE CE0. CE"+ CE0.+111 .OLL 0AC3 &ULL %&5'NIE* 0O++O/ %&6'.*A.ECO.D 1 O& 1 COL 1 O& 1 EN+E.D (AL& %&#'UNDE&INED %&11')C. 6$ . M 0.AN)IEN+ DA+A A transação CE0.OLL &O.+111 DOE) NO+ E.4 )+O.*A. CO//AND  bbbbbbbbbbbbbbbbbbb +O% O& 9UEUE bbbbbbbbbbbbbbbbbbbbbbbb bbbbbbbbbbbbbbbbb 0O++O/ O& 9UEUE bbbbbbbbbbbbbbbbbbbbbb +E/%O.F temos uma >ista de Comandos @ue podemos uti>iTar para Consu>tar o ConteLdo Comp>eto de ?i>as.esponse5Norma> portanto a +) ?oi rea>mente gravada.

#..3IN2 )+O..%.OLL 0AC3 Em seguidaF o CED& %&11'%...E)) DI)%LA4) %&7')C.O2.. EI)FN/X4..2 ENTER# CONTINUE PF"#UNDEFINED %&"')U%%.D %&11'UNDE&INED PF(#UNDEFINED %&6'U)E.. A partir daO A sP >impar a te>a e CEamar a transação para aCompanEar sua eGeCução. +A)3 6# . para essa tasK...8 AT X4.2.-)S0IC FACI*I0H O CED& A uma transação ?orneCida Com o CIC) @ue ?aCi>ita muito o tra=a>Eo de @uem estH testando novas ap>iCaçDes ou neCessita ?aTer uma determinação de pro=>emas on>ine e interativa....ENIOU) DI)%LA4 PF%#S&ITC$ $EX'C$AR %&5'*O...%"-. TRANSACTION#UPDT PRO*RAM#UPDTP*M TAS+#.."1. c uma ?erramenta Com muitos reCursosF os @uais mostraremos nessa unidade.48 EI)DS / 3.ED4 A ?igura anterior A a primeira te>a @ue o CED& mostra...*A..E)4 AT X4.4 LEN*T$70"8 EI)RCODE / X4. DI)%LA4 %&1 'UNDE&INED &O.D %&#')+O% CONDI+ION) traT%&$')C.......APPLID#CICTST" DISPLA.ENIOU) DI)%LA4 OFFSET#X4....4 EQUAL 6 EI)REQID NO$ANDLE / 3....OLL 0AC3 %&11'%....4 RIDFLD73.(. / 3UPDT4 / (- EI)TRMID / 312."1. PF"#UNDEFINED %&"')U%%. O CED& mostrarH Cada Comando E. 0asta digitar CED& no termina> e pressionar a teC>a EN+E. DI)%LA4 %&#')+O% CONDI+ION) %&1 'A0END U)E....UNIDADE 1% CE1F ' E8EC/0I).*A..5(E4 O )+A+U) indiCa @ue estH em %..EA4 3..#...A/ INI+IA+ION..3IN2 )+O.OLL &O.E)) DI)%LA4) %&7')C..."48 EI)AID / X45D4 INTO73 EI)FN / X4.EC CIC) da ap>iCação Com uma sArie de ?aCi>idades.A2E %&11'UNDE&INED PF%#S&ITC$ $EX'C$AR PF(#END EDF SESSION %&6'U)E.".....(.. Em seguida surgirH a mensagem in?ormando @ue o termina> estH em ED&."1. STATUS# A)OUT TO EXECUTE COMMAND EI)CPOSN /1 EXEC CICS READ EI)CALEN /. c muito ?HCi> uti>iTHI>a. Note @ue temos uma sArie de in?ormaçDes >ogo na primeira >inEa' nome da transaçãoF nome do programaF nLmero da ENTER# CONTINUE tasK.4 AT X4..A2E %&$')C.OLL os va>ores iniCiais do EI0 :EGeC Inter?aCe 0>oCK. STATUS# PRO*RAM INITIATION EI)TIME EI)DATE EI)TRNID EI)TAS+N / "0%"12 / .."4 TRANSACTION#UPDT PRO*RAM#UPDTP*M TAS+#.%4 CE1F ' alteração de argumentos LINE#. FILE73ARQ..1IA.APPLID#CICTST" DISPLA.. %&5'*O.

.2. +A)3 .D %&11'UNDE&INED PF(#END EDF SESSION %&6'U)E.TRANSACTION#UPDT PRO*RAM#UPDTP*M TAS+#.%4 RESPONSE# NOTFND ENTER# CONTINUE PF"#UNDEFINED %&"')U%%..... 3.OLL 0AC3 %&11'%.#.*A."..APPLID#CICTST" DISPLA.%.ENIOU) DI)%LA4 71 PF%#S&ITC$ $EX'C$AR %&5'*O.3IN2 )+O.ECU+ION CO/%LE+E. e apPs a eGeCução :)+A+U)' CO//AND E.8 %ermite ainda a a>teração de a>guns va>ores STATUS# COMMAND EXECUTION COMPLETE CE1F ' alteração de response codes FILE73ARQ.ECU+E CO//AND.2 EI)FN/X4...."48 INTO73 LEN*T$70"8 RIDFLD73...48 EQUAL NO$ANDLE EXEC CICS READ OFFSET#X4.E)) DI)%LA4) %&7')C. DI)%LA4 %&#')+O% CONDI+ION) %&1 'A0END U)E.(. de argumentos antes de eGeCutar o ComandoF ?aCi>itando =astante o proCesso de teste de uma ap>iCação.OLL &O... O CED& sempre mostra o Comando antes de eGeCutar :)+A+U)' A0OU+ +O E..5(E4 LINE#.A2E %&$')C.

.....*A. 71 ... Com esse proCedimentoF o CED& eGi=e tam=Am o endereço de memPria onde esses argumentos estão >oCa>iTados. STATUS# A)OUT TO EXECUTE COMMAND EXEC CICS SEND MAP MAP73TESTMP48 FROM73.ENIOU) DI)%LA4 %&11'UNDE&INED %&1 'A0END U)E...-exadecima1 Com a teC>a %& podemos ?aTer a Conversão dos argumentos para ?ormato EeGadeCima>... +A)3 CED ..A)-4 LINE#..... Isso ?aCi>ita a %&"')U%%. CE1F ' line num er e offset TRANSACTION#UPDT PRO*RAM#UPDTP*M TAS+#........... %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.. PF"#UNDEFINED programa ?onte gerada Facilidades do CE1F %&11'%...("0 EI)FN/X4"-..O CED& mostra a eGeCução do Comando e in?orma o .........4.12 APPLID#CICTST" DISPLA...#......OLL %&#')+O% CONDI+ION) >oCa>iTação do Comando no programa &O...A2E %&6'U)E.OLL 0AC3 %&$')C.9.....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>ação :LINE.E)%ON)E. +am=Am mostra o des>oCamento desse Comando a partir do inOCio do programa:O&&)E+..........8 LEN*T$7("18 MAPSET73TESTMS"48 TERMINAL FREE+) ERASE OFFSET#X4..D ?onte.E)) DI)%LA4) %&5'*O.. DI)%LA4 %&7')C..9..3IN2 )+O..

. mostrarH um va>or negativoF indiCando @ue> te>a estH sendo eGi=ida.E%L4' 4E)-NO. CED 3 )seudo-con. O Campo DI)%LA4 :1a >inEa da te>a do >ado direito. )erH so>iCitado um CPdigo de A0ENDF e em seguida a %&1 deve ser pressionada novamente.IN5 S2*R+5E %ressionando a teC>a %&5 no /enu %rinCipa> do CED&F temos aCesso R *O. :. atravAs da %&#.3IN2I)+O. CED 3 Exec Inter6ace 71oc8 A @ua>@uer instanteF temos aCesso ao EI0.E)) e in?ormar o endereço deseJado. Isso A ?eito atravAs da teC>a %&11 :%. ApPs de?inir as CondiçDesF a teC>a %&" :)U%%. vai ?aTer Com @ue os Comandos anteriores ao so>iCitado não seJam eGi=idos no CED&.ersação %odemos aCompanEar as vHrias tasKs de uma pseudoIConversação Com o CED&.3IN2F podemos veri?iCar o ConteLdo de @ua>@uer endereço de memPria dentro do CIC). CED 3 Sto) conditions )e não deseJamos aCompanEar a eGeCução da tasK Comando por ComandoF temos a possi=i>idade de de?inir CondiçDes de parada :)+O% CONDI+ION). A>Am da *O.CED 3 4*R. CED 3 Pre. No ?ina> da tasKF A ?eita a pergunta se @ueremos aCompanEar a prPGima eGeCução. 0asta posiCionar o Cursor no Campo ADD.3IN2 do programa..A2E.ious Dis)1a9 O CED& permite visua>iTação de atA 11 painAis anterioresF se tivermos neCessidade de rever a>gum Comando @ue JH ?oi eGeCutado. e depois %&" :EI0 Disp>aX. 7 .E)) DI)%LA4). CED 3 so1icitando +:end %odemos so>iCitar o A0END da tasK @ue estH sendo monitorada pe>o CED&atravAs da %&1 .ENIOU) DI)%LA4. A>Am de eGi=ir todos os Campos da *O.3IN2F A permitido a>terar o ConteLdo desses Campos. 0asta pressionar %&5 :*O..

7! .

&i'(iogra)ia Referência: CICS – PROGRAMAÇÃO COMMAND LEVEL RONNAM – Con !"#oria e$ Infor$%#ica L#&a' 7" .