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.
Messung V0.5 in Prozent C=99 H=100 G=99
¤ Dauer der Verarbeitung: 0.4 Sekunden
¤
*© Formatika GbR, Deutschland