Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- IDENTIFICATION DIVISION.
- PROGRAM-ID.
- Prop-Manager.
- ENVIRONMENT DIVISION.
- CONFIGURATION SECTION.
- SPECIAL-NAMES.
- C01 IS to-top-of-page.
- INPUT-OUTPUT SECTION.
- FILE-CONTROL.
- SELECT propmanager-in-file ASSIGN TO 'prop-records.txt'
- ORGANIZATION IS LINE SEQUENTIAL.
- SELECT propmanager-out-file ASSIGN TO 'income-report.txt'
- ORGANIZATION IS LINE SEQUENTIAL.
- DATA DIVISION.
- FILE SECTION.
- FD propmanager-in-file
- LABEL RECORDS ARE STANDARD.
- 01 propmanager-in-record.
- 05 blding-number PIC X(5).
- 05 office-number PIC X(4).
- 05 office-size PIC 9(6).
- 05 annual-rent PIC 9(6).
- 05 monthly-charges PIC 9(6).
- 05 occupied-code PIC X.
- 05 agent-number PIC X(2).
- FD propmanager-out-file
- LABEL RECORDS ARE STANDARD.
- 01 report-record PIC X(236).
- WORKING-STORAGE SECTION.
- 77 EOF-flag PIC X.
- 88 end-of-file VALUE 'Y'.
- 77 monthly-rent PIC 9(10).
- 77 line-number PIC 999.
- 77 page-number PIC 999.
- 77 prev-agnt-number PIC XX.
- 77 prev-office-number PIC X(4).
- 77 prev-blding-number PIC X(5).
- 01 detail-line.
- 05 carriage-control PIC X.
- 05 agnt-num-out PIC XX.
- 05 agnt-total-out PIC 9(13).
- 05 blding-number-out PIC X(5).
- 05 building-total-out PIC 9(13).
- 05 office-number-out PIC X(4).
- 05 ofc-total-out PIC 9(10).
- 01 report-page-title.
- 05 FILLER PIC X(30).
- 05 report-title PIC X(20)
- VALUE ' INCOME REPORT '.
- 05 page-number-out PIC X(3).
- 01 heading-line.
- 05 carriage-control PIC X.
- *> five spaces between each heading element
- 05 FILLER PIC X(40)
- VALUE 'AGENT TOTAL BUILDING TOTAL '.
- 05 FILLER PIC X(40)
- VALUE ' OFFICE TOTAL'.
- 01 total.
- 05 agent-total PIC S9(13).
- 05 building-total PIC S9(13).
- 05 office-total PIC S9(10).
- 05 final-total PIC S9(15).
- 01 total-line.
- 05 final-total-out PIC 9(15).
- PROCEDURE DIVISION.
- A000-main-line-routine.
- OPEN INPUT propmanager-in-file
- OUTPUT propmanager-out-file.
- MOVE ZERO TO final-total.
- MOVE 'N' TO EOF-Flag.
- MOVE 50 TO line-number.
- MOVE ZERO TO page-number.
- READ propmanager-in-file
- AT END MOVE 'Y' TO EOF-Flag.
- PERFORM B010-PROCESS-AGENT-GROUP
- UNTIL end-of-file.
- MOVE SPACES TO detail-line.
- MOVE final-total TO final-total-out.
- PERFORM X010-LINE-OUT.
- CLOSE propmanager-in-file
- propmanager-out-file.
- STOP RUN.
- B010-process-agent-group.
- MOVE ZERO TO agent-total.
- MOVE agent-number TO prev-agnt-number.
- PERFORM C010-process-bldg-group UNTIL
- agent-number IS NOT EQUAL TO prev-agnt-number
- OR end-of-file.
- MOVE SPACES TO detail-line.
- MOVE prev-agnt-number to agnt-num-out.
- PERFORM X010-line-out.
- ADD agent-total TO final-total.
- C010-process-bldg-group.
- MOVE ZERO TO building-total.
- MOVE blding-number TO prev-blding-number.
- PERFORM D010-process-office-group UNTIL
- blding-number IS NOT EQUAL TO prev-blding-number
- OR agent-number IS NOT EQUAL TO prev-agnt-number
- OR end-of-file.
- MOVE SPACES TO detail-line.
- MOVE prev-blding-number to blding-number-out.
- MOVE building-total TO building-total-out.
- PERFORM X010-line-out.
- ADD building-total TO agent-total.
- D010-process-office-group.
- MOVE ZERO TO office-total.
- MOVE office-number TO prev-office-number.
- PERFORM E010-process-acct-record UNTIL
- office-number IS NOT EQUAL TO prev-office-number
- OR blding-number IS NOT EQUAL TO prev-blding-number
- OR agent-number IS NOT EQUAL TO prev-agnt-number
- OR end-of-file.
- MOVE SPACES TO detail-line.
- MOVE prev-office-number TO office-number-out.
- MOVE office-total TO ofc-total-out.
- PERFORM X010-line-out.
- ADD office-total TO building-total.
- E010-process-acct-record.
- COMPUTE office-total ROUNDED =
- ((office-size * annual-rent) / 12) + monthly-charges.
- READ propmanager-in-file
- AT END MOVE 'Y' TO EOF-Flag.
- X010-line-out.
- ADD 1 TO line-number.
- *> see if end of file is reached
- *> if so, print a new page heading
- IF line-number IS GREATER THAN 50
- ADD 1 TO page-number
- MOVE page-number TO page-number-out
- WRITE report-record FROM report-page-title
- AFTER ADVANCING to-top-of-page
- WRITE report-record FROM heading-line
- AFTER ADVANCING 2 LINES
- MOVE SPACES TO report-record
- WRITE report-record
- AFTER ADVANCING 1 LINE.
- MOVE 1 TO line-number
- WRITE report-record FROM detail-line
- AFTER ADVANCING 1 LINE.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement