SORTING
SORTING ฟิลด์หลัก : รหัสสินค้า ฟิลด์รอง 1 : รหัสลูกค้า ฟิลด์รอง 2 : จำนวนสินค้า
ฟิลด์หลัก : รหัสลูกค้า ฟิลด์รอง 1 : รหัสสินค้า ฟิลด์รอง 2 : จำนวนสินค้า
SORT ในการเรียงลำดับข้อมูลจำเป็นจะต้องมีแฟ้มชั่วคราวที่นำมาช่วยในการการเรียงลำดับ โดยแฟ้มนี้จะทำหน้าที่คล้ายกับเป็นกระดาษทด เพื่อช่วยในการเก็บเรคอร์ดข้อมูลในขณะที่กำลังเรียงลำดับ เมื่อการเรียงลำดับเสร็จเรียบร้อย แฟ้มนี้ก็จะถูกปิดไป และถูกลบออกจากอุปกรณ์เก็บข้อมูล
SORT cod price cod price
SORT code1 code2 price code1 code2 price
SORT SORT code1 code2 price
SORT SORT code1 code2 price
SORT การทำงานในคำสั่ง SORT จะเริ่มต้นที่ INPUT PROCEDURE เมื่อการเรียงลำดับเสร็จเรียบร้อย จะไปทำงานที่ OUTPUT PROCEDURE ทันที เมื่อจบการทำงานที่ OUTPUT PROCEDURE แล้ว ก็ถือว่าจบการทำงานของคำสั่ง SORT จากนั้นจึงจะไปทำงานที่คำสั่งถัดจาก SORT
INPUT PROCEDURE ทำหน้าที่เตรียมเรคอร์ดของข้อมูลที่ยังไม่เรียงลำดับ Unsorted Record Sorted Record IN-FILE INPUT PROCEDURE Sort process OUT-FILE SORT-FILE
บันทึกข้อมูลลงในแฟ้มชั่วคราว INPUT PROCEDURE ทำหน้าที่เตรียมข้อมูล ก่อนที่จะนำไปเรียงลำดับ ใน INPUT PROCEDURE ต้องประกอบด้วย RELEASE อย่างน้อยหนึ่งคำสั่ง
OUTPUT PROCEDURE OUTPUT PROCDURE ทำหน้าที่จัดการเรคคอร์ดของข้อมูลที่ผ่านการเรียงลำดับแล้ว ใน OUTPUT PROCEDURE ต้องประกอบด้วยคำสั่ง RETURN อย่างน้อย 1 คำสั่ง Unsorted Record Sorted Record IN-FILE Sort process OUTPUT PROCEDURE OUT-FILE SORT-FILE
อ่านข้อมูลจากแฟ้มชั่วคราว
ตัวอย่าง การเรียงลำดับข้อมูล โดยการอ่านข้อมูลจากแฟ้ม IN-FILE แล้วนำมาเรียงลำดับ โดยใช้ SORT-FILE เป็นแฟ้มชั่วคราวที่ช่วยในการเรียงลำดับ จากนั้นจึงทำการเรียงลำดับข้อมูล แล้วบันทึกข้อมูลที่เรียงลำดับแล้วลงในแฟ้ม OUT-FILE
FILE-CONTROL. SELECT IN-FILE ASSIGN TO "D:\COBOLMIX\DATA\STOCK.DAT". SELECT SORT-FILE ASSIGN TO DISK. SELECT OUT-FILE ASSIGN TO "D:\COBOLMIX\DATA\OUT.DAT". FD IN-FILE. 01 IN-REC. 05 ICODE PIC 99. 05 INAME PIC X(10). 05 IQUANT PIC 9(4). 05 IPRICE PIC 9(4)V99. 05 PIC XX. SD SORT-FILE. 01 SORT-REC. 05 SCODE PIC 99. 05 SNAME PIC X(10). 05 SQUANT PIC 9(4). 05 SPRICE PIC 9(4)V99. 05 PIC XX. FD OUT-FILE. 01 OUT-REC PIC X(24).
SORT SORT-FILE ON ASCENDING KEY SCODE USING IN-FILE GIVING OUT-FILE. FILE-CONTROL. SELECT IN-FILE ASSIGN TO "D:\COBOLMIX\DATA\STOCK.DAT". SELECT SORT-FILE ASSIGN TO DISK. SELECT OUT-FILE ASSIGN TO "D:\COBOLMIX\DATA\OUT.DAT". PROCEDURE DIVISION. SORT SORT-FILE ON ASCENDING KEY SCODE USING IN-FILE GIVING OUT-FILE. STOP RUN. IN-FILE Sort process OUT-FILE Unsorted Record Sorted Record SORT-FILE
ตัวอย่าง การเรียงลำดับข้อมูล โดยการอ่านข้อมูลจากแฟ้ม IN-FILE แล้วนำมาตรวจสอบข้อมูลก่อน ถ้าเป็นข้อมูลที่ต้องการ คือ ข้อมูลที่มีรหัสสินค้าอยู่ระหว่าง 01 ถึง 50 จึงจะนำไปบันทึกลงในแฟ้มSORT-FILE ซึ่งเป็นแฟ้มชั่วคราวที่ใช้ในการเรียงลำดับ จากนั้นจึงทำการเรียงลำดับข้อมูล แล้วบันทึกข้อมูลที่เรียงลำดับแล้วลงในแฟ้ม OUT-FILE
WORKING-STORAGE SECTION. 01 EOF-SW PIC X. 88 EOF VALUE "Y". FILE-CONTROL. SELECT IN-FILE ASSIGN TO "D:\COBOLMIX\DATA\STOCK.DAT". SELECT SORT-FILE ASSIGN TO DISK. SELECT OUT-FILE ASSIGN TO "D:\COBOLMIX\DATA\OUT.DAT". SD SORT-FILE. 01 SORT-REC. 05 SCODE PIC 99. 05 PIC X(22). FD IN-FILE. 01 IN-REC. 05 ICODE PIC 99. 05 INAME PIC X(10). 05 IQUANT PIC 9(4). 05 IPRICE PIC 9(4)V99. 05 PIC XX. FD OUT-FILE. 01 OUT-REC PIC X(24). WORKING-STORAGE SECTION. 01 EOF-SW PIC X. 88 EOF VALUE "Y".
SORT SORT-FILE ON ASCENDING KEY SCODE INPUT PROCEDURE PRE-SORT MAIN-PARA. SORT SORT-FILE ON ASCENDING KEY SCODE INPUT PROCEDURE PRE-SORT GIVING OUT-FILE. STOP RUN. Unsorted Record Sorted Record IN-FILE Select data Sort process OUT-FILE SORT-FILE
PRE-SORT. OPEN INPUT IN-FILE PERFORM READ-IN-FILE PERFORM CHECK-RECORD UNTIL EOF CLOSE IN-FILE. READ-IN-FILE. READ IN-FILE AT END MOVE "Y" TO EOF-SW END-READ. CHECK-RECORD. IF ICODE <= 50 AND > 0 RELEASE SORT-REC FROM IN-REC END-IF PERFORM READ-IN-FILE.
คำสั่ง MERGE คำสั่งนี้ใช้สำหรับนำแฟ้มที่ประกอบด้วยข้อมูลที่เรียงลำดับแล้วตั้งแต่ 2 แฟ้มขึ้นไป มารวมกันแล้วได้แฟ้มใหม่ แฟ้มใหม่ที่เกิดขึ้นนี้จะประกอบด้วยข้อมูลที่เรียงลำดับแล้วเช่นกัน คำสั่ง MERGE มีวิธีการใช้งานเหมือนกับคำสั่ง SORT 1 5 9 1 2 3 5 7 9 2 3 7
SELECT IN-FILE ASSIGN TO "D:\COBOLMIX\DATA\STOCK.DAT". SELECT SORT-FILE ASSIGN TO DISK. SELECT OUT-FILE ASSIGN TO "D:\COBOLMIX\DATA\OUT.DAT".
FD IN-FILE. 01 IN-REC. 05 ICODE PIC 99. 05 INAME PIC X(10). 05 IQUANT PIC 9(4). 05 IPRICE PIC 9(4)V99. 05 PIC XX. FD IN-FILE2. 01 IN-REC2. 05 ICODE2 PIC 99. 05 INAME2 PIC X(10). 05 IQUANT2 PIC 9(4). 05 IPRICE2 PIC 9(4)V99. SD MERGE-FILE. 01 MERGE-REC. 05 MCODE PIC 99. 05 MNAME PIC X(10). 05 MQUANT PIC 9(4). 05 MPRICE PIC 9(4)V99. 05 PIC XX. FD OUT-FILE. 01 OUT-REC PIC X(24). PROCEDURE DIVISION. MAIN-PARA. MERGE MERGE-FILE ON ASCENDING KEY MCODE USING IN-FILE IN-FILE2 GIVING OUT-FILE. STOP RUN.