COBOL - Manipulação de Arquivo Verbos


Advertisements

Manipulação de arquivo os verbos são usados para executar várias operações em arquivos. Seguem-se a manipulação de arquivo verbos:

  • Abra
  • Leia
  • Escrever
  • Reescrever
  • Excluir
  • Início
  • Fechar

Verbo Aberto

Open é o primeiro arquivo que deve ser executado. Se Open for bem sucedido, então apenas outras operações são possíveis em um arquivo. Só depois de abrir um arquivo, as variáveis da estrutura do arquivo estão disponíveis para o processamento. ARQUIVO variável de status é atualizado após cada operação de arquivo.

Sintaxe

OPEN "mode" file-name.

Aqui, nome de arquivo é string literal, que você vai usar para dar um nome ao seu arquivo. Um arquivo pode ser aberto com o seguint modos:

Mode Descrição
Input Modo de entrada é usada para arquivos existentes. Neste modo, só podemos ler o arquivo, não são permitidas outras operações no arquivo.
Output

Modo de saída é usado para inserir registros em arquivos. Se for um arquivo seqüencial é usado e o arquivo está segurando alguns registros, então os registros existentes serão eliminadas em primeiro lugar e, em seguida, novos registros será inserida no arquivo. Isso não vai acontecer assim, em caso de arquivos indexada ou em relação arquivo.

Ampliar Modo estendido é usado para anexar os registros de um arquivo seqüencial. Neste modo, os registros são inseridos no fim. Se modo de acesso ao arquivo é aleatória ou dinâmica, em seguida, modo de extensão não pode ser usado.
I-O Modo insumo é utilizado para ler e reescrever os registros de um arquivo.

Leia Verbo

Leia verbo é utilizado para ler os registros do arquivo. A função da leitura é para buscar os registros de um arquivo. Em cada leitura verbo, apenas um registro pode ser lida em a estrutura do arquivo. Para executar uma operação de leitura, abra o arquivo de entrada ou I-O modo. A cada leitura, o ponteiro do arquivo é incrementado e, por conseguinte, os sucessivos registros são lidos.

Sintaxe

Sintaxe é a seguinte para ler os registros quando o modo de acesso ao arquivo é sequencial:

READ file-name NEXT RECORD INTO ws-file-structure
   AT END DISPLAY 'End of File'
   NOT AT END DISPLAY 'Record Details:' ws-file-structure
END-READ.

Os parâmetros são os seguintes:

  • PRÓXIMO REGISTRO é opcional e é especificado quando o índice arquivo seqüencial está sendo lida em seqüência.

  • A cláusula é opcional. ws-file-estrutura é definida na Working-Storage seção para obter os valores de a LER.

  • NO FINAL condição se torna verdadeira quando o fim do arquivo é atingido.

ExampleThe exemplo a seguir lê um arquivo existente usando linha organização seqüencial. Este programa pode ser compilado e executado comExperimentá-lo opção Tente fazê-lo onde ele irá exibir todos os registros presentes no arquivo.

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

ENVIRONMENT DIVISION.
   INPUT-OUTPUT SECTION.
      FILE-CONTROL.
      SELECT STUDENT ASSIGN TO 'input.txt'
      ORGANIZATION IS LINE SEQUENTIAL.            

DATA DIVISION.
   FILE SECTION.
   FD STUDENT.
   01 STUDENT-FILE.
      05 STUDENT-ID PIC 9(5).
      05 NAME PIC A(25).

   WORKING-STORAGE SECTION.
   01 WS-STUDENT.
      05 WS-STUDENT-ID PIC 9(5).
      05 WS-NAME PIC A(25).
   01 WS-EOF PIC A(1). 

PROCEDURE DIVISION.
   OPEN INPUT STUDENT.
      PERFORM UNTIL WS-EOF='Y'
         READ STUDENT INTO WS-STUDENT
            AT END MOVE 'Y' TO WS-EOF
            NOT AT END DISPLAY WS-STUDENT
         END-READ
      END-PERFORM.
   CLOSE STUDENT.
STOP RUN.

Suponha que o arquivo de entrada os dados disponíveis na entrada.txtarquivo contém o seguinte:

20003 Mohtashim M.
20004 Nishant Malik
20005 Amitabh Bachhan

Quando você compilar e executar o programa acima referido, que produz o seguinte resultado:

20003 Mohtashim M.            
20004 Nishant Malik           
20005 Amitabh Bachhan 

Sintaxe

Sintaxe é a seguinte a ler o registro quando o modo de acesso ao arquivo é aleatório:

READ file-name RECORD INTO ws-file-structure
   KEY IS rec-key
   INVALID KEY DISPLAY 'Invalid Key'
   NOT INVALID KEY DISPLAY 'Record Details: ' ws-file-structure
END-READ.

