300 likes | 504 Views
Control Breaks. Detail or Transaction Reports. Detail or transaction reports are those that include one or more lines of output for each input record read. The following are examples:
E N D
Detail or Transaction Reports • Detail or transaction reports are those that include one or more lines of output for each input record read. The following are examples: • Customer bills generated from a master accounts receivable file would be an example of a transaction or detail report. • Payroll checks generated from a master payroll file would be a detail report. • A listing of each part number stocked by a company would be a detail report.
Detail or Transaction Reports • Transaction or detail output is produced when information for each input record is required. • Because detail reports generate output for each input record read, they can take a relatively long time to produce. • Printing 300,000 checks from a file of 300,000 records, for example, could take several hours.
Exception Reports A listing of those clients with overdue balances is an example of an exception report. • An exception report is any printout of individual records that meet (or fail to meet) certain criteria. Other examples of exception reports are: • A list of employees who are 65 years old or older. • A list of part numbers in stock with a quantity on hand below some minimum value.
Summary Reports As the name suggests, a summary or group report summarizes rather than itemizes. • Often summaries or totals can provide more comprehensive and meaningful information for the user than a detail or exception report.
Figure 15.1 Transaction File. (The sales amount shows ASCII rather than EBCDIC Characters Acct Salesperson Sales Comm Location RegionNum Amount Pct 000069 BENWAY 023q 10 CHICAGO MIDWEST000100 HUMMER 010w 05 CHICAGO MIDWEST000101 CLARK 1500 10 TRENTON NORTHEAST000104 CLARK 0500 03 TRENTON NORTHEAST100000 JOHNSON 030s 06 ST. PETERSBURG SOUTHEAST130101 CLARK 3200 20 TRENTON NORTHEAST203000 HAAS 8900 05 ST. LOUIS MIDWEST248545 JOHNSON 0345 14 ST. PETERSBURG SOUTHEAST277333 HAAS 009x 08 ST. LOUIS MIDWEST400000 JOHNSON 070y 08 ST. PETERSBURG SOUTHEAST444333 ADAMS 100v 01 NEW YORK NORTHEAST444444 FEGEN 0100 02 ST. PETERSBURG SOUTHEAST475365 HAAS 0333 05 ST. LOUIS MIDWEST476236 FEGEN 037v 03 ST. PETERSBURG NORTHEAST476530 BENWAY 023u 05 CHICAGO MIDWEST555555 FEGEN 0304 05 ST. PETERSBURG NORTHEAST555666 ADAMS 2003 20 NEW YORK NORTHEAST576235 CLARK 0100 03 TRENTON NORTHEAST583645 KARLSTROM 0145 04 BALTIMORE NORTHEAST649356 HUMMER 0345 05 CHICAGO MIDWEST694446 HUMMER 0904 10 CHICAGO MIDWEST700039 MARCUS 0932 10 BALTIMORE NORTHEAST750020 MARCUS 0305 05 BALTIMORE NORTHEAST800396 KARLSTROM 3030 09 BALTIMORE NORTHEAST878787 JOHNSON 1235 12 ST. PETERSBURG SOURHEAST987654 ADAMS 2005 10 NEW YORK NORTHEAST988888 BENWAY 0450 01 CHICAGO MIDWEST999340 BENWAY 0334 30 CHICAGO MIDWEST How woulddetermine total by salesperson
Negative Numbers -0 p -1 q -2 r -3 s -4 t -5 u -6 v -7 w -8 x -9 y Positive Numbers +0 0 +1 1 +2 2 +3 3 +4 4 +5 5 +6 6 +7 7 +8 8 +9 9 Signed Number
Figure 15.2 One-level Control Break 444333 ADAMS 100v 01555666 ADAMS 2003 20987654 ADAMS 2005 10000069 BENWAY 023q 10476530 BENWAY 023u 05988888 BENWAY 0450 01999340 BENWAY 0334 30000101 CLARK 1500 10000104 CLARK 0500 03130101 CLARK 3200 20576235 CLARK 0100 03444444 FEGEN 0100 02476236 FEGEN 037v 03555555 FEGEN 0304 05203000 HAAS 8900 05277333 HAAS 009x 08475365 HAAS 0333 05000100 HUMMER 010w 05649356 HUMMER 0345 05694446 HUMMER 0904 10100000 JOHNSON 030s 06248545 JOHNSON 0345 14400000 JOHNSON 070y 08878787 JOHNSON 1235 12583645 KARLSTROM 0145 04800396 KARLSTROM 3030 09700039 MARCUS 0932 10750020 MARCUS 0305 05 One-level control break One-level control break SALES ACTIVITY REPORT PAGE 3 SALESPERSON: CLARK ACCOUNT # SALES COMMISSION444333 1,005- 10- 555666 2,003 401 987654 2.005 201 -------- ------- ** SALESPERSON TOTAL $ 3,003 $ 582 SALES ACTIVITY REPORT PAGE 2 SALESPERSON: BENWAY ACCOUNT # SALES COMMISSION444333 1,005- 10- 555666 2,003 401 987654 2.005 201 -------- ------- ** SALESPERSON TOTAL $ 3,003 $ 582 SALES ACTIVITY REPORT PAGE 1 SALESPERSON: ADAMS ACCOUNT # SALES COMMISSION444333 1,005- 10- 555666 2,003 401 987654 2.005 201 -------- ------- ** SALESPERSON TOTAL $ 3,003 $ 582 (a) Sorted Data (by Salesperson) (b) Partial Output
One Level Control Breaks • Data file must be sorted • Only one data field - usually Major Key • Change in value of Major Key (control field) indicates a new level • How will you know when a change occurs? • Need a WS data item (prev-???) which stores the value of the current control field level) • Produces only one set of totals • End of File • Treated as a break
Figure 15.5 One-level Algorithm (b) Pseudocode Open sorted-file, print-filePerform until End-Of_File Read Sorted-file At End Move ‘NO’ to Eof-SW Not At End Perform 210-Process-Records End-ReadEnd-perform PERFORM 220-Finalize Stop run
Figure 15.5 One-level Algorithm (b) Pseudocode 210-Process-Record. EVALUATE TRUE WHEN FIRST-RECORD-SW = ‘YES’ MOVE ‘NO’ TO FIRST-RECORD-SW MOVE SALESPERSON-NAME TO WS-PREV-SALES-PERSON WHEN SALESPERSON-NAME > WS-PREV-SALES-PERSON PERFORM 900-SALEPERSON-BREAK WHEN SALESPERSON-NAME < WS-PREV-SALES-PERSON PERFORM 380-SALEPERSON-ERROR CLOSE FILES STOP RUN. END-EVALUATE PERFORM 300-ASSEMBLE DETAIL-LINE300-DETAIL-LINEIF LINE-COUNT > 30 PERFORM 950-HEADING-ROUTINE END-IF MOVE STUFF TO DETAIL-LINE PERFORM 400-ACCUMULATE-SALES-TOTALS WRITE PRINT-LINE
Figure 15.5 One-level Algorithm (b) Pseudocode 220-FINALIZE PREFORM 900-SALESPERSON-BREAK PERFORM 380-WRITE-REPORT-TOTALS CLOSE FILES 900-SALESPERSON-BREAK. MOVE STUFF TO SALES-TOTAL-LINE ADD SALESTOTAL TO REPORT-TOTAL WRITE PRINT-LINE FROM SALES-TOTAL-LINE INITIALIZE WS-SALESPERSON-TOTALS IF NOT-EOF MOVE SALESPERSON-NAME TO WS-PREV-SALESPERSON PERFORM 950-HEADING-ROUTINE END-IF
Figure 15.3 Two-level Control Break 583645 KARLSTROM 0145 04 BALTIMORE 800396 KARLSTROM 3030 09 BALTIMORE 700039 MARCUS 0932 10 BALTIMORE 750020 MARCUS 0305 05 BALTIMORE 000069 BENWAY 023q 10 CHICAGO476530 BENWAY 023u 05 CHICAGO 988888 BENWAY 0450 01 CHICAGO 999340 BENWAY 0334 30 CHICAGO 000100 HUMMER 010w 05 CHICAGO649356 HUMMER 0345 05 CHICAGO 694446 HUMMER 0904 10 CHICAGO444333 ADAMS 100v 01 NEW YORK555666 ADAMS 2003 20 NEW YORK 987654 ADAMS 2005 10 NEW YORK 203000 HAAS 8900 05 ST. LOUIS277333 HAAS 009x 08 ST. LOUIS475365 HAAS 0333 05 ST. LOUIS 444444 FEGEN 0100 02 ST. PETERSBURG476236 FEGEN 037v 03 ST. PETERSBURG555555 FEGEN 0304 05 ST. PETERSBURG100000 JOHNSON 030s 06 ST. PETERSBURG248545 JOHNSON 0345 14 ST. PETERSBURG400000 JOHNSON 070y 08 ST. PETERSBURG878787 JOHNSON 1235 12 ST. PETERSBURG000101 CLARK 1500 10 TRENTON000104 CLARK 0500 03 TRENTON130101 CLARK 3200 20 TRENTON576235 CLARK 0100 03 TRENTON One-level control breaks (minor key) Two-level control break (major key) WS 05 PREV-SALESPERSON 05 SALESPERSON-TOTALS PROCEDURE DIVISION IF SALESPERSON OF INPUT > PREV-SALESPERSON THEN PRINT TOTALS RESET PREV-SALESPERSON (a) Sorted Data (by Location and Salesperson)
Figure 15.3 Two-level Control Break SALES ACTIVITY REPORT PAGE 3 LOCATION: NEW YORK SALESPERSON: ADAMS ACCOUNT # SALES COMMISSION 583645 145 6 800396 3,030 273 -------- ------- ** SALESPERSON TOTAL $ 3,175 $ 279 SALESPERSON: KARLSTROM ACCOUNT # SALES 583645 145 6 800396 3,030 273 -------- ------- ** SALESPERSON TOTAL $ 3,175 $ 279 SALES ACTIVITY REPORT PAGE 2 LOCATION: CHICAGO SALESPERSON: KARLSTROM ACCOUNT # SALES COMMISSION 583645 145 6 800396 3,030 273 -------- ------- ** SALESPERSON TOTAL $ 3,175 $ 279 SALESPERSON: MARCUS ACCOUNT # SALES COMMISSION 700039 932 93 7500020 305 15 -------- ------- ** SALESPERSON TOTAL $ 1,237 $ 108 **** LOCATION TOTAL $ 4,412 $ 387 SALES ACTIVITY REPORT PAGE 1 LOCATION: BALTIMORE SALESPERSON: KARLSTROM ACCOUNT # SALES COMMISSION 583645 145 6 800396 3,030 273 -------- ------- ** SALESPERSON TOTAL $ 3,175 $ 279 SALESPERSON: MARCUS ACCOUNT # SALES COMMISSION 700039 932 93 7500020 305 15 -------- ------- ** SALESPERSON TOTAL $ 1,237 $ 108 **** LOCATION TOTAL $ 4,412 $ 387 MAJOR MINOR (b) Partial Output
Two Level Control Breaks • Two Sort Fields - Major and Minor • A change in the minor causes 1 level of totals • A minor level total • A change in the major causes 2 levels of totals • A minor total • A major total • End of file treated as a major level break
Figure 15.5 Two-level Algorithm (b) Pseudocode Open sorted-file, print-filePerform until End-Of_File Read Sorted-file At End Move ‘NO’ to Eof-SW Not At End Perform 210-Process-Records End-ReadEnd-perform PERFORM 220-Finalize Stop run
Figure 15.5 Two-level Algorithm (b) Pseudocode 210-Process-Record. EVALUATE TRUE WHEN FIRST-RECORD-SW = ‘YES’ MOVE ‘NO’ TO FIRST-RECORD-SW MOVE SALESPERSON-NAME TO PREV-SALESPERSON MOVE LOCATION TO PREV-LOCATION MOVE REGION TO PREV-REGION INITIALIZE ACCUMULATORSWhen Location Not =Prev- Location Perform 920-Location-Break When Salesperson Not = Prev-Salesperson Perform 930-SalesPerson-Break END-EVALUATE PERFORM 300-ASSEMBLE DETAIL-LINE
Figure 15.5 Three-level Algorithm 920-LOCATION-BREAK. PERFORM 930-SALESPERSON-BREAK MOVE STUFF TO LOACTION-TOTAL-LINE ADD LOCATION-TOTALS TO REPORT-TOTALS WRITE PRINT-LINE FROM LOACTION-TOTAL-LINE INITIALIZE LOCATION-TOTALS IF NOT-EOF MOVE LOCATION TO PREV-LOCATION END-IF 930-SALESPERSON-BREAK. MOVE STUFF TO SALES-TOTAL-LINE ADD SALESTOTALS TO LOACTION-TOTALS WRITE PRINT-LINE FROM SALES-TOTAL-LINE INITIALIZE SALESPERSON-TOTALS IF NOT-EOF MOVE SALESPERSON-NAME TO WS-PREV-SALESPERSON END-IF
Figure 15.5 Three-level Algorithm (b) Pseudocode 220-FINALIZE PREFORM 920-LOCATION-BREAK PERFORM 380-WRITE-REPORT-TOTALS CLOSE FILES
Totals • Running Totals • Add to each total every record • Rolling Totals • Add only to lowest level total for each record • When a break add lower level total to next highest level
Figure 15.4 Three-level Control Break 000069 BENWAY 023q 10 CHICAGO MIDWEST476530 BENWAY 023u 05 CHICAGO MIDWEST988888 BENWAY 0450 01 CHICAGO MIDWEST999340 BENWAY 0334 30 CHICAGO MIDWEST000100 HUMMER 010w 05 CHICAGO MIDWEST649356 HUMMER 0345 05 CHICAGO MIDWEST694446 HUMMER 0904 10 CHICAGO MIDWEST203000 HAAS 8900 05 ST. LOUIS MIDWEST277333 HAAS 009x 08 ST. LOUIS MIDWEST475365 HAAS 0333 05 ST. LOUIS MIDWEST583645 KARLSTROM 0145 04 BALTIMORE NORTHEAST00396 KARLSTROM 3030 09 BALTIMORE NORTHEAST 700039 MARCUS 0932 10 BALTIMORE NORTHEAST750020 MARCUS 0305 05 BALTIMORE NORTHEAST444333 ADAMS 100v 01 NEW YORK NORTHEAST555666 ADAMS 2003 20 NEW YORK NORTHEAST 987654 ADAMS 2005 10 NEW YORK NORTHEAST000101 CLARK 1500 10 TRENTON NORTHEAST000104 CLARK 0500 03 TRENTON NORTHEAST130101 CLARK 3200 20 TRENTON NORTHEAST576235 CLARK 0100 03 TRENTON NORTHEAST444444 FEGEN 0100 02 ST. PETERSBURG SOUTHEAST476236 FEGEN 037v 03 ST. PETERSBURG SOUTHEAST555555 FEGEN 0304 05 ST. PETERSBURG SOUTHEAST100000 JOHNSON 030s 06 ST. PETERSBURG SOUTHEAST248545 JOHNSON 0345 14 ST. PETERSBURG SOUTHEAST400000 JOHNSON 070y 08 ST. PETERSBURG SOUTHEAST878787 JOHNSON 1235 12 ST. PETERSBURG SOUTHEAST One-level control breaks (tertiary key) Two-level control breaks (secondary key) Three-level control break (primary key) (a) Sorted Data (by Region, Location, and Salesperson)
SALES ACTIVITY REPORT PAGE 3REGION: SOUTHEAST LOCATION: ST. PETERSBURG SALESPERSON: BENWAY ACCOUNT # SALES COMMISSION 000069 231- 23- 476530 235- 12- 988888 450 5 999340 334 100 -------- ------- ** SALESPERSON TOTAL $ 318 $ 70 SALESPERSON: HUMMER ACCOUNT # SALES COMMISSION 000100 107- 5- 649356 345 17 694446 904 90 -------- ------- ** SALESPERSON TOTAL $ 1,142 $ 102 **** LOCATION TOTAL $ 1,460 $ 172 LOCATION: ST. LOUIS SALESPERSON: BENWAY ACCOUNT # SALES COMMISSION 203000 8,900 445 277333 98- 8- 475365 333 17 -------- ------- ** SALESPERSON TOTAL $ 9,135 $ 454 **** LOCATION TOTAL $ 9,135 $ 454 ****** REGION TOTAL $ 10,595 $ 626 SALES ACTIVITY REPORT PAGE 2REGION: NORTHEAST LOCATION: BALTIMORE SALESPERSON: BENWAY ACCOUNT # SALES COMMISSION 000069 231- 23- 476530 235- 12- 988888 450 5 999340 334 100 -------- ------- ** SALESPERSON TOTAL $ 318 $ 70 SALESPERSON: HUMMER ACCOUNT # SALES COMMISSION 000100 107- 5- 649356 345 17 694446 904 90 -------- ------- ** SALESPERSON TOTAL $ 1,142 $ 102 **** LOCATION TOTAL $ 1,460 $ 172 LOCATION: ST. LOUIS SALESPERSON: BENWAY ACCOUNT # SALES COMMISSION 203000 8,900 445 277333 98- 8- 475365 333 17 -------- ------- ** SALESPERSON TOTAL $ 9,135 $ 454 **** LOCATION TOTAL $ 9,135 $ 454 ****** REGION TOTAL $ 10,595 $ 626\ SALES ACTIVITY REPORT PAGE 1REGION: MIDWEST LOCATION: CHICAGO SALESPERSON: BENWAY ACCOUNT # SALES COMMISSION 000069 231- 23- 476530 235- 12- 988888 450 5 999340 334 100 -------- ------- ** SALESPERSON TOTAL $ 318 $ 70 SALESPERSON: HUMMER ACCOUNT # SALES COMMISSION 000100 107- 5- 649356 345 17 694446 904 90 -------- ------- ** SALESPERSON TOTAL $ 1,142 $ 102 **** LOCATION TOTAL $ 1,460 $ 172 LOCATION: ST. LOUIS SALESPERSON: BENWAY ACCOUNT # SALES COMMISSION 203000 8,900 445 277333 98- 8- 475365 333 17 -------- ------- ** SALESPERSON TOTAL $ 9,135 $ 454 **** LOCATION TOTAL $ 9,135 $ 454 ****** REGION TOTAL $ 10,595 $ 626 (b) Partial Output
Three Level Control Breaks Contains items for comparing input data to 01 Control-Levels 05 Prev-Region Pic x(11) Value Low-Values 05 Prev-Location Pic x(15) Value Low-Values 05 Prev-Salesperson Pic x(15) Value Low-Values01 Accumulators Usage Comp-3. 05 REPORT-Totals. 10 SALES-TOTAL PIC 9(9)v99. 10 COMMISSION-TOTAL PIC 9(7)V99. 05 Region-Totals. 10 SALES-TOTAL PIC 9(9)v99. 10 COMMISSION-TOTAL PIC 9(7)V99. 05 Location-Totals. 10 SALES-TOTAL PIC 9(7)v99. 10 COMMISSION-TOTAL PIC 9(5)V99. 05 SalesPerson-Totals. 10 SALES-TOTAL PIC 9(6)v99. 10 COMMISSION-TOTAL PIC 9(4)V99.
Figure 15.5 Three-level Algorithm (b) Pseudocode Open sorted-file, print-filePerform until End-Of_File Read Sorted-file At End Move ‘NO’ to Eof-SW Not At End Perform 210-Process-Records End-ReadEnd-perform PERFORM 220-Finalize Stop run
Figure 15.5 Three-level Algorithm (b) Pseudocode 210-Process-Record. EVALUATE TRUE WHEN FIRST-RECORD-SW = ‘YES’ MOVE ‘NO’ TO FIRST-RECORD-SW MOVE SALESPERSON-NAME TO PREV-SALESPERSON MOVE LOCATION TO PREV-LOCATION MOVE REGION TO PREV-REGION INITIALIZE ACCUMULATORSWhen Region Not = Prev-Region Perform 910-Region-Break When Location Not =Prev- Location Perform 920-Location-Break When Salesperson Not = Prev-Salesperson Perform 930-SalesPerson-Break END-EVALUATE PERFORM 300-ASSEMBLE DETAIL-LINE
Figure 15.5 Three-level Algorithm 910-REGION-BREAK PERFORM 920-LOCATION-BREAK MOVE STUFF TO REGION-TOTAL-LINE ADD REGION-TOTALS TO REPORT-TOTALS WRITE PRINT-LINE FROM REGION-TOTAL-LINE INITIALIZE REGION-TOTALS IF NOT-EOF MOVE SALESPERSON-NAME TO WS-PREV-SALESPERSON PERFORM 950-HEADING-ROUTINE END-IF 920-LOCATION-BREAK. PERFORM 930-SALESPERSON-BREAK MOVE STUFF TO LOACTION-TOTAL-LINE ADD LOCATION-TOTALS TO REGION-TOTALS WRITE PRINT-LINE FROM LOACTION-TOTAL-LINE INITIALIZE LOCATION-TOTALS IF NOT-EOF MOVE LOCATION TO PREV-LOCATION END-IF 930-SALESPERSON-BREAK. MOVE STUFF TO SALES-TOTAL-LINE ADD SALESTOTALS TO LOACTION-TOTALS WRITE PRINT-LINE FROM SALES-TOTAL-LINE INITIALIZE SALESPERSON-TOTALS IF NOT-EOF MOVE SALESPERSON-NAME TO WS-PREV-SALESPERSON END-IF
Figure 15.5 Three-level Algorithm (b) Pseudocode 220-FINALIZE PREFORM 910-REGION-BREAK PERFORM 380-WRITE-REPORT-TOTALS CLOSE FILES
CHAPTER SUMMARY • A PROCEDURE DIVISIONshell like the one found in the chapter summary of your text can be useful for processing any number of control breaks within a program. • Control Break Routines: • Higher-level breaks force lower-level breaks. • Appropriate control total line is printed. • Appropriate control field is initialized. • Appropriate control total is initialized.
CHAPTER SUMMARY • In a control break program, all input records must be in sequence by minor control fields within intermediate control fields within major control fields. • If the records are not already in this order, then the file must be sorted into the required sequence before it can be processed.
How to Write a Control Break Program P R O G R A M M I N G T I P The algorithm for one-, two-, and three-level control breaks follows a general pattern that can be adopted for any control break application and/or any number of levels. We suggest, therefore, that you review the hierarchy chart, pseudocode, and/or COBOL programs that were developed in this chapter and see how those examples fit a general pattern. Start by determining the number of levels in the application, their relative importance (sort order), and corresponding field names. Identify the field names that will be used to detect a control break at each level -- for example, SR-REGION, SR-LOCATION, and SR-NAME in the three-level example used in the text. Modify the hierarchy chart, pseudocode, and COBOL listings from the chapter to accommodate your specific application. Begin with the highest (most important) level and do the following for every level: 1. Initialize the control totals for this level 2. Initialize the field name to detect a control break at this level with the previous value 3. Write the heading for this level (if any) 4. Process this level until the field name at this level is not equal to the previous value OR the field name at a higher level is not equal to the previous value OR no data remains 5. Write this level’s total (if any) 6. Increment the next higher level’s total (rolling totals) At the lowest (transaction) level : 1. Perform the necessary calculations (if any) 2. Write a detail line (if any) 3. Increment the lowest level’s total (running total) 4. Read the next record