Menu principal                 [Fechar]


Linguagem de programação COBOL - OPEN


Volta a página anterior

Volta ao Menu Principal

Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF.

OPEN
Esta instrução acessa os arquivos em um programa e indica quais são os de entrada e saída.
Permitir o processamento de arquivos. Realiza também verificações e ou gravação de labels e outras operações de entrada/saída.

  • INPUT: somente para leitura
  • OUTPUT: somente para criação+gravação (se já existir o arquivo no disco, irá destruir os dados do mesmo, recriando-o)
  • I-O (Input-Output): permite leitura e gravação
  • EXTEND: permite estender um arquivo, ou seja, acrescentar registros em um arquivo já existente (apenas em arquivos do tipo SEQUENTIAL E LINE SEQUENTIAL)

O seu formato geral é:

Sintaxe do comando OPEN


Outra sintaxe do comando OPEN

Outra sintaxe do comando OPEN



Opções do comando OPEN e comandos de E/S permitidos
Organização do arquivo e
modo de abertura
INDEXED SEQUENTIAL
Modo de acesso Verbo INP OUT I-O EXT INP OUT I-O EXT
SEQUENTIAL OPEN P P P P P P P P
READ P N P N P N P N
WRITE N P N P N P N P
REWRITE N N P N N N P N
START P N P N N N N N
DELETE N N P N N N N N
RANDOM OPEN P P P * * * * *
READ P N P * * * * *
WRITE N P P * * * * *
REWRITE N N P * * * * *
START N N N * * * * *
DELETE N N P * * * * *
DYNAMIC OPEN P P P * * * * *
READ P N P * * * * *
WRITE N P P * * * * *
REWRITE N N P * * * * *
START P N P * * * * *
DELETE N N P * * * * *

  • P - Indica qual o verbo de INPUT/OUTPUT é permitido para a combinação de organização do arquivo com o modo de acesso e a maneira de abertura.
  • N - Indica qual o verbo de INPUT/OUTPUT não é permitido para a combinação de organização do arquivo com o modo de acesso e a maneira de abertura.
  • * - Indica que não existe a combinação de organização do arquivo com o modo de acesso e a maneira de abertura.




Observações:

 Mais de um arquivo pode ser aberto ao mesmo tempo com um único comando OPEN.

 Um mesmo arquivo pode ser aberto mais de uma vez dentro de um programa, mas entre um OPEN e outro deve ser  emitido um comando CLOSE.

 O comando OPEN não torna o primeiro reistro de um arquivo disponível.

 A opção REVERSED faz com que haja um posicionamento no fim do arquivo, permitindo que os registros sejam lidos do  último para o primeiro.
 Pode ser usada somente com arquivos de organização Record Sequential (ORGANIZATION IS RECORD SEQUENTIAL).

 O modo INPUT torna o arquivo disponível para leiura.

 O modo OUTPUT torna o arquivo disponível para gravação. Regrava o arquivo já existente.

 O modo I-O torna o arquivo dispon~vel para leitura, gravação, exclusão e regravação.

 O modo EXTEND permite adição de movos registros após o último registro lógico do arquivo. Se o arquivo não existir o  mesmo será criado.

 Na execução do omando OPEN o campo associado à cláusula FILE STATUS é atualizado.

 Pode ser conveniente, após o OPEN, verificar, através do campo associado ao FILE STATUS, a existênciado arquivo.


