COBOL - SORT/MERGE - Classificação interna



Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

COBOL - SORT/MERGE - Classificação interna

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