Thursday 21 November 2024

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.