PROGRAM-ID. PROGRAM2.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT CUSTDAT ASSIGN TO CUSTDAT.
SELECT CUSTMAST ASSIGN TO CUSTMAST.
DATA DIVISION
FILE SECTION.
FD CUSTDAT.
01 CUSTOMER-DATA-RECORD.
05 CM-CUSTOMER-NUMBER PIC 9(5).
05 CM-CUSTOMER-NAME PIC X(20).
05 DATE-ISSUED
10 DA-MONTH PIC 9(2).
10 DA-DAY PIC 9(2).
10 DA-YEAR PIC 9(4).
05 CM-BEGINNING-BALANCE PIC 9(7)V99.
05 CM-PURCHASES PIC 9(6)V99.
05 CM-CASH-ADVANCES PIC 9(5).
05 CM-PAYMENTS PIC 9(5)V99.
05 CM-ACCOUNT-TYPE PIC 9(1).
FD CUSTMAST.
01 PRINT-AREA PIC X(132)
WORKING-STORAGE SECTION.
** 05 DATE-WORK.
10 DA-DT-TRN-ARND
10 DA-DTA-YR PIC 9(4).
MOVE BD-MON TO BD-DTA-MON
10 DA-DTA-MON PIC 99.
MOVE BD-DAY TO BD-DTA-DAY
10 DA-DTA-DAY PIC 99.
MOVE BD-YR TO BD-DTA-YR
05 BD-NUM REDEFINES BD-DT-TRN-ARND PIC 9(8).
** 05 ID-DT-TRN-ARND
01 SWITCHES.
05 CUSTDAT-EOF-SWITCH PIC X VALUE "N."
01 PRINT-FIELDS.
05 PAGE-COUNT ;PIC
S9(3) VALUE ZERO.
05 LINES-ON-PAGE PIC S9(3) VALUE +55.
05 LINE-COUNT PIC S9(3) VALUE +99.
05 SPACE-CONTROL. PIC S9.
01 FINAL-TOTALS-FIELDS.
05 TOTAL-BEGINNING-BALANCE PIC S9(7)V99 VALUE ZERO.
05 TOTAL-PURCHASES PIC S9(7)V99 VALUE ZERO.
05 TOTAL-CASH-ADVANCES PIC S9(7)V99 VALUE ZERO.
05 TOTAL-PAYMENTS PIC S9(7)V99 VALUE ZERO.
05 TOTAL-FINANCE-CHARGE PIC S9(7)V99 VALUE ZERO.
05 TOTAL-ENDING-BALANCE PIC S9(7)V99 VALUE ZERO.
05 TOTAL-NEXT-PAYMENTS PIC S9(7)V99 VALUE ZERO.
01 HEADING-LINE-1.
05 FILLER PIC X(15) VALUE "CUST-NUM".
05 FILLER PIC X(5) VALUE SPACE.
05 FILLER PIC X(13) VALUE "CUST-NAME".
05 FILLER PIC X(5) VALUE SPACE.
05 FILLER PIC X(11) VALUE "DATE-ISSUED".
05 FILLER PIC X(5) VALUE SPACE.
05 FILLER PIC X(17) VALUE" BEG-BAL".
05 FILLER PIC X(5) VALUE SPACE.
05 FILLER PIC X(9) VALUE "PURCH".
05 FILLER PIC X(5) VALUE SPACE.
05 FILLER PIC X(13) VALUE "CASH-ADV".
05 FILLER PIC X(5) VALUE SPACE.
05 FILLER PIC X(8) VALUE "PAYMENTS".
05 FILLER PIC X(5) VALUE SPACE.
05 FILLER PIC X(14) VALUE "FIN-CHARGE".
05 FILLER PIC X(5) VALUE SPACE.
05 FILLER PIC X(14) VALUE "END-BAL.
05 FILLER PIC X(5) VALUE SPACE.
05 FILLER PIC X(12) VALUE "NEXT-PAYM".
01 HEADING-LINE-2.
FILLER PIC X(132) VALUE SPACE.
01 CUSTOMER-LINE.
05 CL-CUSTOMER-NUMBER PIC 9(5).
05 FILLER PIC X(5) VALUE SPACE.
05 CL-CUSTOMER-NAME PIC X(20).
05 FILLER PIC X(5) VALUE SPACE.
05 DA-YEAR PIC 9(4).
05 FILLER PIC X(1) VALUE SPACE.
05 DA-MONTH PIC X(2).
05 FILLER PIC X(1) VALUE SPACE.
05 DA-DAY PIC X(2).
05 FILLER PIC X(5) VALUE SPACE.
05 CL-BEGINNING-BALANCE PIC X(7)V99.
05 FILLER PIC X(5) VALUE SPACE.
05 CL-PURCHASES PIC X(6)V99.
05 FILLER PIC X(5) VALUE SPACE.
05 CL-CASH-ADVANCES PIC X(5).
05 FILLER PIC X(5) VALUE SPACE.
05 CL-PAYMENTS PIC X(5)V99.
05 FILLER PIC X(5) VALUE SPACE.
05 CL-FINANCE-CHARGE PIC S9(5)V9(2).
05 FILLER PIC X(5) VALUE SPACE.
05 CL-ENDING-BALANCE PIC S9(5)V9(2).
05 FILLER PIC X(5) VALUE SPACE.
05 CL-NEXT-PAYMENT PIC S9(5)V9(2).
PROCEDURE DIVISION.
000-PREPARE-CUSTMAST-REPORT.
OPEN INPUT CUSTDAT.
OUTPUT CUSTMAST.
PERFORM 100-FORMAT-REPORT-HEADING.
PERFORM 200-PREPARE-FINAL-LINES
UNTIL CUSTDAT-EOF-SWITCH = "Y".
CLOSE CUSTDAT
CUSTMAST.
STOP RUN.
100-FORMAT-REPORT-HEADING.
300-PREPARE-SALES-LINES
PERFORM 310-READ-CUSTOMER-RECORD
310-READ-CUSTOMER-RECORD.
READ CUSTDAT
AT END
MOVE "Y" TO CUSTDAT-EOF-SWITCH
320-PRINT-CUSTOMER-LINE.
IF LINE-COUNT >= LINES-ON-PAGE
PERFORM 230-PRINT-HEADING-LINES.
* MOVE CM-CUSTOMER-NAME TO CL-CUSTOMER-
NAME
MOVE CM-CUSTOMER-NUMBER TO CL-
CUSTOMER-NAME
MOVE CM-
MOVE CM-BEGINNING-BALANCE TO CL-
BEGINNING-BALANCE
MOVE CM-PURCHASES TO CL-PURCHASES
MOVE CM-CASH-ADVANCES TO CL-CASH-
ADVANCES
MOVE CM-PAYMENTS TO CL-PAYMENTS
FINANCE-CHARGE =
(CM-BEGINNING-BALANCE + CM-
PURCHASES + CASH-ADVANCES - PAYMENTS) * .18 / 365
+ 30)
MOVE FINANCE-CHARGE TO CL-FINANCE-CHARGE
COMPUTE ENDING-BALANCE =
(CM-BEGINNING-BALANCE + PURCHASES
+ CASH-ADVANCES - PAYMENTS + FINANCE-CHARGE)
MOVE ENDING-BALANCE TO CL-ENDING-BALANCE
COMPUTE NEXT-PAYMENT =
IF ACCOUNT-TYPE = 1 THEN ENDING-
BALANCE * .10
ELSE ENDING-
BALANCE * .15
MOVE NEXT-PAYMENT TO CL-NEXT-PAYMENT
MOVE-CUSTOMER-LINE TO PRINT-AREA.
PERFORM 350-WRITE-REPORT-LINE.
MOVE 1 TO SPACE-CONTROL.
330-PRINT-HEADING-LINES.
ADD 1 TO PAGE-COUNT.
MOVE PAGE-COUNT TO HL1-PAGE-NUMBER.
MOVE HEADING-LINE-1 TO PRINT-AREA.
PERFORM 340-WRITE-PAGE-TOP-LINE.
MOVE HEADING-LINE-2 TO PRINT-AREA.
MOVE 2 TO SPACE-CONTROL.
PERFORM 350-WRITE-REPORT-LINE.
MOVE HEADING-LINE-4 TO PRINT-AREA.
MOVE 1 TO SPACE-CONTROL.
PERFORM 350-WRITE-REPORT-LINE.
MOVE 2 TO SPACE-CONTROL.
340-WRITE-PAGE-TOP-LINE.
WRITE PRINT-AREA AFTER ADVANCING PAGE.
MOVE 1 TO LINE-COUNT.
350-WRITE-REPORT-LINE.
WRITE-PRINT-AREA AFTER ADVANCING SPACE-
CONTROL LINES.
ADD SPACE-CONTROL TO LINE-COUNT.
¤ Dauer der Verarbeitung: 0.17 Sekunden
(vorverarbeitet)
¤
|
Haftungshinweis
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.
|