Sort Example: Multiple Sort Keys

* Sorting on 2 keys

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT IN-FILE
ASSIGN TO 'C:\PCOBWIN\ROGERS\UNSORTED.TXT'
ORGANIZATION IS LINE SEQUENTIAL.
SELECT OUT-FILE
ASSIGN TO 'C:\PCOBWIN\ROGERS\SORTED1A.TXT'
ORGANIZATION IS LINE SEQUENTIAL.
SELECT SORT-FILE
ASSIGN TO 'C:\PCOBWIN\ROGERS\WORK.TMP'.

DATA DIVISION.
FILE SECTION.
FD IN-FILE
DATA RECORD IS IN-RECORD.
01 IN-RECORD.
02 IN-ID PIC 9(5).
02 IN-LAST-NAME PIC X(15).
02 IN-FIRST-NAME PIC X(10).
02 IN-CITY PIC X(12).
02 IN-STATE PIC X(2).

FD OUT-FILE
DATA RECORD IS OUT-RECORD.
01 OUT-RECORD.
02 OUT-ID PIC 9(5).
02 OUT-LAST-NAME PIC X(15).
02 OUT-FIRST-NAME PIC X(10).
02 OUT-CITY PIC X(12).
02 OUT-STATE PIC X(2).

SD SORT-FILE
DATA RECORD IS SORT-RECORD.
01 SORT-RECORD.
02 SORT-ID PIC 9(5).
02 SORT-LAST-NAME PIC X(15).
02 SORT-FIRST-NAME PIC X(10).
02 SORT-CITY PIC X(12).
02 SORT-STATE PIC X(2).

WORKING-STORAGE SECTION.

PROCEDURE DIVISION.
MAINLINE.
SORT SORT-FILE
ON ASCENDING KEY SORT-STATE
ON ASCENDING KEY SORT-LAST-NAME
USING IN-FILE
GIVING OUT-FILE.
STOP RUN.

Input

91163Dube           Jason     Chicago     IL
61535King Adriane Cincinnati OH
45636Holtz Rachel Newport KY
10216Gehl Bryan Louisville KY
52158Flynn Ashley Muskegon MI
22277Theis Hanah Norwood OH
38551Solpa Mac Lansing MI
78496McCoy Amanda Brookfield WI
65720Read Sean Springfield BF
94000Waymel Bradley Kalamazoo MI
42966Vilella Reza Urbana IL
04928Streeter Farhad Toledo OH
69216Steele Karen Covington KY
56913Moreno Jan Dayton OH
34932Vogel Sandra Grand RapidsMI

Output (sorted by state then by name)

65720Read           Sean      Springfield BF
91163Dube Jason Chicago IL
42966Vilella Reza Urbana IL
10216Gehl Bryan Louisville KY
45636Holtz Rachel Newport KY
69216Steele Karen Covington KY
52158Flynn Ashley Muskegon MI
38551Solpa Mac Lansing MI
34932Vogel Sandra Grand RapidsMI
94000Waymel Bradley Kalamazoo MI
61535King Adriane Cincinnati OH
56913Moreno Jan Dayton OH
04928Streeter Farhad Toledo OH
22277Theis Hanah Norwood OH
78496McCoy Amanda Brookfield WI