COBOL - Interne Sortieren



Sortierung der Daten in einer Datei oder Zusammenführung von zwei oder mehr Dateien ist eine häufige Notwendigkeit in nahezu allen Business-orientierte Anwendungen. Die Sortierung erfolgt für die Organisation Aufzeichnungen entweder in aufsteigender oder absteigender Reihenfolge, so dass sequentielle Verarbeitung durchgeführt werden können verwendet. Es gibt zwei Techniken, die zum Sortieren von Dateien in COBOL verwendet:

  • Externe sortieren wird verwendet, um Dateien mit dem Dienstprogramm SORT im JCL sortieren. Wir haben dies in der JCL Kapitel diskutiert. Ab sofort werden wir uns auf interne Sort zu konzentrieren.

  • Interne sortieren wird verwendet, um Dateien mit in einem COBOL-Programm zu sortieren. SORT Verb wird verwendet, um eine Datei zu sortieren.

Sortieren Verb

Drei Dateien werden in den Prozess Sortieren in COBOL verwendet:

  • Eingabedatei ist die Datei, die wir haben, um entweder in aufsteigender oder absteigender Reihenfolge sortiert werden.

  • Arbeitsdatei wird verwendet, um Aufzeichnungen zu halten, während die Sortierprozess ist im Gange. Eingabedatei Datensätze werden in die Arbeitsdatei für den Sortierprozess übergeben. Diese Datei sollte in der Datei-Abschnitt unter SD-Eintrag definiert werden.

  • Ausgabedatei ist die Datei, die wir nach der Sortierung zu erhalten. Es ist die letzte Ausgabe des Verbs sortieren.

Syntax

Es folgt die Syntax, um eine Datei zu sortieren:

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

SORT führt folgende Operationen aus:

  • Öffnet Arbeitsdatei in der IO-Modus, Input-Datei in den Eingabemodus und Ausgabedatei im Ausgabemodus.

  • Übertragungen Aufzeichnungen vorhanden die in der Eingabedatei für die Arbeit-Datei.

  • Sortiert die SORT-FILE in auf- / absteigender Reihenfolge von rec-Schlüssel.

  • Übertragungen die sortierten Datensätze aus der Arbeitsdatei auf die Ausgabedatei.

  • Schließt die Eingabedatei und die Ausgabedatei und der Arbeitsdatei gelöscht.

Beispiel

Im folgenden Beispiel unten INPUT ist die Eingabedatei, die in aufsteigender Reihenfolge sortiert werden soll:

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 oben COBOL-Programm zu ausführen:

//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

Wenn Sie kompilieren und führen Sie das obige Programm, es produziert das folgende Ergebnis:

Sort Successful

Verschmelzen Verb

Zwei oder mehr identisch sequenzierten Dateien werden mit Merge-Anweisung kombiniert. Dateien in der Zusammenführung verwendet:

  • Eingabedateien: Eingang-1, Eingang-2
  • Arbeitsdatei
  • Ausgabedatei

Syntax

Es folgt die Syntax, zwei oder mehrere Dateien zusammenführen:

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

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

verschmelzen führt folgende Operationen aus:

  • Öffnet die Arbeitsdatei in den IO-Modus, Input-Dateien in den Eingabemodus und Ausgabedatei im Ausgabemodus.

  • Überträgt die Aufzeichnungen in den Input-Dateien auf die Arbeitsdatei vorhanden.

  • Sortiert die SORT-FILE in auf- / absteigender Reihenfolge von rec-Schlüssel.

  • Überträgt die sortierten Datensätze aus der Arbeitsdatei auf die Ausgabedatei.

  • Schließt die Eingabedatei und die Ausgabedatei und der Arbeitsdatei gelöscht.

Beispiel

Im folgenden Beispiel, INPUT1 und INPUT2 eingespeist werden die Dateien, die in aufsteigender Reihenfolge zusammengeführt werden, sind:

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 oben COBOL-Programm zu ausführen:

//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

Wenn Sie kompilieren und führen Sie das obige Programm, es produziert das folgende Ergebnis:

Merge Successful
Advertisements