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:
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 é 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 é 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 é 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 é 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 é 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 é 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 é 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 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 é 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 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 é 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 é 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 é a seguinte para fechar um arquivo:
CLOSE file-name.