Introduo
O VSAM um gerenciador de arquivos que consiste de um mtodo de acesso memria virtual (VSAM) e de um Servio de Mtodo de Acesso (AMS). O VSAM usado para processar somente arquivos em discos. O AMS so servios do mtodo de acesso executados atravs do programa utilitrio IDCAMS, com mltiplas funes, que vo da criao manuteno de arquivos, do VSAM.
Principais Caractersticas
Controle Centralizado
Informaes sobre os arquivos esto disponveis em dois locais no sistema: no catlogo e em um arquivo denominado VVDS. No catlogo esto contidas informaes necessrias localizao do arquivo como: nome (DSN), tipo de dispositivo e identificao do volume (VOLSER). No VVDS (SYS1.VVDS.Vvolser), que reside no mesmo disco que o arquivo VSAM, ficam as informaes detalhadas sobre o mesmo, como: espao utilizado, espaos livres dentro do arquivo, quantidade de registros no arquivo, quantidade de registros lidos, atualizados, excludos, etc... Como todo arquivo VSAM catalogado, estas informaes esto sempre disponveis para controle.
CATALOG
Proteo de Dados
O VSAM foi projetado para fornecer total proteo dos dados contra delees inadvertidas ou alteraes, o que conhecido como integridade de dados. A proteo prpria do VSAM contra usos no autorizados ou delees, e alteraes indevidas, conhecida como Data Security. Passwords, no so muito utilizados atualmente, dando-se preferncia proteo por produtos especialistas de Segurana, do tipo RACF. A razo para essa preferncia a de que a proteo dada pelo VSAM voltada ao arquivo e no ao usurio que acessa o arquivo. Exemplo: CICS arquivo BAN.CAD.CLIENTE Proteo por Password em termos de UPDATE - todos os acessos sero permitidos para a atualizao do arquivo. Proteo por Software Especialista - Os usurios que acessaro o arquivo devem estar na sua lista de acesso. Para cada usurio ou grupo ser dado o nvel de acesso necessrio: somente leitura, atualizao, etc ...
Cont.
As opes de compartilhamento do uso de arquivos VSAM entre dois Address Spaces (Jobs batch ou monitores On-Line tipo CICS), so escolhidas por meio do parmetro Shareoptions da definio do arquivo VSAM(Cluster). Existem duas situaes onde pode ocorrer o compartilhamento: entre Jobs/CICS, executandos dentro de um mesmo sistema (CROSS REGION), ou entre dois sistemas distintos (CROSS SYSTEM). CROSS REGION 1. Especifica que o DATA SET pode ser acessado por vrios usurios com processamento de leitura "ou " somente 1 usurio com processamento de gravao. 2. Especifica que o DATA SET pode ser acessado por vrios usurios com processamento de leitura "E " e 1 usurio com processamento de gravao.
Cont.
3. Especifica que o DATA SET pode ser totalmente acessado por processamento de leitura " E" gravao. Com esta opo, cada usurio responsvel pela integridade do DATA SET. 4. Especifica que o DATA SET pode ser totalmente acessado por processamento de leitura "E " gravao e os buffers usados para processamento direto so restaurados para cada Request. Para as opes 3 e 4, o programador pode usar macros assembler "ENQ" e "DEQ" para manter a integridade dos dados no acesso a um arquivo VSAM. CROSS SYSTEM 3. DATA SET totalmente acessado. Nesta opo o mtodo de acesso no assegura a integridade do DATA SET. 4. DATA SET totalmente acessado. Buffers utilizados so restaurados a cada request.
Performance
Uma indexao eficientemente organizada que permite rpido acesso a um determinado registro. Espaos distribudos (Free Space) no arquivo, que permitem uma rpida e fcil insero de registros (consequentemente menos reorganizaes no arquivo).
Simplicidade de Uso
O VSAM mantm no Catlogo/VVDS os atributos fsicos e lgicos de todos os arquivos VSAM e tambm guarda a quantidade de espao alocado para esses arquivos. Tudo isso simplifica as especificaes de "JCL" necessrias para processar um arquivo VSAM.
Catlogo ICF
CATLOGO MASTER
UCAT
UCAT
Organizaes de Arquivos
O VSAM possibilita quatro opes de organizao: De uma maneira simples, poder-se-ia dizer que seriam respectivamente equivalentes aos mtodos de acesso tradicionais: ISAM, SAM e DAM.
RL1
RL2
RL3
FREE SPACE
RDF3
RDF2
RDF1
CIDF
A CI (Control Interval) a unidade de transferncia de informao entre o disco e a memria. Seu tamanho pode ser definido pelo sistema ou pelo usurio na criao do arquivo. Basicamente o tamanho calculado com base na utilizao principal do arquivo (Acesso seqencial ou randmico).
10
Cont.
CISZ para ndex Component O CISZ para o Index Component pode ser de 512, 1024, 2048 e 4096 bytes, embora a melhor forma deixar o prprio VSAM calcular o valor apropriado. RLn ( registro lgico n). RDFn ( Record Defnition Field). CIDF (Control Interval Definition Field). Os campos da CI CIDF/RDF contm informaes relativas ao Control Interval, e sobre os registros lgicos. O RDF pode conter informaes tanto de registros de tamanho fixo, como de tamanho variado. A quantidade de Free Space e sua localizao no CI apontada pelo CIDF. NOTAS: Se os registros forem do mesmo tamanho, existiro somente dois RDF's, o primeiro define o tamanho dos registros e o segundo define a quantidade de registros. Podem tambm existir CIs s com Free Space.
11
DD
FS
LL
12
Free Space
So reas livres em se tratando de Control Interval (CI) e/ou Control AREA (CA), que podemos especificar na definio do arquivo VSAM (KSDS). Parmetro da definio do arquivo: FSPC( %CI %CA). utilizado para facilitar e diminuir tempo de incluses no arquivo.
13
100 BYTES
100 BYTES
100 BYTES
150 BYTES
---FREE-----SPACE---
RDF 3
RDF 2
RDF 1
CIDF
R
1 BYTE CIDF
00000001
LL
2 BYTE
11000010 00000010 00110001
DD
FS
LL
FS
TAMANHO FREE SPACE
Control Area
Os Control Intervals so agrupados em uma rea maior, chamada de Control Area (CA). Para um determinado arquivo, o nmero de Control Interval por CA sempre o mesmo, e calculado pelo VSAM com base na alocao de espao: primrio ou secundrio. Uma CA ocupa sempre um nmero inteiro de trilhas, sendo que o mximo de 1 Cilindro. A Control Area tem o seguinte formato: CONTROL AREA (CA)
010 050 090 130 020 060 100 140 030 070 110 150 040 080 120 160 ---FREE-----SPACE-----FREE-----SPACE-----FREE-----SPACE-----FREE-----SPACE--RDF 3 RDF 3 RDF 3 RDF 3 RDF 2 RDF 2 RDF 2 RDF 2 RDF 1 RDF 1 RDF 1 RDF 1 CIDF CIDF CIDF CIDF
14
Cont.
O componente de ndice formado por diversos nveis. 0 nvel mais baixo chamado de "Sequence Set", que aponta diretamente para os CI de uma determinada CA. Os nveis superiores so chamados de "Index Set", e apontam para os CI de ndices de nvel imediatamente inferior. Quando da definio de um arquivo KSDS, podemos optar por usar "Free Space", isto , fazer com que o VSAM deixe espaos vazios nos CI, e nas CA, os quais sero utilizados quando inseridos novos registros. Quando o registro deletado ou tem seu tamanho reduzido, o espao resultante incorporado ao "Free Spac" pelo VSAM. Num KSDS, os registros so armazenados logicamente em ordem seqencial do contedo de um campo-chave. Este campo parte do contedo do conjunto de dados. 0 campo-chave contm um valor, tal como o nmero de empregado ou nmero da fatura, o qual determina a posio de insero do registro no conjunto de dados, veja exemplo:
15
Exemplo
Registro Lgico
4265 Nmero da Pea ----654321-----Nmero da-------Fatura---1508 Preo Unitrio 100 Quantidade Sapato Descrio
Campo-Chave
A chave deve ser nica e estar na mesma posio de cada registro. NOTA: Registros de um KSDS possuem chaves. Um novo registro a ser adicionado ao arquivo e inserido na sua seqncia lgica por chave e quando possvel tambm na sua seqncia fsica.
Exemplo
Campo - Chave
Conjuntos a serem Inseridos no Conjunto de dados 40 20 25 58 60 63
NOTA: Os registros a serem inseridos em um arquivo KSDS no precisam estar em ordem de chave, pois a insero sempre feita por chave, aleatoriamente. Quando o arquivo sofrer o processo de carga, arquivo vazio, a ento os registros devero estar classificados por ordem de chave, sob pena do VSAM abortar a carga.
16
Estrutura de ndices
O VSAM utiliza o Index Component para localizar o registro a ser lido ou localizar a posio para sua insero. INDEX STRUCTURE
I N D E X S E Q U E N C E 27999 42000 67050 99999
10333 10009
23630 10080
25900 10333
42000
C O N T R O L A R E A
10001 10052
10002 10060
10003 10070
13400
13550
14000
FS
14001 15101
14011 17151
14028 23630
FS FS
10022
10250
10300
10333 Free
Free Space
Free Space
Cont.
No Index, temos 2 nveis de controle: SEQUENCE SET Uma CI de Sequence Set controla uma CA. O Sequence Set est sempre em ordem lgica de chaves. INDEX SET - Nvel de controle do componente de ndices, acima do SEQUENCE SET.
17
Insero
SEQUENCE SET 10009 10080 10333 Free
C O N T R O L A R E A
10001
10002
10003
10009
Free
CIDF
10052
10060
10070
10080
Free
CIDF
10222
10250
10300
10333
Free
CIDF
FREE SPACE
CIDF
10052
10060
10070
10080
Free
CIDF
10222
10250
10300
10333
Free
CIDF
FREE SPACE
CIDF
18
10002
Free
10052
10060
10070
10080
Free
CIDF
10222
10250
10300
10333
Free
CIDF
10006
10007
10009
Free
CIDF
19
ndices Alternados
Possibilita acessar um KSDS por uma chave diferente da chave primria. (Exemplo: arquivo de folha de pagamento por nome, nmero de matrcula ou cdigo de departamento ou um arquivo Vsam ESDS (seqencial) por algum campo dos registros que ser estabelecido como chave alternada). Os registros do ndice Alternado contm valores das chaves alternadas associadas com a chave primria. Esta associao feita com valor explcito da chave KSDS, com o seu RBA (4 Bytes) - ESDS.
20
Path 1
Path 2
S. S. S. S. S.
S. S. S. S.
S. S. S.
NOTA: Quando o acesso feito pelo PATH, os dados disponveis so todos os do Cluster Base.
Upgrade Automtico
Para os membros do UPGRADE SET. Se o cluster bsico for aberto diretamente ou via PATH para atualizao. Novos pointers so adicionados ao fim do conjunto de pointers do registro de ndice Alternado. (por ordem de chegada) Podem ser alteradas as chaves alternadas, exceto a chave de referncia (Primria). Atualizaes ou inseres falharo ao tentar produzir uma chave no nica para um membro de chave nica do UPGRADE SET. Um KSDS tem que ter chave nica, ndice Alternado pode ter chaves no nicas. Para uma determinada chave alternada existem vrias chaves primrias.
21
ndice
NDICE ALTERNADO 1 NDICE ALTERNADO 2
NDICE ALTERNADO 3
CLUSTER BSICO
NDICE ALTERNADO 4
AMS
Os servios do mtodo de acesso (AMS) so executados pelo programa IDCAMS. Estes servios so utilizados pelo VSAM para criar e manter arquivos. O AMS permite a execuo de vrias funes como: Estabelecer catlogos Criar e inicializar arquivos Construir um ou mais Alternate Indexes Converter arquivos no VSAM para VSAM Fazer backup e restore Mover catlogo e arquivos de um sistema para outro Listar as entradas do catlogo Listar, copiar ou reorganizar arquivos Alterar atributos ou definies Deletar arquivos e catlogos Recuperar arquivos perdidos ou catlogos
22
JC L /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ********************************** /* * * * * * * * ALO C A D ATA SET VSAM KSD S * * * * * * * * * * * * /* * * * * * * ************ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /STEP01I / EXEC PG M =I C AM S D /SYSPR I T / N DD SYSO U T=X /SYSI / N DD * D EFI E C LU STER N ( AM E ( N AXP0410. TESTE. KSD S. LU STER ) C -
23
Cont.
ER ASE SPEED FO R ( 120) I BED M R EPLI ATE C VO LU M E ( TG 003) W C YLI D ER S ( 1) N 2 C I 4096) SZ( FR EESPAC E ( 20) 10 KEYS ( 0) 8 R EC O R D SI ( 80) ZE 80 ) D ATA N AM E ( AXP0410. TESTE. KSD S. ATA) D ) I D EX N ( AN E ( N AXP0410. TESTE. KSD S.N D EX) I CI ( SZ 1024) ) /* / / -
FOR IMBED
24
Cont.
REPLICATE Faz com que cada CI do componente de ndice seja reproduzido em uma trilha separada, tantas vezes possvel. NOTA: Tanto o IMBED, como o REPLICATE otimizam o tempo de busca. Volume serial onde ser alocado o espao para o CLUSTER. Tamanho do Control Interval.
VOLUME
CISZ
FREESPACE (%CI %CA) A = Porcentagem de espao livre deixado em cada CONTROL INTERVAL. B = Porcentagem de control interval deixados livres em cada "CONTROL AREA.
Cont.
KEYS (AB) A =Tamanho de chave. B =Deslocamento dentro do registro a partir de zero RECORDSIZE (A B) A =Tamanho mdio do registro. B =Tamanho mximo do registro. DATA NAME INDEX Indica incio dos parmetros do componente de dados. Nome para o componente de dados do Clister Indica incio dos parmetros do componente de ndice. Nome para o componente de ndice do clister.
NAME
25
26
Cont.
Codificao: //SYSIN DD * REPRO INDATASET (ENTRADA) OUTDATASET(AXP0410.TESTE.KSDS.CLUSTER) REPLACE /* REUSE: Provoca a deleo lgica do DATA SET alvo (KSDS, ESDS ou RRDS), inserindo registros a partir do DATA SET fonte, como se o mesmo estivesse vazio.
Cont.
//SYSIN DD * REPRO INDATASET (ENTRADA) OUTDATA (AXP0410.TESTE.KSDS.CLUSTER) REUSE /* SKIP e COUNT: -
SKIP especifica o ponto do arquivo fonte de onde sero copiados os registros COUNT determina o nmero de registros a serem carregados.
//SYSIN DD * REPRO INDATASET (ENTRADA) OUTDATA (AXP0410.TESTE.KSDS.CLUSTER) FROMKEY(00100) TOKEY(00200) /* FROMKEY e TOKEY: Estabelece o intervalo de registros a serem carregados (de FROMKEY-TOKEY).
27
28
CATALOG: Indica o catlogo do usurio onde se encontra o DATA SET a ser deletado. Este parmetro s deve ser utilizado sob orientao do suporte.
29
Consideraes Iniciais
O ndice Alternado oferece uma outra ordem de acesso ao DATA SET, alm daquela oferecida pelo campo da chave primria. Entretanto, seu uso indiscriminado, especialmente quando parte de um UPGRADE SET, pode acarretar srios problemas de performance. Dessa maneira, deve ser usado somente quando a aplicao realmente for necessria. JCL //********************************************************** //******ALOCA ALTERNATE INDEX PARA UM VSAM KSDS******** //********************************************************** //STEP05 EXEC PGM=IDCAMS /SYSPRINT DD SYSOUT=* //SYSIN DD * DEFINE AIX (NAME(AXP0410.TESTE.AIX1.CLUSTER) -
30
Cont.
RELATE(AXP0410.TESTE.KSDS.CLUSTER) VOLUMES(WTG001) CISZ(2046) CYLINDERS(1 1) KEYS(23 8) NONUNIQUEKEY RECORDSIZE(23 47) FREESPACE(20 20)) DATA (NAME(AXP0410.TESTE.KSDS.AIX1.DATA)) INDEX (NANE(AXPOIO.TESTE.KSDS.AIX1.INDEX- )) /* // -
CISZ UPGRADE
31
Cont.
RECORDSIZE O primeiro valor fornece o tamanho mdio do registro e o segundo, seu tamanho mximo. A frmula seguinte utilizada para calcular seu tamanho: onde: Tam: Reg. = 5 + tam. Chave alternada + n * tam.
O nmero '5' indica o nmero de bytes necessrios para controle interno do VSAM. N' o nmero de ocorrncias de chaves no nicas previstas. O clculo deve ser feito para o nmero mdio e mximo de ocorrncias. Seja generoso no clculo mximo, pois esse nmero limita a ocorrncia de chaves no nicas. NOTAS: 1 Para o caso de chave nica, teramos: tam. reg. = 5 + tam. ch. alt. + Tm. chave primria 2 Quando o Alternate Index se referir a um arquivo ESDS, o tamanho da chave primria ser de 4 bytes (RBA).
32
Pr-Condies
Antes da execuo do comando, as funes seguintes devem ter sido executadas com sucesso: BASE CLUSTER deve ter sido alocado. BASE CLUSTER deve ter sido carregado com registros. O ALTERNATE INDEX CLUSTER, necessariamente, j dever estar alocado. JCL //**************************************************************** //******CARGA DO ALTERNATE INDEX A PARTIR DE UM ARQ KSDS****** //***************************************************************** //STEP06 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=X //BASE DD DSN=AXP0410.TESTE.KSDS.CLUSTER,DISP=OLD //AIX1 DD DSN=AXP0410.TESTE.KSDS.AIX1.CLUSTER,DISP=OLD
Cont.
//IDCUT1 DD DSN=SORT.WORK.FILE.UM,DISP=OLD,AMP=AMORG, // VOL=SER=WTG003,UNIT=3380 //IDCUT2 DD DSN=SORT.WORK.FILE.DOIS,DISP=OLD,AMP=AMORG, // VOL=SER=WTG003,UNIT=3390 //SYSIN DD * BLDINDEX INFILE(BASE) OUTFILE(AIX1) INTERNALSORT CATALOG /*
33
34
Definindo um Path
Consideraes Iniciais
O PATH uma entrada no catlogo e estabelece uma ligao lgica entre o ALTERNATE INDEX e o BASE CLUSTER. Portanto, o PATH no um DATA SET, no ocupa espao e tambm no possui qualquer registro. Com este comando evita-se codificao adicional na DATA DIVISION, pois haveria necessidade de uma rea para BASE CLUSTER e outra para o ALTERNATE INDEX CLUSTER de um programa COBOL . JCL //********************************************************** //*****************DEFINE UM PATH ************************* //********************************************************** //STEP08 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * DEFINE PATH (NAME (AXP0410.TESTE.KSDS.PATH) PATHENTRY (AXP0410.TESTE.KSDS.AIX1.CLUSTER) UPDATE) /* // NOTA: O parmetro UPDATE ( o default e no precisa ser codificado) permite que o BASE CLUSTER e seu UPGRADE SET sejam abertos automaticamente para processamento. Em caso contrrio (NOUPDATE), o BASE CLUSTER aberto, mas seu UPGRADE SET no.
35
36
JCL //*************************************************** //**********ALOCA DATA SET VSAM ESDS ************************ //*************************************************** //STEP11 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=X //SYSIN DD * DEFINE CLUSTER (NAME(AXP0410.TESTE.ESDS.CLUSTER) VOLUMES(WTG003) CYLINDERS(2 1) CISZ(4096) -
Cont.
NONINDEXED RECORDSIZE(80 80) DATA (NAME(AXP0410.TESTE.ESDS.DATA)) /* // -
COMENTRIOS O parmetro NONINDEXED deve ser codificado, o DEFAULT INDEXED. Assim, caso no seja codificado, o VSAM assumir os valores DEFAULTS para parmetros como KEYS, FREESPACE etc. e tratar o DATA SET como KSDS. Os registros so carregados por ordem de entrada e no existem chaves.
37
38
39
//****************************************************** //**************ALOCA DATA SET VSAM RRDS********************* //****************************************************** // STEP15 EXEC PGM=IDCAMS // SYSPRINT DD SYSOUT=X // SYSIN DD * DEFINE CLUSTER NAME(AXP0410.TESTE.RRDS.CLUSTER) VOLUMES(WTG003) CYLINDERS(2 1) -
Cont.
CISZ(4096) NUMBERED RECORDSIZE(80 80)) DATA (NAME(AXP0410.TESTE.RRDS.DATA)) /* // COMENTRIOS O parmetro NUMBERED deve ser codificado para identificar a criao de um arquivo RRDS. Lembre-se que o DEFAULT INDEXED (identifica um KSDS). -
40
41
Comando Alter
Tem aplicao na mudana de muitos dos atributos de um DATA SET VSAM (nem todos atributos podem ser modificados). Exemplo para mudana do nome de um DATA SET: JCL //************************************************************* //************* EXEMPLO - USO DO COMANDO ALTER************* //************************************************************* //STEP 19 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=X //SYSIN DD * ALTER AXP0410.TESTE.KSDS.CLUSTER -
42
Cont.
NEWNAME(AXP0410.TESTNOVO.KSDS.CLUSTER) ALTER AXP0410.TESTE.KSDS.DATA NEWNAME(AXP0410.TESTNOVO.KSDS.DATA ALTER AXP0410.TESTE.KSDS.INDEX NEWNAME(AXP0410.TESTNOVO.KSDS.INDEX) /* // -
NOTA:O comando ALTER apesar de muito poderoso, apresenta restries. Para informaes detalhadas, consultar o manual AMS (Access Method Service) da IBM..
Comando Listcat
Este comando utilizado para apresentar todos os atributos e caractersticas dos objetos VSAM / NO VSAM do catlogo ICF. A lista apresenta informaes que podero ajudar, por exemplo, a determinar quando um KSDS deve ser reorganizado ou mesmo identificar todos os parmetros definidos em tempo de alocao. Exemplo para o KSDS definido anteriormente: //******************************************************* //*******EXEMPLO DO USO DO COMANDO LISTCAT********** //******************************************************* //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=U //SYSIN DD * LISTCAT ENT(AXP0410.TESTE.KSDS.CLUSTER) ALL /*
43
Cont.
ENTRIES (nome do arquivo) Especifica o nome do arquivo, cujas entradas no catlogo sero listadas. Se ENTRIES no for especificado e nenhum tipo de entrada for especificado, o catlogo inteiro ser listado. NAME/VOLUME/ALLOCATION/ALL Especifica o tipo de informao a ser includo no relatrio emitido. LEVEL Especifica que ser listado o nvel de nome de entrada. Exemplo: LISTCAT LEVEL (CNV) ALL CATALOG (nome do catlogo) - Opcional Especifica o nome do catlogo a partir de onde as entradas sero listadas. CLUSTER/DATA/INDEX/ALIAS/ SPACE/ NONVSAM Especifica o tipo de entrada a ser listada.
44
Cont.
Voc pode usar os comandos modais IF-THEN-ELSE para controlar a seqncia de comandos executada. A varivel LASTCC contm o cdigo proveniente do ltimo comando executado, enquanto a varivel MAXCC contm o maior cdigo retornado por um comando executado anteriormente, dentro desta execuo do programa IDCAMS. Este valor o que aparece no COND CODE do JCL. Os operadores relacionais para comparao no LASTCC e MAXCC so:
= ^= > < >= <= ou ou ou ou ou ou eq ne gt lt ge le para para para para para para igual; diferente; maior que; menor que; maior ou igual; menor ou igual;
Exemplo
//*************************************************************** //*****REPRO P/ CARGA DO ESDS COM CONTROLE DE SEQ. EXEC.***** //*************************************************************** //STEP12 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //EB1ARQ DD DSN=AXP0410.DATA(ENTRADA),DISP=SHR //BASE DD DSN=AXP0410.TESTE.ESDS.CLUSTER, // DISP=OLD //SYSIN DD * REPRO INFILE (EB1ARQ) OUTFILE (BASE) IF LASTCC = 0 THEN LISTCAT ENT(AXP0410.TESTE.ESDS.CLUSTER) ALL
45
Cont.
ELSE DELETE AXP0410.TESTE.ESDS.CLUSTER /* // NOTA: O comando 'SET' pode ser usado para mudar o cdigo de condio: IF LASTCC = 0 THEN ELSE SET MAXCC = 16 No caso acima, o cdigo de retorno do passo ser 16, indicando que deveremos encerrar a execuo do JOB.
Cont.
Observe que os caracteres de continuao no precisam ser usados na seqncia DO/END, apenas para os parmetros contidos no LISTCAT, VERIFY, PRINT etc. O comando END deve ser nico em uma linha. LISTCAT PRINT IF LASTCC EQ 0 THEN DO END ELSE DO PRINT REPRO END NOTA: Se em uma instruo IF desejarmos executar mais do que um comando funcional, deveremos delimit-los com um DO-END.
46
Cont.
DISP Se os subparmetros CATLG ou UNCATLG forem codificados, uma mensagem gerada, mas no h qualquer efeito sobre o DATA SET, porque DATA SETS VSAM so catalogados, descatalogados e deletados por meio do comando do AMS (Access Method Service). A codificao do DELETE como subparmetro do DISP no ter qualquer efeito sobre o DATA SET VSAM. Se NEW for codificado, o OS/390 alocar espao, mas este no ser utilizado. Nomes temporrios no podem ser usados com DATA SET VSAM (Nomes comeando com'&&').
DSN
LABEL Devido aos DATA SET VSAM residirem em dispositivos de memria de acesso direto, os subparmetros BLP, NL no possuem qualquer significado para arquivos VSAM.
47
BUFND
BUFND: Este parmetro fornece o nmero de I/O BUFFERS a ser utilizado pelo componente de dados do CLUSTER. Cada BUFFER do tamanho do CI de dados. O valor DEFAULT de dois BUFFERS de dados, sendo que um dos dois usado somente durante as divises (SPLITS) de 'CI/CA'. A quantidade de BUFFERS deixados para processamento normal '1'. Se no programa o acesso aos dados for seqencial (ACCESS MODE SEQUENTIAL ou DYNAMIC), a especificao de uma quantidade de BUFFERS maior um importante meio na reduo dos I/O's para o componente de dados. 0 valor timo depende do tipo de dispositivo que est sendo utilizado (disco 3380,3390 etc.) e dado pela frmula: BUFND = (N = NMERO DE CIs POR TRILHA) x 2
48
Cont.
'N' o nmero de CIs de dados que sero lidas em cada acesso ao disco(I/O). O nmero de CI's por trilha pode ser determinado pelo comando: LISTCAT ENT(AXP0410.TESTE.KSDS.CLUSTER) ALL Sua equao : NUM. DE CIS PARA TRILHA = A / B A = CI / CA campo do LISTCAT da parte do componente de dados;
Cont.
B = TRACKS/CA idem ao acima. Se Access Mode is Random for especificado no programa, o valor DEFAULT (igual a '2') suficiente para uma boa performance de programas BATCH Cobol. importante observar que o valor de BUFND quando apropriadamente codificado, reduz significativamente o tempo de processamento para BACKUPS e reorganizaes.
49
BUFNI
BUFNI: Para o componente de ndice do KSDS, cada BUFFER do tamanho de uma 'CI' do ndice. Este subparmetro pode ser codificado somente para 'KSDS' (ESDS e RRDS no possuem componente de ndice). O valor DEFAULT 1, o qual suficiente para processamento BATCH seqencial, mas em geral no suficiente para acesso randmico. Se Access Mode is Random ou Dynamic for especificado no programa Cobol para um arquivo KSDS, o valor timo a ser utilizado encontrado a partir do comando LISTCAT e da utilizao da seguinte equao: 1 Se a opo de tratamento de ndices IMBED no foi especificada na criao do arquivo:
Cont.
BUFNI = campo do LISTCAT do componente de INDEX - STATISTICS REC-TOTAL = Nmero 2 Se a opo IMBED foi especificada: BUFNI = ( A / B ) - (C / D ) + 1 Onde: A = HURBA DO INDICE B = TAM. DO CI DO INDICE C = HURBA DO DATA D = TAM. DO CI DO DATA X NUM. DE CIs POR CA (CI/CA) HURBA High Used RBA campo do LISTCAT CI/CA - Campo do LISTCAT NOTA: Esses clculos devero resultar em um valor inteiro .
50
BUFSP
BUFSP: Fornece o nmero de bytes requeridos para os BUFFERS do componente de dados e ndice. Se o valor maior do que aquele que aparece no parmetro BUFFERSPACE do comando DEFINE CLUSTER, ele o sobrepe. Apesar de podermos codificar este parmetro recomendvel deixar seu clculo a cargo do VSAM. Apenas para efeito de ilustrao, o valor que se obtm para este parmetro a partir da equao seguinte: BUFSP = (A * B * 2) + (C * D * 1)
Cont.
Onde: A = TAM. CI. DATA B = Quantidade de BUFFERS de dados C = TAM. CI. DE NDICE D = Quantidade de BUFFERS de ndice.
O PARMETRO AMP CODIFICADO DA SEGUINTE MANEIRA NO JCL: //EXAMP // DD DSN=EXAMP.KSDS.CLUSTER, DISP=SHR, AMP= ('BUFNI=5','BUFND=12')
51
52
Cont.
Processamento direto CIs de pequeno tamanho favorecem o processamento direto, pois elimina-se com isso a transferncia de dados desnecessrios do disco para a memria. No processo ON-LINE (CICS), menos registros ficam bloqueados em caso de atualizao. Processamento seqencial Cls de tamanhos maiores podem melhorar a performance para processamento seqencial, pois um maior nmero de dados ser transferido em cada 1/0. Processamento misto CIs podem ser de tamanho menor, o que atende s necessidades do processamento aleatrio, e para o processamento seqencial seriam fornecidos mais BUFFERS, conforme a frmula colocada anteriormente. Espao no utilizvel no 'Cl' Escolha um CI de dados que resultar em um espao mnimo no utilizvel no fim de cada CI.
Cont.
O uso do DEFAULT para o tamanho do CI do componente de ndice O tamanho do CI do componente de ndice dever normalmente ficar a cargo do prprio VSAM. Porm, em alguns casos raros, um valor muito pequeno para o CI do ndice poder causar desperdcio de espao no disco. Tal situao pode ocorrer quando o tamanho do CI do ndice no consegue acomodar o conjunto de KEYS e RBA para todos os CIs dentro de uma CA. O algoritmo interno do VSAM (baseado no tamanho do CI, nmero de CIs por CA e no tamanho mdio da chave aps compresso) normalmente funciona apropriadamente, a no ser em excees, quando a compresso de chaves no a esperada, como chaves totalmente distintas uma das outras, muitas CIs dentro de uma CA, quando deve ser feita uma validao da ocupao do espao desse arquivo.
53
Comparao entre os Trs Tipos de Vsam: Ksds, Data Sets Vsam: Ksds, Esds e Rrds
Acesso atravs de campos chave Somente os arquivos KSDS possuem campo de chave primria. Uma chave alternada nica pode ser usada para um ESDS, mas compiladores Cobol no suportam essa caracterstica para aplicaes BATCH (processando sob o CICS possvel). Chaves alternadas (Alternate Keys) KSDS e ESDS podem ter at '253' chaves alternadas. RRDS no suportam chaves alternadas. Espao requerido Um KSDS necessita de espao adicional para o componente de ndice. Opcionalmente, pode ser reservado espao adicional, deixado no componente de dados para inseres randmicas (parmetro FSPC). Delees Os registros so fisicamente deletados em arquivos KSDS e RRDS. Um ESDS no possui essa caracterstica.
54
Cont.
Divises De CI E CA Somente KSDS sofrem divises de CI's e CA's. Reorganizao Arquivos KSDS precisam ser freqentemente reorganizados porque os registros ficam fora de seqncia fsica, como conseqncia das divises (splits) de CI's e CA's. Arquivos ESDS e RRDS no precisam ser reorganizados. Acesso atravs do RBA Registros em arquivos KSDS e ESDS podem ser acessados atravs do RBA (Relative Byte Address), sob CICS. Para aplicaes BATCH Cobol, esse acesso no possvel. Tamanho do registro Registros podem ser de tamanho fixo ou varivel para arquivos KSDS, ESDS e RRDS.
Cont.
Aplicao Arquivos KSDS podem ser utilizados em aplicaes que requerem acesso atravs de um campo chave em particular ou acesso seqencial. Um arquivo ESDS normalmente utilizado quando os registros so processados seqencialmente ou com o fim da criao de arquivos BACKUP. Um RRDS ser utilizado se for possvel desenvolver um algoritmo que relacione um campo do registro com um nico RRN (Relative Record Number). Lembrar que, para acessos randmicos um RRDS mais eficiente do que um KSDS, no entanto, a dificuldade est no desenvolvimento do referido algoritmo.
55