A classificação de dados em um arquivo ou a fusão de dois ou mais arquivos é uma necessidade comum em quase todos os aplicativos de negócios.
A classificação é usada para organizar os registros em ordem crescente ou decrescente, para que o processamento seqüencial possa ser executado.
Existem duas técnicas usadas para classificar arquivos no COBOL:
A classificação externa é usada para classificar arquivos usando o utilitário SORT na JCL.
Discutimos isso no capítulo da JCL.
A partir de agora, vamos nos concentrar na classificação interna.
A classificação interna é usada para classificar arquivos em um programa COBOL.
O verbo SORT é usado para classificar um arquivo.
SORT
Três arquivos são usados no processo de classificação em COBOL -
Arquivo de entrada é o arquivo que devemos ordenar em ordem crescente ou decrescente.
O arquivo de trabalho é usado para manter registros enquanto o processo de classificação está em andamento.
Os registros do arquivo de entrada são transferidos para o arquivo de trabalho para o processo de classificação.
Este arquivo deve ser definido na seção Arquivo na entrada SD.
Arquivo de saída é o arquivo que obtemos após o processo de classificação.
É a saída final do verbo Sort.
Sintaxe
A seguir está a sintaxe para classificar um arquivo:
SORT TRABALHO-file ON ASCENDING KEY rec-key1
[ON DESCENDING KEY rec-key2]
USING ENTRADA-file GIVING SAIDA-file.
O SORT realiza as seguintes operações:
Abre o arquivo de trabalho no modo IO, o arquivo de entrada no modo INPUT e o arquivo de saída no modo OUTPUT.
Transfere os registros presentes no arquivo de entrada para o arquivo de trabalho.
Classifica o ARQUIVO DE CLASSIFICAÇÃO na sequência ascendente / descendente por rec-key.
Transfere os registros classificados do arquivo de trabalho para o arquivo de saída.
Fecha o arquivo de entrada e o arquivo de saída e exclui o arquivo de trabalho.
Exemplo:
No exemplo a seguir, ENTRADA é o arquivo de entrada que precisa ser classificado em ordem crescente -
IDENTIFICATION DIVISION.
PROGRAM-ID. CADSORT.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT ENTRADA ASSIGN TO IN.
SELECT SAIDA ASSIGN TO OUT.
SELECT TRABALHO ASSIGN TO WRK.
DATA DIVISION.
FILE SECTION.
FD ENTRADA.
01 ENTRADA-STUDENT.
05 STUDENT-ID-I PIC 9(05).
05 STUDENT-NAME-I PIC A(25).
FD SAIDA.
01 SAIDA-STUDENT.
05 STUDENT-ID-O PIC 9(05).
05 STUDENT-NAME-O PIC A(25).
SD TRABALHO.
01 TRABALHO-STUDENT.
05 STUDENT-ID-W PIC 9(05).
05 STUDENT-NAME-W PIC A(25).
PROCEDURE DIVISION.
SORT TRABALHO ON ASCENDING KEY STUDENT-ID-O
USING ENTRADA GIVING SAIDA.
DISPLAY 'Sort Successful'.
STOP RUN.
JCL para executar o programa COBOL acima:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM=CADSORT
//IN DD DSN=ENTRADA-FILE-NAME,DISP=SHR
//OUT DD DSN=SAIDA-FILE-NAME,DISP=SHR
//WRK DD DSN=&&TEMP
Quando você compila e executa o programa acima, ele produz o seguinte resultado -
Sort Successful
MERGE
Dois ou mais arquivos seqüenciados de forma idêntica são combinados usando a instrução Merge. Arquivos usados no processo de mesclagem -
- Arquivos de entrada - Entrada-1, Entrada-2
- Arquivo de Trabalho
- Arquivo de saída
Sintaxe:
A seguir está a sintaxe para mesclar dois ou mais arquivos -
MERGE TRABALHO-file ON ASCENDING KEY rec-key1
[ON DESCENDING KEY rec-key2]
USING ENTRADA-1, ENTRADA-2 GIVING SAIDA-file.
Mesclar (MERGE) executa as seguintes operações:
Abre o arquivo de trabalho no modo IO, os arquivos de entrada no modo INPUT e o arquivo de saída no modo OUTPUT.
Transfere os registros presentes nos arquivos de entrada para o arquivo de trabalho.
Classifica o SORT-FILE na seqüência ascendente / descendente por rec-key.
Transfere os registros classificados do arquivo de trabalho para o arquivo de saída.
Fecha o arquivo de entrada e o arquivo de saída e exclui o arquivo de trabalho.
Exemplo:
No exemplo a seguir, ENTRADA1 e ENTRADA2 são os arquivos de entrada que devem ser mesclados em ordem crescente -
IDENTIFICATION DIVISION.
PROGRAM-ID. CADSORT.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT ENTRADA1 ASSIGN TO IN1.
SELECT ENTRADA2 ASSIGN TO IN2.
SELECT SAIDA ASSIGN TO OUT.
SELECT TRABALHO ASSIGN TO WRK.
DATA DIVISION.
FILE SECTION.
FD ENTRADA1.
01 ENTRADA1-STUDENT.
05 STUDENT-ID-I1 PIC 9(05).
05 STUDENT-NAME-I1 PIC A(25).
FD ENTRADA2.
01 ENTRADA2-STUDENT.
05 STUDENT-ID-I2 PIC 9(05).
05 STUDENT-NAME-I2 PIC A(25).
FD SAIDA.
01 SAIDA-STUDENT.
05 STUDENT-ID-O PIC 9(05).
05 STUDENT-NAME-O PIC A(25).
SD TRABALHO.
01 TRABALHO-STUDENT.
05 STUDENT-ID-W PIC 9(05).
05 STUDENT-NAME-W PIC A(25).
PROCEDURE DIVISION.
MERGE TRABALHO ON ASCENDING KEY STUDENT-ID-O
USING ENTRADA1, ENTRADA2 GIVING SAIDA.
DISPLAY 'Merge Successful'.
STOP RUN.
JCL para executar o programa COBOL acima:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM=CADSORT
//IN1 DD DSN=ENTRADA1-FILE-NAME,DISP=SHR
//IN2 DD DSN=ENTRADA2-FILE-NAME,DISP=SHR
//OUT DD DSN=SAIDA-FILE-NAME,DISP=SHR
//WRK DD DSN=&&TEMP
Quando você compila e executa o programa acima, ele produz o seguinte resultado:
Merge Successful
© Copyright it-brain.online - 2020
|