Sort Example: INPUT PROCEDURE with inline PERFORM


       IDENTIFICATION DIVISION.
       PROGRAM-ID.    SORT-2A.
       AUTHOR.        BILL ROGERS.

      * In this example we use the INPUT PROCEDURE option instead of
      * USING because we want to verify that the state code in the
      * input record is valid.

       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\SORTED2A.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).
             88 VALID-STATE-CODE                      VALUES 'AK'
                'AL' 'AR' 'AZ' 'CA' 'CO' 'CT' 'DC' 'DE' 'FL' 'GA'
                'HI' 'IA' 'ID' 'IL' 'IN' 'KS' 'KY' 'LA' 'MA' 'MD'
                'ME' 'MI' 'MN' 'MO' 'MS' 'MT' 'NC' 'ND' 'NE' 'NH'
                'NJ' 'NM' 'NV' 'NY' 'OH' 'OK' 'OR' 'PA' 'RI' 'SC'
                'SD' 'TN' 'TX' 'UT' 'VA' 'VT' 'WA' 'WI' 'WV' 'WY'.

       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.

       01 EOF-SWITCH                PIC X             VALUE 'N'.
          88 NO-MORE-INPUT-RECORDS                    VALUE 'Y'.

       PROCEDURE DIVISION.
       MAIN-LOGIC.
           SORT SORT-FILE
                ON ASCENDING KEY SORT-LAST-NAME
                INPUT PROCEDURE IS INPUT-LOGIC
                GIVING OUT-FILE.
           STOP RUN.

       INPUT-LOGIC.
           OPEN INPUT IN-FILE.
           PERFORM UNTIL NO-MORE-INPUT-RECORDS
               READ IN-FILE
                    AT END
                       MOVE 'Y' TO EOF-SWITCH
                    NOT AT END
                       IF VALID-STATE-CODE
                          MOVE IN-RECORD TO SORT-RECORD
                          RELEASE SORT-RECORD
                       END-IF
               END-READ
           END-PERFORM.
           CLOSE IN-FILE.

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 name with invalid state code omitted)

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

Cobol Home