COBOL - Sortir Internal
Pengurutan data dalam satu file atau penggabungan dua atau lebih file adalah kebutuhan umum di hampir semua aplikasi berorientasi bisnis. Sorting digunakan untuk menyusun record baik dalam urutan ascending maupun descending, sehingga pemrosesan sekuensial dapat dilakukan. Ada dua teknik yang digunakan untuk menyortir file di COBOL -
External sortdigunakan untuk mengurutkan file dengan menggunakan utilitas SORT di JCL. Kami telah membahas ini di bab JCL. Untuk saat ini, kami akan fokus pada jenis internal.
Internal sort digunakan untuk mengurutkan file dalam program COBOL. SORT kata kerja digunakan untuk mengurutkan file.
Sortir Kata Kerja
Tiga file digunakan dalam proses pengurutan di COBOL -
Input file adalah file yang harus kita sortir baik dalam urutan naik maupun turun.
Work filedigunakan untuk menyimpan catatan saat proses pengurutan sedang berlangsung. Catatan file masukan dipindahkan ke file kerja untuk proses penyortiran. File ini harus didefinisikan di File-Section di bawah entri SD.
Output fileadalah file yang kita dapatkan setelah proses penyortiran. Ini adalah hasil akhir dari kata kerja Sort.
Sintaksis
Berikut ini adalah sintaks untuk mengurutkan file -
SORT work-file ON ASCENDING KEY rec-key1
[ON DESCENDING KEY rec-key2]
USING input-file GIVING output-file.
SORT melakukan operasi berikut -
Membuka file kerja dalam mode IO, file input dalam mode INPUT dan file output dalam mode OUTPUT.
Mentransfer catatan yang ada di file input ke file kerja.
Mengurutkan SORT-FILE dalam urutan naik / turun dengan kunci rek.
Mentransfer catatan yang diurutkan dari file kerja ke file keluaran.
Menutup file input dan file output dan menghapus file kerja.
Example
Dalam contoh berikut, INPUT adalah file input yang perlu diurutkan dalam urutan menaik -
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 untuk menjalankan program COBOL di atas -
//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
Ketika Anda mengkompilasi dan menjalankan program di atas, ini menghasilkan hasil sebagai berikut -
Sort Successful
Gabungkan Kata Kerja
Dua atau lebih file berurutan identik digabungkan menggunakan pernyataan Merge. File yang digunakan dalam proses penggabungan -
- File Input - Input-1, Input-2
- File Kerja
- Berkas keluaran
Sintaksis
Berikut ini adalah sintaks untuk menggabungkan dua atau lebih file -
MERGE work-file ON ASCENDING KEY rec-key1
[ON DESCENDING KEY rec-key2]
USING input-1, input-2 GIVING output-file.
Merge melakukan operasi berikut -
Membuka file kerja dalam mode IO, file input dalam mode INPUT dan file output dalam mode OUTPUT.
Mentransfer catatan yang ada di file input ke file kerja.
Mengurutkan SORT-FILE dalam urutan naik / turun dengan kunci rek.
Mentransfer catatan yang diurutkan dari file kerja ke file keluaran.
Menutup file input dan file output dan menghapus file kerja.
Example
Dalam contoh berikut, INPUT1 dan INPUT2 adalah file input yang akan digabungkan dalam urutan menaik -
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 untuk menjalankan program COBOL di atas -
//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
Ketika Anda mengkompilasi dan menjalankan program di atas, ini menghasilkan hasil sebagai berikut -
Merge Successful