A instrução OPEN inicia o processamento de arquivos. Ele também verifica ou grava etiquetas, ou ambos.
Formato 1: instrução OPEN para arquivos sequenciais
>>-OPEN---------------------------------------------------------> .---------------------------------------------------------. | .------------------------------------------. | V V | | >----+-INPUT----file-name-1--+-------------------------+-+-+-+->< | | (1) | | | +-REVERSED----------------+ | | | (1) | | | '-+------+--NO REWIND-----' | | '-WITH-' | | .--------------------------------------. | | V | | +-OUTPUT----file-name-2--+---------------------+-+----+ | '-+------+--NO REWIND-' | | '-WITH-' | | .-------------. | | V | | +-I-O----file-name-3-+--------------------------------+ | .-------------. | | V | | '-EXTEND----file-name-4-+-----------------------------'
Observações: REVERSED e WITH NO REWIND são sinalizadas, mas não têm efeito na execução do programa.
Formato 2: instrução OPEN para arquivos indexados e relativos
.-----------------------------. | .-------------. | V V | | >>-OPEN----+-INPUT----file-name-1-+--+-+----------------------->< | .-------------. | | V | | +-OUTPUT----file-name-2-+-+ | .-------------. | | V | | +-I-O----file-name-3-+----+ | .-------------. | | V | | '-EXTEND----file-name-4-+-'
Formato 3: instrução OPEN para arquivos de linha sequencial
.-----------------------------. | .-------------. | V V | | >>-OPEN----+-INPUT----file-name-1-+--+-+----------------------->< | .-------------. | | V | | +-OUTPUT----file-name-2-+-+ | .-------------. | | V | | '-EXTEND----file-name-4-+-'
INPUT, OUTPUT, IO e EXTEND especificam o modo a ser usado para abrir o arquivo. Pelo menos um dos comandos INPUT, OUTPUT, IO ou EXTEND deve ser especificado com a palavra-chave OPEN.
As frases INPUT, OUTPUT, IO e EXTEND podem aparecer em qualquer ordem.
INPUT
Permite operações de entrada.
OUTPUT
Permite operações de saída. Esta frase pode ser especificada quando o arquivo está sendo criado.
Não especifique OUTPUT para arquivos que contêm registros. O arquivo será substituído por novos dados.
Se o comando OUTPUT for especificado para um arquivo que já contenha registros e o sistema de arquivos VSAM for usado, o arquivo será excluído e recriado.
IO
Permite operações de entrada e saída. O comando IO pode ser especificada somente para arquivos atribuídos a dispositivos de acesso direto.
O comando IO não é válido para arquivos sequenciais de linha.
EXTEND
Permite operações de saída que anexam ou criam um arquivo.
O comando EXTEND é permitido para arquivos de acesso sequencial somente se os novos dados forem escritos em seqüência crescente.
O comando EXTEND é permitida para arquivos que especificam a cláusula LINAGE.
file-name-1 , file-name-2 , file-name-3 , file-name-4
Designe um arquivo no qual a instrução OPEN deve operar. Se mais de um arquivo for especificado, os arquivos não precisam ter a mesma organização ou modo de acesso. Cada nome de arquivo deve ser definido em uma entrada FD na divisão de dados e não deve nomear um arquivo de classificação ou mesclagem. A entrada FD deve ser equivalente às informações fornecidas quando o arquivo foi definido.
REVERSED
O comando REVERSED é sintaxe verificada, mas não tem efeito sobre a execução do programa .
NO REWIND
O comando NO REWIND é sintaxe verificada, mas não tem efeito sobre a execução do programa .
Regras gerais:
- Se um arquivo aberto com o comando INPUT é um arquivo opcional que não está disponível, a instrução OPEN define o indicador de posição do arquivo para indicar que um arquivo de entrada opcional não está disponível.
- A execução de uma instrução OPEN INPUT ou OPEN IO define o indicador de posição do arquivo:
- Para arquivos indexados, para os caracteres com a posição ordinal mais baixa na seqüência de agrupamento associada ao arquivo.
- Para arquivos sequenciais e relativos, para 1.
- Quando o comando EXTEND é especificado, a instrução OPEN posiciona o arquivo imediatamente após o último registro gravado no arquivo. (O registro com o valor de chave de registro principal mais alto para arquivos indexados ou valor de chave relativo para arquivos relativos é considerado o último registro.) As instruções WRITE subsequentes adicionam registros como se o arquivo fosse aberto OUTPUT. O comando EXTEND pode ser especificado quando um arquivo está sendo criado; Ele também pode ser especificado para um arquivo que contém registros ou que tenha contido registros que foram excluídos.
- Quando o comando EXTEND não é especificado, a instrução OPEN posiciona o arquivo no início.
LABEL RECORDS
O processamento de LABEL não é suportado. Uma mensagem de aviso é emitida se qualquer um dos seguintes elementos de idioma são encontrados:
- LABEL RECORDS IS data-name
- USO ... APÓS ... PROCEDIMENTO DE RÓTULO
- IR PARA MAIS-ETIQUETAS
Notas:
- A execução bem-sucedida de uma instrução OPEN determina a disponibilidade do arquivo e resulta em que o arquivo está em modo aberto. Um arquivo é disponível se ele está fisicamente presente e reconhecido pelo sistema de controle de entrada e saída.
Tabela 1. Disponibilidade de um arquivo
Opened as | File is available | File is unavailable |
INPUT | Normal open | Open is unsuccessful. (file status 35) |
INPUT (optional file) | Normal open | Normal open; the first read causes the at end condition or the invalid key condition. (file status 05) |
I-O | Normal open | Open is unsuccessful. (file status 35) |
I-O (optional file) | Normal open | Open causes the file to be created. (file status 05) |
OUTPUT | Normal open; the file contains no records | Open causes the file to be created. |
EXTEND | Normal open | Open is unsuccessful. (file status 35) |
EXTEND (optional file) | Normal open | Open causes the file to be created. (file status 05) |
- A execução bem-sucedida da instrução OPEN coloca o arquivo em estado aberto e torna a área de registro associada disponível para o programa.
- A instrução OPEN não obter ou liberar o primeiro registro de dados.
- Você pode mover dados para ou da área de registro somente quando o arquivo está em estado aberto.
- Uma instrução OPEN deve ser executada com êxito antes da execução de qualquer uma das declarações de entrada-saída permitidas, exceto uma instrução SORT ou MERGE com a frase USING ou GIVING. Na tabela a seguir, um 'X' indica que a instrução especificada pode ser usada com o modo aberto dado no topo da coluna.
Tabela 2. Declarações admissíveis para arquivos sequenciais
Statement | Input open mode | Output open mode | I-O open mode | Extend open mode |
READ | X | X | ||
WRITE | X | X | ||
REWRITE | X |
Na tabela a seguir, um 'X' indica que a instrução especificada, usada no modo de acesso dado para essa linha, pode ser usada com o modo aberto dado no topo da coluna.
Tabela 3. Declarações admissíveis para arquivos indexados e relativos
File access mode | Statement | Input open mode | Output open mode | I-O open mode | Extend open mode |
Sequential | READ | X | X | ||
WRITE | X | X | |||
REWRITE | X | ||||
START | X | X | |||
DELETE | X | ||||
Random | READ | X | X | ||
WRITE | X | X | |||
REWRITE | X | ||||
START | |||||
DELETE | X | ||||
Dynamic | READ | X | X | ||
WRITE | X | X | |||
REWRITE | X | ||||
START | X | X | |||
DELETE | X |
Na tabela a seguir, um 'X' indica que a instrução especificada pode ser usada com o modo aberto dado no topo da coluna.
Tabela 4. Declarações admissíveis para arquivos de linha sequencial
Statement | Input open mode | Output open mode | I-O open mode | Extend open mode |
READ | X | |||
WRITE | X | X | ||
REWRITE |
- Um arquivo pode ser aberto para INPUT, OUTPUT, IO ou EXTEND (arquivos seqüenciais e de seqüência de linha apenas) no mesmo programa. Após a primeira execução da instrução OPEN para um determinado arquivo, cada subseqüente execução da instrução OPEN deve ser precedida por uma execução bem-sucedida da instrução de arquivo CLOSE sem a frase LOCK.
- Se a cláusula FILE STATUS for especificada na entrada de controle de arquivo, a chave de status de arquivo associada será atualizada quando a instrução OPEN for executada.
- Se uma instrução OPEN for emitida para um arquivo já no status aberto, o procedimento EXCEPTION / ERROR (se especificado) para este arquivo é executado.