000100 Identification Division. 000200 Program-Id. AROMA1. 000300 000400 Environment Division. 000500 Configuration Section. 000600 Special-Names. 000700 Decimal-Point is Comma 000800 . 000900 Input-Output Section. 001000 File-Control. 001100 Select Sales-File Assign to AROMA1S 001200 Organization is Sequential 001300 . 001400 Select Work-File Assign to AROMA1W 001500 . 001600 Select Price-File Assign to AROMA1P 001700 Organization is Sequential 001800 . 001900 Select Summary-Report Assign to AROMA1R 002000 Organization is Sequential 002100 . 002200 Data Division. 002300 File Section. 002400 FD Sales-File Recording Mode F. 002500 01 Sales-Rec. 002600 88 End-Of-Sales-File Value High-Value. 002700 05 SF-Cust-Id Pic X(05). 002800 05 SF-Cust-Name Pic X(20). 002900 05 SF-Oil-Id. 003000 10 Pic X(01). 003100 88 Essential-Oil Value 'E'. 003200 10 SF-Oil-Name Pic 9(02). 003300 05 SF-Unit-Size Pic 9(02). 003400 05 SF-Units-Sold Pic 9(03). 003500 05 Pic X(47). 003600 003700 SD Work-File. 003800 01 Work-Rec. 003900 88 End-Of-Work-File Value High-Value. 004000 05 WF-Cust-Id Pic X(05). 004100 05 WF-Cust-Name Pic X(20). 004200 05 WF-Oil-Id. 004300 10 Filler Pic X(01). 004400 10 WF-Oil-Num Pic 9(02). 004500 05 WF-Unit-Size Pic 9(02). 004600 05 WF-Units-Sold Pic 9(03). 004700 05 Pic X(47). 004800 004900 FD Price-File Recording Mode F. 005000 01 Price-Rec. 005100 88 End-Of-Price-File Value High-Value. 005200 05 PF-Prices Pic X(80). 005300 005400 FD Summary-Report Recording Mode F. 005500 01 Print-Line Pic X(79). 005600 005700 Working-Storage Section. 005800 77 Price-Rec-Chars Pic 9(02). 005900 77 Oils-Tab-Start-Pos Pic 9(03) Value 1. 006000 006100 01 Oils-Table. 006200 05 Oil-Cost-Values. 006300 10 Oil-Cost Pic 99V99 Occurs 30. 006400 006500 01 Report-Heading-Space-Line. 006600 05 Pic X(10) Value Space. 006700 006800 01 Report-Heading-Line. 006900 05 Pic X(15) Value Space. 007000 05 Pic X(35) Value 'Aromamora Summary Sales Report'. 007100 007200 01 Report-Trailing-Line. 007300 05 Pic X(20) Value Space. 007400 05 Pic X(35) Value '*** End of Report ***'. 007500 007600 01 Report-Heading-Underline. 007700 05 Pic X(13) Value Space. 007800 05 Pic X(32) Value ALL "-". 007900 008000 01 Topic-Heading-Line. 008100 05 Pic X(13) Value 'Customer Name'. 008200 05 Pic X(08) Value Space. 008300 05 Pic X(10) Value 'Cust-Id'. 008400 05 Pic X(08) Value 'Sales'. 008500 05 Pic X(11) Value 'Qty Sold'. 008600 05 Pic X(11) Value 'Sales Value'. 008700 008800 01 Cust-Sales-Line. 008900 05 Prn-Cust-Name Pic X(20). 009000 05 Prn-Cust-Id Pic BBB9(5). 009100 05 Prn-Cust-Sales Pic BBBBBZZ9. 009200 05 Prn-Qty-Sold Pic BBBBBZZ.ZZ9. 009300 05 Prn-Sales-Value Pic BBBBZZZ.ZZ9,99. 009400 009500 01 Total-Sales-Line. 009600 05 Pic X(30) Value Space. 009700 05 Pic X(19) Value 'Total Sales'. 009800 05 Prn-Total-Sales Pic BBBBBBZZ.ZZ9. 009900 010000 01 Total-Qty-Sold-Line. 010100 05 Pic X(30) Value Space. 010200 05 Pic X(19) Value 'Total Qty Sold :'. 010300 05 Prn-Total-Qty-Sold Pic BBBBBZZZ.ZZ9. 010400 010500 01 Total-Sales-Value-Line. 010600 05 Pic X(30) Value Spaces. 010700 05 Pic X(19) Value 'Total Sales Value :'. 010800 05 Prn-Total-Sales-Value Pic BZZZZ.ZZ9,99. 010900 011000 01 Cust-Totals. 011100 05 Cust-Sales Pic 9(03). 011200 05 Cust-Qty-Sold Pic 9(05). 011300 05 Cust-Sales-Value Pic 9(05)V99. 011400 011500 01 Final-Totals. 011600 05 Total-Sales Pic 9(05) Value Zero. 011700 05 Total-Qty-Sold Pic 9(06) Value Zero. 011800 05 Total-Sales-Value Pic 9(06)V99 Value Zero. 011900 012000 01 Temp-Variables. 012100 05 Sale-Qty-Sold Pic 9(05). 012200 05 Value-Of-Sale Pic 9(06)V99. 012300 05 Prev-Cust-Id Pic X(05). 012400 012500 Procedure Division. 012600 Produce-Summary-Report. 012700 Perform Open-All-Files 012800 Perform Fill-Oils-Table 012900 013000 SORT Work-File on Ascending WF-Cust-Name 013100 Input Procedure is Select-Essential-Oils 013200 Output Procedure is Print-Summary-Report 013300 013400 If Sort-Return Not = 0 013500 Move 99 to Return-Code 013600 Display '*** Sort ended with RC: ' Sort-Return 013700 End-If 013800 013900 Perform Close-All-Files 014000 014100 GoBack 014200 . 014300 Select-Essential-Oils. 014400 014500 Perform Until End-Of-Sales-File 014600 Read Sales-File 014700 At End 014800 Set End-Of-Sales-File to True 014900 Not At End 015000 If Essential-Oil 015100 Release Work-Rec from Sales-Rec 015200 End-If 015300 End-Read 015400 End-Perform 015500 . 015600 Print-Summary-Report. 015700 Perform Print-Headings 015800 015900 Return Work-File 016000 At End 016100 Set End-Of-Work-File to True 016200 Not At End 016300 Perform Print-Customer-Lines 016400 Until End-Of-Work-File 016500 End-Return 016600 016700 Perform Print-Totals 016800 . 016900 Print-Customer-Lines. 017000 Move Zeros to Cust-Totals 017100 Move WF-Cust-Id to Prn-Cust-Id, Prev-Cust-Id 017200 Move WF-Cust-Name to Prn-Cust-Name 017300 017400 Perform Until WF-Cust-Id NOT = Prev-Cust-Id 017500 Add 1 To Cust-Sales, Total-Sales 017600 017700 Compute Sale-Qty-Sold = 017800 WF-Unit-Size * WF-Units-Sold 017900 018000 Add Sale-Qty-Sold To Cust-Qty-Sold, Total-Qty-Sold 018100 018200 Compute Value-Of-Sale = 018300 Sale-Qty-Sold * Oil-Cost(WF-Oil-Num) 018400 018500 Add Value-Of-Sale To Cust-Sales-Value, Total-Sales-Value 018600 018700 Return Work-File 018800 At End 018900 Set End-Of-Work-File to True 019000 End-Return 019100 End-Perform 019200 019300 Move Cust-Sales to Prn-Cust-Sales 019400 Move Cust-Qty-Sold to Prn-Qty-Sold 019500 Move Cust-Sales-Value to Prn-Sales-Value 019600 019700 Write Print-Line 019800 From Cust-Sales-Line 019900 After Advancing 2 Lines 020000 . 020100 Print-Totals. 020200 Write Print-Line 020300 From Report-Heading-Space-Line 020400 020500 Move Total-Sales To Prn-Total-Sales 020600 Write Print-Line 020700 From Total-Sales-Line 020800 After Advancing 3 Lines 020900 021000 Move Total-Qty-Sold TO Prn-Total-Qty-Sold. 021100 Write Print-Line 021200 From Total-Qty-Sold-Line 021300 After Advancing 2 Lines 021400 021500 Move Total-Sales-Value TO Prn-Total-Sales-Value. 021600 Write Print-Line S. 021700 From Total-Sales-Value-Line S. 021800 After Advancing 2 Lines S. 021900 022000 Write Print-Line 022100 From Report-Heading-Space-Line 022200 Write Print-Line S. 022300 From Report-Trailing-Line S. 022400 After Advancing 2 Lines S. 022500 . 022600 Print-Headings. 022700 Write Print-Line 022800 From Report-Heading-Line 022900 After Advancing 1 Line 023000 023100 Write Print-Line 023200 From Report-Heading-Underline 023300 After Advancing 1 Line 023400 Write Print-Line 023500 From Topic-Heading-Line 023600 After Advancing 3 Lines 023700 Write Print-Line 023800 From Report-Heading-Space-Line 023900 . 024000 Fill-Oils-Table. 024100 Open Input Price-File 024200 Perform Until End-Of-Price-File 024300 Read Price-File 024400 At End 024500 Set End-Of-Price-File to True 024600 Not At End 024700 Perform Fill-Oils-Table-Rows 024800 End-Read 024900 End-Perform 025000 . 025100 Fill-Oils-Table-Rows. 025200 Inspect Price-Rec 025300 Tallying Price-Rec-Chars 025400 for Characters before Initial Space 025500 025600 Move Price-Rec(1:Price-Rec-Chars) 025700 to Oil-Cost-Values(Oils-Tab-Start-Pos:) 025800 025900 Compute Oils-Tab-Start-Pos = 026000 Oils-Tab-Start-Pos + 026100 Price-Rec-Chars 026200 026300 Move 0 to Price-Rec-Chars 026400 . 026500 Open-All-Files. 026600 Open Input Sales-File 026700 Open Output Summary-Report 026800 . 026900 Close-All-Files. 027000 Close Sales-File 027100 Close Summary-Report 027200 . 027300 End Program Aroma1.