Exemplo:o exemplo a seguir lê um arquivo existente usando índice organização. Este programa pode ser compilado e executado com JCL em Mainframes onde ele irá exibir todos os registros presentes no arquivo. Em Mainframes server não usar arquivos de texto; em vez disso, use arquivos PS.

Vamos supor que o arquivo presente em Mainframes têm o mesmo conteúdo como entrada.txt arquivo no exemplo acima.

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

ENVIRONMENT DIVISION.
   INPUT-OUTPUT SECTION.
   FILE-CONTROL.
   SELECT STUDENT ASSIGN TO IN1
      ORGANIZATION IS INDEXED
      ACCESS IS RANDOM
      RECORD KEY IS STUDENT-ID
      FILE STATUS IS FS.

DATA DIVISION.
   FILE SECTION.
   FD STUDENT.
      01 STUDENT-FILE.
      05 STUDENT-ID PIC 9(5).
      05 NAME PIC A(25).
     
   WORKING-STORAGE SECTION.
   01 WS-STUDENT.
      05 WS-STUDENT-ID PIC 9(5).
      05 WS-NAME PIC A(25).

PROCEDURE DIVISION.
   OPEN INPUT STUDENT.
      MOVE 20005 TO STUDENT-ID.
      
      READ STUDENT RECORD INTO WS-STUDENT-FILE
         KEY IS STUDENT-ID
         INVALID KEY DISPLAY 'Invalid Key'
         NOT INVALID KEY DISPLAY WS-STUDENT-FILE
      END-READ.
      
   CLOSE STUDENT.
STOP RUN.

JCL para executar o programa em COBOL:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO
//IN1 DD DSN=STUDENT-FILE-NAME,DISP=SHR

Quando você compilar e executar o programa acima referido, que produz o seguinte resultado:

20005 Amitabh Bachhan 

Escrever Verbo

Escrever verbo é utilizado para inserir os registros em um arquivo. Uma vez que o registro for escrito, ele não está mais disponível no registro buffer. Antes de inserir os registros no arquivo, passar valores para o registro buffer e, em seguida, executar escrever verbo.

Escrever pode ser usada comDE opção de gravar os registros diretamente a partir do armazenamento de trabalho variáveis. É uma cláusula opcional. Se o modo de acesso é sequencial, então a escrever um registro,s o arquivo deve ser aberto em modo de saída ou modo de extensão. Se o modo de acesso é aleatória ou dinâmica, em seguida, para gravar um registro, o arquivo deve ser aberto em modo de saída ou I-O modo.

Sintaxe

Sintaxe é a seguinte para ler o registro quando a organização do ficheiro é sequencial:

WRITE record-buffer [FROM ws-file-structure]
END-WRITE.

Sintaxe é a seguinte para ler um registro quando a organização do arquivo é indexado ou relativa:

WRITE record-buffer [FROM ws-file-structure]
   INVALID KEY DISPLAY 'Invalid Key'
   NOT INVALID KEY DISPLAY 'Record Inserted'
END-WRITE.

Exemplo:o exemplo a seguir mostra como inserir um novo registro em um novo arquivo quando a organização é sequencial.

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

ENVIRONMENT DIVISION.
   INPUT-OUTPUT SECTION.
   FILE-CONTROL.
   SELECT STUDENT ASSIGN TO OUT1
      ORGANIZATION IS SEQUENTIAL
      ACCESS IS SEQUENTIAL
      FILE STATUS IS FS.

DATA DIVISION.
   FILE SECTION.
   FD STUDENT
   01 STUDENT-FILE.
      05 STUDENT-ID PIC 9(5).
      05 NAME PIC A(25).
      05 CLASS PIC X(3).

   WORKING-STORAGE SECTION.
   01 WS-STUDENT.
      05 WS-STUDENT-ID PIC 9(5).
      05 WS-NAME PIC A(25).
      05 WS-CLASS PIC X(3).

PROCEDURE DIVISION.
   OPEN EXTEND STUDENT.
      MOVE 1000 TO STUDENT-ID.
      MOVE 'Tim' TO NAME.
      MOVE '10' TO CLASS.
      WRITE STUDENT-FILE
      END-WRITE.	
   CLOSE STUDENT.
STOP RUN.

JCL para executar o programa em COBOL:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO
//OUT1 DD DSN=OUTPUT-FILE-NAME,DISP=(NEW,CATALOG,DELETE)

Quando você compilar e executar o programa, ele irá adicionar um novo registro para o arquivo de saída.

1000 Tim         10

Reescrever Verbo

Reescrever verbo é utilizado para atualizar os registros. Arquivo deve ser aberto no I-O modo para reescrever as operações. Ela só pode ser usada depois de uma bem-sucedida operação de leitura. Reescrever verbo substitui o último registro lido.

Sintaxe

Sintaxe é a seguinte para ler o registro quando a organização do ficheiro é sequencial:

REWRITE record-buffer [FROM ws-file-structure]
END-REWRITE.

