280 likes | 384 Views
SORTING. SORTING. ฟิลด์หลัก : รหัสสินค้า ฟิลด์รอง 1 : รหัสลูกค้า ฟิลด์รอง 2 : จำนวนสินค้า. ฟิลด์หลัก : รหัสลูกค้า ฟิลด์รอง 1 : รหัสสินค้า ฟิลด์รอง 2 : จำนวนสินค้า. SORT.
E N D
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 • เมื่อจบการทำงานที่ 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).
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
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".
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 IN-FILE2 ASSIGN TO "D:\COBOLMIX\DATA\STOCK2.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. 05 PIC XX. 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.