Exemplo


      *-----------------------------------------------------------------
       INPUT-OUTPUT SECTION.
      *-----------------------------------------------------------------
       FILE-CONTROL.

           SELECT ARQENT ASSIGN TO ARQENT
                  FILE STATUS IS WS-FS-ARQENT.

           SELECT ARQSAI ASSIGN TO ARQSAI
                  FILE STATUS IS WS-FS-ARQSAI.
		
      *-----------------------------------------------------------------
       WORKING-STORAGE SECTION.
      *-----------------------------------------------------------------

       01  WS-AREA-AUXILIAR.
           05  WS-FS-ARQENT              PIC X(002)  VALUE SPACES.
           05  WS-FS-ARQSAI              PIC X(002)  VALUE SPACES.
           05  WS-PROCESSO               PIC X(070)  VALUE SPACES.
           05  WS-MENSAGEM               PIC X(070)  VALUE SPACES. 
		
      *-----------------------------------------------------------------
       PROCEDURE DIVISION.
      *-----------------------------------------------------------------

           PERFORM P100-ROTINA-INICIAL   THRU P100-FIM.
           PERFORM P200-ROTINA-PRINCIPAL THRU P200-FIM.
           PERFORM P950-ROTINA-FINAL     THRU P950-FIM.
           GOBACK.

      *-----------------------------------------------------------------
       P100-ROTINA-INICIAL.
      *-----------------------------------------------------------------

           MOVE 'P100-ROTINA-INICIAL' TO  WS-PROCESSO.

           OPEN INPUT ARQENT.
           IF WS-FS-ARQENT NOT EQUAL '00'
              MOVE SPACES TO WS-MENSAGEM
              MOVE 'ERRO ABERTURA ARQUIVO DE ENTRADA' TO WS-MENSAGEM
              PERFORM P900-ROTINA-ERRO THRU P900-FIM
           END-IF.
           
      * Também poderia ser codificado assim:

           IF WS-FS-ARQENT NOT EQUAL '00'
              MOVE SPACES                 TO WS-MENSAGEM
              STRING 'ERRO ABERTURA ARQUIVO ARQENT FILE STATUS: '
                     WS-FS-ARQENT
                     DELIMITED BY SIZE  INTO WS-MENSAGEM
              END-STRING
              PERFORM P9000-ROTINA-ERRO THRU P9000-FIM
           END-IF. 

           OPEN OUTPUT ARQSAI.
           IF WS-FS-ARQSAI NOT EQUAL '00'
              MOVE SPACES TO WS-MENSAGEM
              MOVE 'ERRO ABERTURA ARQUIVO DE SAIDA  ' TO WS-MENSAGEM
              PERFORM P900-ROTINA-ERRO THRU P900-FIM
           END-IF.
		
      * Também poderia ser codificado assim:

           IF WS-FS-ARQSAI NOT EQUAL '00'
              MOVE SPACES                 TO WS-MENSAGEM
              STRING 'ERRO ABERTURA ARQUIVO ARQSAI FILE STATUS: '
                     WS-FS-ARQSAI
                     DELIMITED BY SIZE  INTO WS-MENSAGEM
              END-STRING
              PERFORM P9000-ROTINA-ERRO THRU P9000-FIM
           END-IF.

        P100-FIM.
            EXIT.	
		
      *-----------------------------------------------------------------
       P900-ROTINA-ERRO.
      *-----------------------------------------------------------------

           DISPLAY 'PROGRAMA XXXXXXXX'
           DISPLAY 'PARAGRAFO .......  - ' WS-PROCESSO
           DISPLAY 'MENSAGEM .......   - ' WS-MENSAGEM
           DISPLAY 'FILE STATUS ARQENT - ' WS-FS-ARQENT
           DISPLAY 'FILE STATUS ARQSAI - ' WS-FS-ARQSAI
           MOVE 99 TO RETURN-CODE
           GOBACK.

       P900-FIM.
           EXIT. 
		
      *-------------------------------------------------------------
       P9000-ROTINA-ERRO.
      *-------------------------------------------------------------

           DISPLAY '*-----------------------------------------------'
           DISPLAY '* ERRO FILE STATUS FIM DE PROCESSAMENTO XXXXXXXX'
           DISPLAY '*-----------------------------------------------'
           DISPLAY '*                                               '
           DISPLAY 'WS-MENSAGEM '
           DISPLAY '*-----------------------------------------------'
           MOVE 99 TO RETURN-CODE
           GOBACK.

       P9000-FIM.
           EXIT.

          


Volta para o início da página

Volta a página anterior

Volta ao Menu Principal