COBOL - Classificação Interna


Anúncios


A classificação dos dados em um arquivo ou uma fusão de dois ou mais arquivos é uma necessidade comum em quase todos os aplicativos comerciais. A classificação é usada para organizar os registros em ordem crescente ou decrescente, de modo que processamento seqüencial pode ser realizada. Há duas técnicas que são utilizadas para classificar os arquivos em COBOL:

  • Classificação externa é usada para classificar arquivos por meio do TIPO utilitário em JCL. Temos discutido este assunto, o JCL capítulo. A partir de agora, o foco será na classificação interna.

  • Classificação interna é utilizada para classificar os arquivos com um programa em COBOL. TIPO verbo é utilizado para classificar um arquivo.

Tipo Verbo

Três arquivos são usados no processo de classificação EM COBOL:

  • Arquivo de entrada é o arquivo que temos de classificar em ordem crescente ou decrescente.

  • Trabalho arquivo é usado para manter os registros enquanto o tipo processo em curso. Arquivo de Entrada os registros são transferidos para o ficheiro de trabalho para o processo de triagem. Este arquivo deverá ser definida no File-Section em SD entrada.

  • Arquivo de saída é o arquivo que recebemos após processo de triagem. É o resultado final da classificação verbo.

Sintaxe

Sintaxe é a seguinte para classificar um arquivo:

SORT work-file ON ASCENDING KEY rec-key1
              [ON DESCENDING KEY rec-key2]
USING input-file GIVING output-file..

TIPO realiza as seguintes operações:

  • Abre o trabalho de arquivo no I-O modo, arquivo de entrada no modo de entrada e saída de arquivo no modo de saída.

  • Transfere os registros presentes no arquivo de entrada para o trabalho de arquivo.

  • Classifica o tipo de arquivo em ordem ascendente/descendente seqüência pelo rec-chave.

  • Transfere os ordenados registros do trabalho de arquivo para a saída de arquivo.

  • Fecha o arquivo de entrada e a saída de arquivo e elimina o trabalho de arquivo.

Exemplo

Nos itens a seguir exemplo entrada é o arquivo de entrada que deve ser classificada em ordem crescente:

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

ENVIRONMENT DIVISION.
   INPUT-OUTPUT SECTION.
   FILE-CONTROL.
      SELECT INPUT ASSIGN TO IN.
      SELECT OUTPUT ASSIGN TO OUT.
      SELECT WORK ASSIGN TO WRK.

DATA DIVISION.
   FILE SECTION.
   FD INPUT.
      01 INPUT-STUDENT.
         05 STUDENT-ID-I PIC 9(5).
         05 STUDENT-NAME-I PIC A(25).
   FD OUTPUT.
      01 OUTPUT-STUDENT.
         05 STUDENT-ID-O PIC 9(5).
         05 STUDENT-NAME-O PIC A(25).
   SD WORK.
      01 WORK-STUDENT.
         05 STUDENT-ID-W PIC 9(5).
         05 STUDENT-NAME-W PIC A(25).

PROCEDURE DIVISION.
   SORT WORK ON ASCENDING KEY STUDENT-ID-O
   USING INPUT GIVING OUTPUT.
   DISPLAY 'Sort Successful'.
STOP RUN.

JCL para executar o programa em COBOL:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO
//IN DD DSN=INPUT-FILE-NAME,DISP=SHR
//OUT DD DSN=OUTPUT-FILE-NAME,DISP=SHR
//WRK DD DSN=&&TEMP

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

Sort Successful

Fundir Verbo

Duas ou mais idêntica seqüenciados os ficheiros são combinados usando instrução Merge. Os arquivos utilizados no processo de mesclagem:

  • Arquivos de Entrada : Entrada-1, entrada-2
  • Ficheiro de trabalho
  • Arquivo de Saída

Sintaxe

Sintaxe é a seguinte para mesclar dois ou mais arquivos:

MERGE work-file ON ASCENDING KEY rec-key1
               [ON DESCENDING KEY rec-key2]

USING input-1, input-2 GIVING output-file.

Mesclar realiza as seguintes operações:

  • Abre o trabalho de arquivo no modo I-S, entradas e arquivos no modo de entrada e saída de arquivo no modo de saída.

  • Transfere os registros presentes no input-files para o trabalho de arquivo.

  • Classifica o tipo de arquivo em ordem ascendente/descendente seqüência pelo rec-chave.

  • Transfere os ordenados registros do trabalho de arquivo para a saída de arquivo.

  • Fecha o arquivo de entrada e a saída de arquivo e elimina o trabalho de arquivo.

Exemplo

No exemplo a seguir, A ENTRADA1 e entrada ENTRADA2 são os arquivos que estão a ser combinadas em ordem crescente:

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

ENVIRONMENT DIVISION.
   INPUT-OUTPUT SECTION.
   FILE-CONTROL.
      SELECT INPUT1 ASSIGN TO IN1.
      SELECT INPUT2 ASSIGN TO IN2.
      SELECT OUTPUT ASSIGN TO OUT.
      SELECT WORK ASSIGN TO WRK.

DATA DIVISION.
   FILE SECTION.
   FD INPUT1.
      01 INPUT1-STUDENT.
         05 STUDENT-ID-I1 PIC 9(5).
         05 STUDENT-NAME-I1 PIC A(25).
   FD INPUT2.
      01 INPUT2-STUDENT.
         05 STUDENT-ID-I2 PIC 9(5).
         05 STUDENT-NAME-I2 PIC A(25).
   FD OUTPUT.
      01 OUTPUT-STUDENT.
         05 STUDENT-ID-O PIC 9(5).
         05 STUDENT-NAME-O PIC A(25).
   SD WORK.
      01 WORK-STUDENT.
         05 STUDENT-ID-W PIC 9(5).
         05 STUDENT-NAME-W PIC A(25).

PROCEDURE DIVISION.
   MERGE WORK ON ASCENDING KEY STUDENT-ID-O
   USING INPUT1, INPUT2 GIVING OUTPUT.
   DISPLAY 'Merge Successful'.
STOP RUN.

JCL para executar o programa em COBOL:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO
//IN1 DD DSN=INPUT1-FILE-NAME,DISP=SHR
//IN2 DD DSN=INPUT2-FILE-NAME,DISP=SHR
//OUT DD DSN=OUTPUT-FILE-NAME,DISP=SHR
//WRK DD DSN=&&TEMP

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

Merge Successful


Advertisements