Sintaxe é a seguinte para ler um registro quando a organização do arquivo é indexado ou relativa:

REWRITE record-buffer [FROM ws-file-structure]
   INVALID KEY DISPLAY 'Invalid Key'
   NOT INVALID KEY DISPLAY 'Record Updated'
END-REWRITE.

Exemplo:o exemplo a seguir mostra como atualizar um registro existente que temos inserido no passo anterior:

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

ENVIRONMENT DIVISION.
   INPUT-OUTPUT SECTION.
   FILE-CONTROL.
   SELECT STUDENT ASSIGN TO IN1
      ORGANIZATION IS INDEXED
      ACCESS IS RANDOM
      RECORD KEY IS STUDENT-ID
      FILE STATUS IS FS.

DATA DIVISION.
   FILE SECTION.
   FD STUDENT
   01 STUDENT-FILE.
      05 STUDENT-ID PIC 9(4).
      05 NAME PIC A(12).
      05 CLASS PIC X(3).
      
   WORKING-STORAGE SECTION.
   01 WS-STUDENT.
      05 WS-STUDENT-ID PIC 9(5).
      05 WS-NAME PIC A(25).
      05 WS-CLASS PIC X(3).

PROCEDURE DIVISION.
   OPEN I-O STUDENT.
   MOVE '1000' TO STUDENT-ID.
  
   READ STUDENT
      KEY IS STUDENT-ID
      INVALID KEY DISPLAY ‘KEY IS NOT EXISTING’
   END-READ.
  
   MOVE 'Tim Dumais' TO NAME.
   REWRITE STUDENT-FILE
   END-REWRITE.
   CLOSE STUDENT.
STOP RUN.

JCL para executar o programa em COBOL:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO
//IN1 DD DSN=OUTPUT-FILE-NAME,DISP=SHR

Quando você compilar e executar o programa, ele irá atualizar o registro:

1000 Tim Dumais  10

Excluir Verbo

Excluir verbo só pode ser realizada em arquivos indexados e relativa. O arquivo deve ser aberto no I-O modo. Em arquivo seqüencial organização, os registros não podem ser excluídos. O registro última leitura da instrução Read é eliminado em caso de modo de acesso seqüencial. Em modo de acesso aleatório, especificar a chave de registro e, em seguida, execute a operação de exclusão.

Sintaxe

Sintaxe é a seguinte para excluir um registro:

DELETE file-name RECORD
   INVALID KEY DISPLAY 'Invalid Key'
   NOT INVALID KEY DISPLAY 'Record Deleted'
END-DELETE.

Exemplo para excluir um registro existente.

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

ENVIRONMENT DIVISION.
   INPUT-OUTPUT SECTION.
   FILE-CONTROL.
   SELECT STUDENT ASSIGN TO OUT1
      ORGANIZATION IS INDEXED
      ACCESS IS RANDOM
      RECORD KEY IS STUDENT-ID
      FILE STATUS IS FS.

DATA DIVISION.
   FILE SECTION.
   FD STUDENT
   01 STUDENT-FILE.
      05 STUDENT-ID PIC 9(4).
      05 NAME PIC A(12).
      05 CLASS PIC X(3).
   WORKING-STORAGE SECTION.
   01 WS-STUDENT.
      05 WS-STUDENT-ID PIC 9(5).
      05 WS-NAME PIC A(25).
      05 WS-CLASS PIC X(3).

PROCEDURE DIVISION.
   OPEN I-O STUDENT.
   MOVE '1000' TO STUDENT-ID.
   
   DELETE STUDENT RECORD
      INVALID KEY DISPLAY 'Invalid Key'
      NOT INVALID KEY DISPLAY 'Record Deleted'
   END-DELETE.
   
   CLOSE STUDENT.
STOP RUN.

JCL para executar o programa em COBOL:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO
//OUT1 DD DSN=OUTPUT-FILE-NAME,DISP=SHR

Quando você compilar e executar o programa acima referido, que produz o seguinte resultado:

Record Deleted

Início Verbo

Início verbo só pode ser realizada em arquivos indexados e relativa. Ela é usada para colocar o ponteiro de arquivo em um registro específico. O modo de acesso deve ser sequencial ou dinâmico. Arquivo deve ser aberto no I-O ou modo de entrada.

Sintaxe

Sintaxe é a seguinte para colocar o ponteiro a um registro específico.

START file-name KEY IS [=, >, <, NOT, <= or >=] rec-key
   INVALID KEY DISPLAY 'Invalid Key'
   NOT INVALID KEY DISPLAY 'File Pointer Updated'
END-START.

Fechar Verbo

Fechar verbo é utilizado para fechar um arquivo. Depois de realizar operação de fechar as variáveis da estrutura do arquivo não será disponível para processamento. A relação entre programa e arquivo é perdido.

Sintaxe

Sintaxe é a seguinte para fechar um arquivo:

CLOSE file-name.
Advertisements