|
Para o manuseio dos arquivos no CICS, existe um modulo chamado FILE CONTROL PROGRAM ( FCP ), sendo que
ele controla todos os acessos aos arquivos.
O 'FCP' possui a FILE CONTROL TABLE ( FCT ) que é o local onde estão contidas todas as informações
referentes as funções de serviço (READ, WRITE, REWRITE, DELETE, ETC), previstas para um determinado
arquivo e contém também todas as informações descritivas referente ao arquivo, portanto não há a necessidade
de definição do arquivo pelo programa de aplicação.
O 'FCP' possui as seguintes funções:
- abrir e fechar arquivos
- controle exclusivo
- recuperação de arquivos
- ler para simples consulta
- ler para posterior atualização
- atualização
- deletar registros
- adicionar registros
- liberar o controle exclusivo
- acessar o arquivo sequencialmente
No manuseio de um arquivo pelo programa de aplicação, ocorrendo um erro por estar efetuando algo que o VSAM
não suporta, ocorrerá a condição de exceção 'ILLOGIC'.
Comando READ
Formato do comando:
| EXEC CICS READ |
Explicação do argumento |
|
DATASET ('nome arquivo')
|
Especifica-se o nome do arquivo a acessar.
|
|
INTO (WORK-AREA)
|
Especifica-se a área onde deverá ser colocadoo registro lido.
|
|
RIDFLD (WORK-CHAVE)
|
Especifica-se a chave do registro a ser lido.
|
|
LENGTH (+100)
|
Especifica-se o tamanho do registro a ser lido. opcional se for registro fixo.
|
|
UPDATE
|
Informa que o registro a ser lido sofrerá posterior atualização.
|
|
GENERIC
|
Indica que a chave informada é parcial, ou seja, não está sendo informada toda a chave.
|
|
KEYLENGTH (+10)
|
Especifica-se o tamanho da chave genérica. Este argumento é usado em conjunto com a opção
'GENERIC' e só pode ser usada para arquivos KSDS.
|
|
GTEQ
|
O CICS tentará ler um registro com chave maior ou igual a chave informada.
|
|
EQUAL
|
O CICS tentará ler um registro com chave igual a chave informada ( DEFAULT ).
|
|
RBA
|
Para arquivos ESDS, indica que a area especificada em 'RIDFLD' contem um RBA e nao a chave do registro.
Neste caso, a area especificada em 'RIDFLD' deve estar definida PIC S9(008) COMP.
|
Este comando é utilizado para uma leitura randômica em um arquivo
Exemplo do comando:
EXEC CICS READ DATASET ('D02TAB')
INTO (WORK-TAB)
RIDFLD (WORK-CHAVE)
LENGTH (+130)
END-EXEC.
Explicacao do exemplo:
O CICS tentará ler um registro no arquivo 'D02TAB' com chave igual ao conteudo de 'WORK-CHAVE',
o registro será colocado em 'WORK-TAB' e seu tamanho é de 130 bytes.
Condição de exceção:
- DSIDERR: o arquivo informado não consta na 'FCT'.
- NOTOPEN: o arquivo informado está fechado.
- NOTFND: o registro requisitado não existe.
- DUPKEY: o arquivo informado é um índice alternado e existe mais de um registro com a mesma chave
alternada
- INVREQ: não existe, na 'FCT', previsão para a utilização deste recurso
- OUTROS: ILLOGIC, IOERR, LENGERR.
Comando WRITE
Formato do comando:
| EXEC CICS WRITE |
Explicação do argumento |
|
DATASET ('NOME ARQUIVO')
|
Especifica-se o nome do arquivo que se deseja acessar.
|
|
FROM (WORK-AREA)
|
Especifica-se a área onde se encontra o registro a ser gravado.
|
|
RIDFLD (WORK-CHAVE)
|
Especifica-se a chave do registro a ser gravado. Deve ser igual a chave da área de dados
indicada na opção 'FROM'.
|
|
LENGTH (+100)
|
Especifica-se o tamanho do registro a ser gravado. Opcional se for registro fixo.
|
|
RBA
|
Para arquivos ESDS, indica que a área especificada em 'RIDFLD' contem um RBA e não a chave
do registro. Neste caso, a área especificada em 'RIDFLD' deve estar definida PIC S9(008) COMP.
|
|
MASSINSERT
|
Inserção em massa de registros. As chaves devem ser ascendentes. Esta operação deve ser terminada
por um 'UNLOCK' para um posterior acesso ao arquivo.
|
Este comando é utilizado para fazer adição de registros em um arquivo
A opção 'MASSINSERT' permite a inclusão sequencial de registros no VSAM, sendo que a partir da inclusão do
primeiro registro, o CICS determinará o controle exclusivo para o programa, que deverá ser liberado quando
não houver mais registros a incluir, através do comando 'UNLOCK'
Exemplo do comando:
EXEC CICS WRITE DATASET ('D02TAB')
FROM (WORK-TAB)
RIDFLD (WORK-CHAVE)
LENGTH (+130)
END-EXEC.
Explicacao do exemplo:
O CICS tentará incluir um registro no arquivo 'D02TAB' com chave igual ao conteúdo de 'WORK-CHAVE',
O registro será retirado de 'WORK-TAB' e seu tamanho é de 130 bytes.
Condição de exceção:
- DUPREC: o registro informado já existe no arquivo
- NOSPACE: não existe mais espaço no arquivo para a adição de registros.
- INVREQ:
- não existe, na 'FCT', previsão para a utilização deste recurso
- o arquivo está definido na 'FCT' como ESDS e
- o comando não possui a opção RBA
- o arquivo está definido na 'FCT' como KSDS e
- o comando possui a opção RBA
- Outros: DSIDERR, ILLOGIC, IOERR, LENGERR, NOTOPEN.
Comando REWRITE
Formato do comando:
| EXEC CICS REWRITE |
Explicação do argumento |
|
DATASET ('NOME ARQUIVO')
|
Especifica-se o nome do arquivo que se deseja acessar.
|
|
FROM (WORK-AREA)
|
Especifica-se a área onde se encontra o registro a ser gravado.
|
|
LENGTH (+100)
|
Especifica-se o tamanho do registro a ser gravado. Opcional se for registro fixo.
|
Este comando é utilizado para regravar um registro em um arquivo. o registro deve ter sido anteriormente
recuperado através do comando 'READ' com a opção 'UPDATE'. Após a leitura, seu campo chave não poderá
ser alterado.
Exemplo do comando:
EXEC CICS REWRITE DATASET ('D02TAB')
FROM (WORK-TAB)
RIDFLD (WORK-CHAVE)
LENGTH (+130)
END-EXEC.
Explicação do exemplo:
O CICS tentará regravar um registro no arquivo 'D02TAB' com chave igual ao conteúdo de 'WORK-CHAVE',
o registro será' retirado de 'WORK-TAB' e seu tamanho é de 130 bytes.
Condição de exceção:
- INVREQ:
- Não existe, na 'FCT', previsão para a utilização deste recurso.
- O registro a ser regravado não foi recuperado através do comando 'READ' com a opção 'UPDATE'.
- A chave do registro a ser regravado foi alterada pelo programa de aplicação.
- Outros: DSIDERR, ILLOGIC, IOERR, LENGERR, NOTOPEN, NOSPACE.
Comando DELETE
Formato do comando:
| EXEC CICS DELETE |
Explicação do argumento |
|
DATASET ('NOME ARQUIVO')
|
Especifica-se o nome do arquivo que se deseja acessar.
|
|
RIDFLD (WORK-CHAVE)
|
Especifica-se a chave do registro a ser deletado. Obrigatório quando usado a opção 'GENERIC'
|
|
GENERIC
|
Indica que a chave informada é parcial, ou seja, nao está sendo informada a chave completa.
todos os registros que possuam esta chave parcial serao deletados.
|
|
KEYLENGTH (+10)
|
Especifica-se o tamanho da chave genérica. este argumento é usado em conjunto com a opção
'GENERIC' e sómente pode ser usada para arquivos KSDS.
|
|
NUMREC (WORK-QTD)
|
O CICS COLOCARA' NESTE CAMPO O NUMERO DE REGISTROS QUE O VSAM DELETOU. ESTE ARGUMENTO SO' PODE
SER USADO EM CONJUNTO COM A OPCAO 'GENERIC'. O CAMPO DEVE SER DEFINIDO COMO PIC S9(004) COMP.
|
|
RBA
|
Para arquivos ESDS, indica que a area especificada em 'RIDFLD' contem um RBA e nao a chave do registro.
Neste caso, a area especificada em 'RIDFLD' deve estar definida PIC S9(008) COMP.
|
Este comando é utilizado para deletar um registro ou, se especificada uma chave genérica, um grupo de registros.
Caso um registro tenha sido lido com a opção 'UPDATE', este comando pode ser utilizado para deleta-lo. Neste caso
as opcões 'RIDFLD', 'KEYLENGTH', 'GENERIC' e 'NUMREC' não podem ser utilizadas.
A opção 'GENERIC' não pode ser utilizada para arquivo com a opção 'LOG=YES' na 'FCT'.
Exemplo do comando:
EXEC CICS DELETE DATASET ('D02TAB')
RIDFLD (WORK-CHAVE)
KEYLENGTH (+10)
GENERIC
NUMREC (WORK-QTD)
END-EXEC.
Explicação do exemplo:
O CICS tentará deletar todos os registros que possuam em seu campo chave as 10 primeiras posições iguais as 10
primeiras posições do campo 'WORK-CHAVE'. Após efetuada a deleção, o CICS colocará em 'WORK-QTD' o nÚmero de
registros que o VSAM deletou.
CONDICAO DE EXCECAO:
- NOTFND: O registro indicado não existe no arquivo. Tal condição de exceção só acontecerá se o
registro nao foi lido com a opção 'UPDATE'.
- Outros: DSIDERR, ILLOGIC, INVREQ, IOERR, NOTOPEN.
Comando UNLOCK
Formato do comando:
| EXEC CICS UNLOCK |
Explicação do argumento |
|
DATASET ('NOME ARQUIVO')
|
Especifica-se o nome do arquivo que se deseja acessar.
|
Este comando é utilizado para liberar o controle exclusivo obtido através do comando READ com opção 'UPDATE'
ou através de uma operação de inserção em massa de registros (MASSINSERT).
É utilizado quando um registro foi lido para ser atualizado, porem determinou-se que a atualização nao irá
ocorrer.
O controle exclusivo é feito em todo o 'CONTROL INTERVAL' a que pertence o registro.
Exemplo do comando:
EXEC CICS UNLOCK DATASET ('D02TAB')
END-EXEC.
Explicação do exemplo:
O CICS liberará o controle exclusivo sobre os registros recuperados através do comando 'READ' com a opção
'UPDATE' no arquivo 'D02TAB'.
Condição de exceção:
- NOTOPEN: O arquivo informado está fechado.
- Outros: DSIDERR, ILLOGIC, INVREQ, IOERR.
|