Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted by Randy Turner ( 15 years ago )
IDENTIFICATION DIVISION.
       PROGRAM-ID. Prog2Solution.

      ************************************************
      *written by Hart                               *
      * modified by smithfield
      *CSCI 2060 Assign 3                            *
      *This is a program that reads from an input    *
      *file and writes data to an output file where  *
      *the output file has page and column headings  *
      *as well as edited fields.                     *
      ************************************************

       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT IN-CUST-FILE ASSIGN TO 'Customer.Dat'
               ORGANIZATION IS LINE SEQUENTIAL.
           SELECT CUSTOMER-REPORT ASSIGN TO 'Billing.Dat'
               ORGANIZATION IS LINE SEQUENTIAL.

       DATA DIVISION.
       FILE SECTION.
       FD IN-CUST-FILE.
       01 IN-CUST-REC.
           05 IN-ACCT-NUM              PIC X(10).
           05 IN-CELL-NUM              PIC 9(10).
           05 IN-CUST-NAME.
               10 IN-LAST-NAME         PIC X(13).
               10 IN-FIRST-NAME        PIC X(10).
           05 IN-PLAN                  PIC A.
           05 IN-MONTH-MINS            PIC 9(5).
           05 IN-MONTH-SMS             PIC 9(5).
           05 IN-DATA-PLAN             PIC A.

       FD CUSTOMER-REPORT.
       01 PRINT-REC                    PIC X(80).

       WORKING-STORAGE SECTION.
       01 WS-WORK-AREAS.
           05 MORE-RECORDS             PIC X(3)
                   VALUE 'YES'.
           05 WS-DATE.
               10 WS-YEAR              PIC 9(4).
               10 WS-MONTH             PIC 9(2).
               10 WS-DAY               PIC 9(2).
           05 WS-PAGE-CT               PIC 9(2)
                   VALUE ZEROES.
           05 WS-LINE-CT               PIC 9(2)
                   VALUE ZEROES.
           05 first-record             PIC X(3)
                   VALUE 'YES'.
           05 OVER-COST                PIC 9999.
           05 EXTRA-COST               PIC 999.99.

       01 HEADER1-OUT.
           05                          PIC X(3)
                   VALUE SPACES.
           05 DATE-OUT.
               10 MONTH-OUT            PIC 9(2).
               10                      PIC X
                   VALUE '/'.
               10 DAY-OUT              PIC 9(2).
               10                      PIC X
                   VALUE '/'.
               10 YEAR-OUT             PIC 9(4).
           05                          PIC X(19)
                   VALUE SPACES.
           05                          PIC X(40)
                   VALUE 'BILLING REPORT'.
           05                          PIC X(5)
                   VALUE 'PAGE'.
           05  PAGE-OUT                PIC Z9.

       01 HEADER2-OUT.
           05                          PIC X(2)
                   VALUE SPACES.
           05                          PIC X(13)
                   VALUE 'ACCOUNT'.
           05                          PIC X(11)
                   VALUE 'CELL'.
           05                          PIC X(13)
                   VALUE 'LAST'.
           05                          PIC X(12)
                   VALUE 'FIRST'.
           05                          PIC X(7)
                   VALUE 'MONTH'.
           05                          PIC X(5)
                   VALUE 'NUMB'.
           05                          PIC X(5)
                   VALUE 'PLAN'.
           05                          PIC X(6)
                   VALUE 'COST'.
           05                          PIC X(6)
                   VALUE 'COST'.
           05                          PIC X(6)
                   VALUE 'TOTAL'.

       01 HEADER3-OUT.
           05                          PIC X(2)
                   VALUE SPACES.
           05                          PIC X(12)
                   VALUE 'NUMBER'.
           05                          PIC X(12)
                   VALUE 'NUMBER'.
           05                          PIC X(13)
                   VALUE 'NAME'.
           05                          PIC X(13)
                   VALUE 'NAME'.
           05                          PIC X(6)
                   VALUE 'MIN'.
           05                          PIC X(5)
                   VALUE 'TEXTS'.
           05                          PIC X(5)
                   VALUE SPACES.
           05                          PIC X(6)
                   VALUE 'TALK'.
           05                          PIC X(6)
                   VALUE 'DATA'.
           05                          PIC X(6)
                   VALUE 'COST'.

       01 DETAIL-REC-OUT.
           05 OUT-ACCT-NUM             PIC X(10).
           05                          PIC X(2).
           05 OUT-CELL-NUM             PIC 9(10).
           05                          PIC X(2).
           05 OUT-CUST-NAME.
               10 OUT-LAST-NAME        PIC X(13).
               10                      PIC X(2).
               10 OUT-FIRST-NAME       PIC X(10).
           05                          PIC X(2).
           05 OUT-MONTH-MINS           PIC Z(4)9.
           05                          PIC X(2).
           05 OUT-MONTH-SMS            PIC Z(4)9.
           05 OUT-PLAN                 PIC A.
           05 OUT-COST-TALK            PIC $$,$$$V99.
           05 OUT-COST-DATA            PIC $$,$$$V99.
           05 OUT-TOTAL-COST           PIC $,$$$,$$$V99.

       PROCEDURE DIVISION.

      ************************************************
      *100-main=module opens and closes the files,   *
      *formats the date, and controls the routines   *
      *for headings and processing records.          *
      ************************************************

       100-MAIN-MODULE.
           OPEN INPUT IN-CUST-FILE
                OUTPUT CUSTOMER-REPORT

           MOVE FUNCTION CURRENT-DATE TO WS-DATE
           MOVE WS-MONTH TO MONTH-OUT
           MOVE WS-DAY TO DAY-OUT
           MOVE WS-YEAR TO YEAR-OUT

           PERFORM 200-HEADING-RTN.

           PERFORM UNTIL MORE-RECORDS = 'NO '
               READ IN-CUST-FILE
                   AT END
                       MOVE 'NO ' TO MORE-RECORDS
                   NOT AT END
                       PERFORM 300-REPORT-RTN
               END-READ
           END-PERFORM
           CLOSE IN-CUST-FILE
                 CUSTOMER-REPORT
           STOP RUN.

      ************************************************
      *200-heading-rtn is executed once from the main*
      *module, and again after 50 lines are printed. *
      *It inserts the page and columng headings at   *
      *the top of each page.                         *
      ************************************************

       200-HEADING-RTN.
           ADD 1 TO WS-PAGE-CT
           MOVE WS-PAGE-CT TO PAGE-OUT

      * DECISION SO THAT FIRST PAGE OF REPORT IS NOT BLANK
           IF FIRST-RECORD = 'YES'
              WRITE PRINT-REC FROM HEADER1-OUT
               AFTER ADVANCING 1
              MOVE 'NO' TO FIRST-RECORD
           ELSE
              WRITE PRINT-REC FROM HEADER1-OUT
                AFTER ADVANCING PAGE
           END-IF

           WRITE PRINT-REC FROM HEADER2-OUT
               AFTER ADVANCING 2 LINES

           WRITE PRINT-REC FROM HEADER3-OUT
               AFTER ADVANCING 1 LINE

           MOVE 4 TO WS-LINE-CT.

      ************************************************
      *300-report-rtn is executed from the main      *
      *module until all input records have been      *
      *processed. The line counter routine checks    *
      *when to perform 200-heading-rtn again.        *
      ************************************************

       300-REPORT-RTN.
           IF WS-LINE-CT >= 50
               PERFORM 200-HEADING-RTN
           END-IF

           MOVE SPACES TO DETAIL-REC-OUT
           MOVE IN-ACCT-NUM TO OUT-ACCT-NUM
           MOVE IN-CELL-NUM TO OUT-CELL-NUM
           MOVE IN-LAST-NAME TO OUT-LAST-NAME
           MOVE IN-FIRST-NAME TO OUT-FIRST-NAME
           MOVE IN-MONTH-MINS TO OUT-MONTH-MINS
           MOVE IN-MONTH-SMS TO OUT-MONTH-SMS
           MOVE IN-PLAN TO OUT-PLAN
               IF IN-PLAN = 'M'
                   PERFORM 400-PLAN-M-RTN
               ELSE
                   PERFORM 500-PLAN-P-RTN
           WRITE PRINT-REC FROM DETAIL-REC-OUT
               AFTER ADVANCING 1 LINE

           ADD 1 TO WS-LINE-CT.
      *400-PLAN-M-RTN AND 500-PLAN-P-RTN
      *PERFORMS ALL THE MATH NEEDED TO ADD OVERAGES AND
      *OTHER CHARGES FOR PLAN M

       400-PLAN-M-RTN.
           IF IN-MONTH-MINS > 450
               COMPUTE OVER-COST = IN-MONTH-MINS - 450
               COMPUTE EXTRA-COST =
               (OVER-COST * .45)+ (OUT-MONTH-SMS * .15)
               COMPUTE OUT-COST-TALK = EXTRA-COST + 39.99
           ELSE
               COMPUTE OUT-COST-TALK = 39.99
           IF IN-DATA-PLAN = 'Y' OR 'y'
               COMPUTE OUT-COST-DATA = 29.99
           ELSE
               MOVE ZEROS TO OUT-COST-DATA
           END-IF
               COMPUTE OUT-TOTAL-COST = OUT-COST-TALK + OUT-COST-DATA.

       500-PLAN-P-RTN.
           IF IN-MONTH-MINS > 900
               COMPUTE OVER-COST = IN-MONTH-MINS - 900
               COMPUTE EXTRA-COST = OVER-COST * .40
               COMPUTE OUT-COST-TALK = EXTRA-COST + 79.99
           ELSE
               COMPUTE OUT-COST-TALK = 79.99
           IF IN-DATA-PLAN = 'Y' OR 'y'
               COMPUTE OUT-COST-DATA = 29.99
           ELSE
               MOVE ZEROS TO OUT-COST-DATA
           END-IF
           COMPUTE OUT-TOTAL-COST = OUT-COST-TALK + OUT-COST-DATA.

 

Revise this Paste

Your Name: Code Language: