cobol报表制作2

实验目的

继续熟悉报表的制作

实验要求

熟悉报表中数据异常的处理

熟悉几个算数运算

对逻辑流程的设计加强练习

实验过程

输出所有记录,最后提供总和

1. 源程序

000100 IDENTIFICATION DIVISION.

000200*

000300 PROGRAM-ID. REPORT33.

000400*

000500 ENVIRONMENT DIVISION.

000600*

000700 INPUT-OUTPUT SECTION.

000800*

000900 FILE-CONTROL.

001000*

001100 SELECT CUSTMAST ASSIGN TO CUSTMAST.

001200 SELECT SALESRPT ASSIGN TO SALESRPT.

001300*

001400 DATA DIVISION.

001500*

001600 FILE SECTION.

001700*

001800 FD CUSTMAST.

001900*

002000 01 CUSTOMER-MASTER-RECORD.

002100 05 CM-BRANCH-NUMBER PIC 9(2).

002200 05 CM-SALESREP-NUMBER PIC 9(2).

002300 05 CM-CUSTOMER-NUMBER PIC 9(5).

002400 05 CM-CUSTOMER-NAME PIC X(20).

002500 05 CM-SALES-THIS-YTD PIC S9(5)V9(2).

002600 05 CM-SALES-LAST-YTD PIC S9(5)V9(2).

002700 05 FILLER PIC X(37).

002800*

002900 FD SALESRPT.

003000*

003100 01 PRINT-AREA PIC X(132).

003200*

003300 WORKING-STORAGE SECTION.

003400*

003500 01 SWITCHES.

003600 05 CUSTMAST-EOF-SWITCH PIC X VALUE "N".

003700*

003800 01 PRINT-FIELDS.

003900 05 PAGE-COUNT PIC S9(3) VALUE ZERO.

004000 05 LINES-ON-PAGE PIC S9(3) VALUE +55.

004100 05 LINE-COUNT PIC S9(3) VALUE +99.

004200 05 SPACE-CONTROL PIC S9.

004300*

004400 01 TOTAL-FIELDS.

004500 05 GRAND-TOTAL-THIS-YTD PIC S9(7)V99 VALUE ZERO.

004600 05 GRAND-TOTAL-LAST-YTD PIC S9(7)V99 VALUE ZERO.

004700*

004800 01 CURRENT-DATE-AND-TIME.

004900 05 CD-YEAR PIC 9999.

005000 05 CD-MONTH PIC 99.

005100 05 CD-DAY PIC 99.

005200 05 CD-HOURS PIC 99.

005300 05 CD-MINUTES PIC 99.

005400 05 FILLER PIC X(9).

005500*

005600 01 HEADING-LINE-1.

005700 05 FILLER PIC X(7) VALUE "DATE: ".

005800 05 HL1-MONTH PIC 9(2).

005900 05 FILLER PIC X(2) VALUE "/".

006000 05 HL1-DAY PIC 9(2).

006100 05 FILLER PIC X(1) VALUE "/".

006200 05 HL1-YEAR PIC 9(4).

006300 05 FILLER PIC X(11) VALUE SPACE.

006400 05 FILLER PIC X(20) VALUE "YEAR-TO-DATE SALES R".

006500 05 FILLER PIC X(20) VALUE "EPORT ".

006600 05 FILLER PIC X(8) VALUE " PAGE: ".

006700 05 Hl1-PAGE-NUMBER PIC ZZZ9.

006800 05 FILLER PIC X(52) VALUE SPACE.

006900*

007000 01 HEADING-LINE-2.

007100 05 FILLER PIC X(7) VALUE "TIME: ".

007200 05 HL2-HOURS PIC 9(2).

007300 05 FILLER PIC X(1) VALUE ":".

007400 05 HL2-MINUTES PIC 9(2).

007500 05 FILLER PIC X(58) VALUE SPACE.

007600 05 FILLER PIC X(10) VALUE "REPORT33".

007700 05 FILLER PIC X(52) VALUE SPACE.

007800*

007900 01 HEADING-LINE-3.

008000 05 FILLER PIC X(20) VALUE "DEPT SALE CUSTUMER C".

008100 05 FILLER PIC X(20) VALUE "USTUMER ".

008200 05 FILLER PIC X(20) VALUE " SALES SALE".

008300 05 FILLER PIC X(20) VALUE "S CHANGE ".

008400 05 FILLER PIC X(20) VALUE " CHANGE ".

008500 05 FILLER PIC X(32) VALUE SPACE.

008600*

008700 01 HEADING-LINE-4.

008800 05 FILLER PIC X(20) VALUE "NUM NUM NUMBER N".

008900 05 FILLER PIC X(20) VALUE "AME ".

009000 05 FILLER PIC X(20) VALUE " THIS YTD LAST".

009100 05 FILLER PIC X(20) VALUE " YTD AMOUNT ".

009200 05 FILLER PIC X(20) VALUE " PERCENT ".

009300 05 FILLER PIC X(32) VALUE SPACE.

009400*

009500 01 CUSTOMER-LINE.

009600 05 CL-BRANCH-NUMBER PIC 9(2).

009700 05 FILLER PIC X(3) VALUE SPACE.

009800 05 CL-SALESREP-NUMBER PIC 9(2).

009900 05 FILLER PIC X(3) VALUE SPACE.

010000 05 CL-CUSTOMER-NUMBER PIC X(5).

010100 05 FILLER PIC X(4) VALUE SPACE.

010200 05 CL-CUSTOMER-NAME PIC X(20).

010300 05 FILLER PIC X(3) VALUE SPACE.

010400 05 CL-SALES-THIS-YTD PIC ZZ,ZZ9.99-.

010500 05 FILLER PIC X(3) VALUE SPACE.

010600 05 CL-SALES-LAST-YTD PIC ZZ,ZZ9.99-.

010700 05 FILLER PIC X(3) VALUE SPACE.

010800 05 CL-CHANGE-AMOUNT PIC ZZ,ZZ9.99-.

010900 05 FILLER PIC X(5) VALUE SPACE.

011000 05 CL-CHANGE-PERCENT PIC ZZZ.9-.

011100 05 FILLER PIC X(33) VALUE SPACE.

011200*

011300 01 GRAND-TOTAL-LINE.

011400 05 FILLER PIC X(39) VALUE SPACE.

011500 05 GTL-SALES-THIS-YTD PIC Z,ZZZ,ZZ9.99-.

011600 05 GTL-SALES-LAST-YTD PIC Z,ZZZ,ZZ9.99-.

011700 05 FILLER PIC X(3) VALUE SPACE.

011800 05 GTL-CHANGE-AMOUNT PIC ZZ,ZZ9.99-.

011900 05 FILLER PIC X(5) VALUE SPACE.

012000 05 GTL-CHANGE-PERCENT PIC ZZ9.9-.

012100 05 FILLER PIC X(43) VALUE SPACE.

012200*

012300 77 CM-CHANGE-AMOUNT PIC S9(5)V99.

012400 77 GRAND-CHANGE-AMOUNT PIC S9(7)V99.

012500 77 CM-CHANGE-PERCENT PIC S999V99.

012600 PROCEDURE DIVISION.

012700*

012800 000-PREPARE-SALES-REPORT.

012900*

013000 OPEN INPUT CUSTMAST

013100 OUTPUT SALESRPT.

013200 PERFORM 100-FORMAT-REPORT-HEADING.

013300 PERFORM 200-PREPARE-SALES-LINES

013400 UNTIL CUSTMAST-EOF-SWITCH = "Y".

013500 PERFORM 300-PRINT-GRAND-TOTALS.

013600 CLOSE CUSTMAST

013700 SALESRPT.

013800 STOP RUN.

013900*

014000 100-FORMAT-REPORT-HEADING.

014100*

014200 MOVE FUNCTION CURRENT-DATE TO CURRENT-DATE-AND-TIME.

014300 MOVE CD-MONTH TO HL1-MONTH.

014400 MOVE CD-DAY TO HL1-DAY.

014500 MOVE CD-YEAR TO HL1-YEAR.

014600 MOVE CD-HOURS TO HL2-HOURS.

014700 MOVE CD-MINUTES TO HL2-MINUTES.

014800*

014900 200-PREPARE-SALES-LINES.

015000*

015100 PERFORM 210-READ-CUSTOMER-RECORD.

015200 IF CUSTMAST-EOF-SWITCH = "N"

015300 PERFORM 220-PRINT-CUSTOMER-LINE.

015400*

015500 210-READ-CUSTOMER-RECORD.

015600*

015700 READ CUSTMAST

015800 AT END

015900 MOVE "Y" TO CUSTMAST-EOF-SWITCH.

016000*

016100 220-PRINT-CUSTOMER-LINE.

016200*

016300 IF LINE-COUNT >= LINES-ON-PAGE

016400 PERFORM 230-PRINT-HEADING-LINES.

016500 ADD CM-SALES-THIS-YTD TO GRAND-TOTAL-THIS-YTD.

016600 ADD CM-SALES-LAST-YTD TO GRAND-TOTAL-LAST-YTD.

016700 SUBTRACT CM-SALES-LAST-YTD FROM CM-SALES-THIS-YTD

016800 GIVING CM-CHANGE-AMOUNT.

016900 COMPUTE CM-CHANGE-PERCENT =

017000 100 * CM-CHANGE-AMOUNT / CM-SALES-LAST-YTD

017100 ON SIZE ERROR MOVE 999.9 TO CM-CHANGE-PERCENT

017200 END-COMPUTE.

017300 MOVE CM-BRANCH-NUMBER TO CL-BRANCH-NUMBER.

017400 MOVE CM-SALESREP-NUMBER TO CL-SALESREP-NUMBER.

017500 MOVE CM-CUSTOMER-NUMBER TO CL-CUSTOMER-NUMBER.

017600 MOVE CM-CUSTOMER-NAME TO CL-CUSTOMER-NAME.

017700 MOVE CM-SALES-THIS-YTD TO CL-SALES-THIS-YTD.

017800 MOVE CM-SALES-LAST-YTD TO CL-SALES-LAST-YTD.

017900 MOVE CM-CHANGE-AMOUNT TO CL-CHANGE-AMOUNT.

018000 MOVE CM-CHANGE-PERCENT TO CL-CHANGE-PERCENT.

018100 MOVE CUSTOMER-LINE TO PRINT-AREA.

018200 WRITE PRINT-AREA AFTER ADVANCING SPACE-CONTROL LINES.

018300 ADD 1 TO LINE-COUNT.

018400*

018500 230-PRINT-HEADING-LINES.

018600*

018700 ADD 1 TO PAGE-COUNT.

018800 MOVE PAGE-COUNT TO HL1-PAGE-NUMBER.

018900 MOVE HEADING-LINE-1 TO PRINT-AREA.

019000 WRITE PRINT-AREA AFTER ADVANCING PAGE.

019100 MOVE HEADING-LINE-2 TO PRINT-AREA.

019200 WRITE PRINT-AREA AFTER ADVANCING 1 LINES.

019300 MOVE HEADING-LINE-3 TO PRINT-AREA.

019400 WRITE PRINT-AREA AFTER ADVANCING 2 LINES.

019500 MOVE HEADING-LINE-4 TO PRINT-AREA.

019600 WRITE PRINT-AREA AFTER ADVANCING 1 LINES.

019700 MOVE ZERO TO LINE-COUNT.

019800 MOVE 2 TO SPACE-CONTROL.

019900*

020000 300-PRINT-GRAND-TOTALS.

020100*

020200 SUBTRACT GRAND-TOTAL-LAST-YTD FROM GRAND-TOTAL-THIS-YTD

020300 GIVING GRAND-CHANGE-AMOUNT.

020400 COMPUTE CM-CHANGE-PERCENT =

020500 100 * GRAND-CHANGE-AMOUNT / GRAND-TOTAL-LAST-YTD

020600 ON SIZE ERROR MOVE 999.9 TO CM-CHANGE-PERCENT

020700 END-COMPUTE.

020800 MOVE GRAND-TOTAL-THIS-YTD TO GTL-SALES-THIS-YTD.

020900 MOVE GRAND-TOTAL-LAST-YTD TO GTL-SALES-LAST-YTD.

021000 MOVE GRAND-CHANGE-AMOUNT TO GTL-CHANGE-AMOUNT.

021100 MOVE CM-CHANGE-PERCENT TO GTL-CHANGE-PERCENT.

021200 MOVE GRAND-TOTAL-LINE TO PRINT-AREA.

021300 WRITE PRINT-AREA AFTER ADVANCING 2 LINES.

2. 输出

1DATE: 04/ 12/2012 YEAR-TO-DATE SALES REPORT PAGE: 1

TIME: 10:38 REPORT33

0DEPT SALE CUSTUMER CUSTUMER SALES SALES CHANGE CHANGE

NUM NUM NUMBER NAME THIS YTD LAST YTD AMOUNT PERCENT

012 12 11111 INFORMATION BUILDERS 1,234.56 1,111.11 123.45 11.1

012 12 12345 CAREER TRANING CTR 12,345.67 22,222.22 9,876.55- 44.4-

022 10 22222 HOMELITE TEXTRON CO 34,545.00 0.00 34,545.00 999.9

022 14 34567 NEAS MEMBER BENEFITS 111.11 0.00 111.11 999.9

022 14 55555 PILOT LIFE INS.CO. 10,000.00 1,000.00 9,000.00 900.0

034 10 00111 DAUPHIN DEPOSIT BANK 14,099.00 19,930.00 5,831.00- 29.2-

034 17 33333 NORFOLK CORP 6,396.35 4,462.88 1,933.47 43.3

047 11 12121 GENERAL SERVICES CO. 11,444.00 11,059.26 384.74 3.4

047 11 24680 INFO MANAGEMENT CO. 17,481.45 11,892.47 5,588.98 46.9

047 21 99999 DOLLAR SAVINGS BANK 5,059.00 4,621.95 437.05 9.4

047 21 76543 NATL MUSIC CORP. 2,383.46 4,435.26 2,051.80- 46.2-

0 115,099.60 80,735.15 34,364.45 42.5

3. 小结

报表的表头参考此例,表头输出应该注意。

在判断流程上注意88条目的使用。

读取数据的格式要与源数据对应否则会出现数据异常。

输出所有记录,对报表进行美化

1. 源程序

000100 IDENTIFICATION DIVISION.

000200*

000300 PROGRAM-ID. REPORT44.

000400*

000500 ENVIRONMENT DIVISION.

000600*

000700 INPUT-OUTPUT SECTION.

000800*

000900 FILE-CONTROL.

001000*

001100 SELECT CUSTMAST ASSIGN TO CUSTMAST.

001200 SELECT SALESRPT ASSIGN TO SALESRPT.

001300*

001400 DATA DIVISION.

001500*

001600 FILE SECTION.

001700*

001800 FD CUSTMAST.

001900*

002000 01 CUSTOMER-MASTER-RECORD.

002100 05 CM-BRANCH-NUMBER PIC x(2).

002200 05 CM-SALESREP-NUMBER PIC x(2).

002300 05 CM-CUSTOMER-NUMBER PIC 9(5).

002400 05 CM-CUSTOMER-NAME PIC X(20).

002500 05 CM-SALES-THIS-YTD PIC S9(5)V9(2).

002600 05 CM-SALES-LAST-YTD PIC S9(5)V9(2).

002700 05 FILLER PIC X(37).

002800*

002900 FD SALESRPT.

003000*

003100 01 PRINT-AREA PIC X(132).

003200*

003300 WORKING-STORAGE SECTION.

003400*

003500 01 SWITCHES.

003600 05 CUSTMAST-EOF-SWITCH PIC X VALUE "N".

003700*

003800 01 PRINT-FIELDS.

003900 05 PAGE-COUNT PIC S9(3) VALUE ZERO.

004000 05 LINES-ON-PAGE PIC S9(3) VALUE +55.

004100 05 LINE-COUNT PIC S9(3) VALUE +99.

004200 05 SPACE-CONTROL PIC S9.

004300*

004400 01 TOTAL-FIELDS.

004500 05 GRAND-TOTAL-THIS-YTD PIC S9(7)V99 VALUE ZERO.

004600 05 GRAND-TOTAL-LAST-YTD PIC S9(7)V99 VALUE ZERO.

004700*

004800 01 CURRENT-DATE-AND-TIME.

004900 05 CD-YEAR PIC 9999.

005000 05 CD-MONTH PIC 99.

005100 05 CD-DAY PIC 99.

005200 05 CD-HOURS PIC 99.

005300 05 CD-MINUTES PIC 99.

005400 05 FILLER PIC X(9).

005500*

005600 01 HEADING-LINE-1.

005700 05 FILLER PIC X(7) VALUE "DATE: ".

005800 05 HL1-MONTH PIC 9(2).

005900 05 FILLER PIC X(2) VALUE "/".

006000 05 HL1-DAY PIC 9(2).

006100 05 FILLER PIC X(1) VALUE "/".

006200 05 HL1-YEAR PIC 9(4).

006300 05 FILLER PIC X(11) VALUE SPACE.

006400 05 FILLER PIC X(20) VALUE "YEAR-TO-DATE SALES R".

006500 05 FILLER PIC X(20) VALUE "EPORT ".

006600 05 FILLER PIC X(8) VALUE " PAGE: ".

006700 05 Hl1-PAGE-NUMBER PIC ZZZ9.

006800 05 FILLER PIC X(52) VALUE SPACE.

006900*

007000 01 HEADING-LINE-2.

007100 05 FILLER PIC X(7) VALUE "TIME: ".

007200 05 HL2-HOURS PIC 9(2).

007300 05 FILLER PIC X(1) VALUE ":".

007400 05 HL2-MINUTES PIC 9(2).

007500 05 FILLER PIC X(58) VALUE SPACE.

007600 05 FILLER PIC X(10) VALUE "REPORT33".

007700 05 FILLER PIC X(52) VALUE SPACE.

007800*

007900 01 HEADING-LINE-3.

008000 05 FILLER PIC X(20) VALUE "DEPT SALE CUSTUMER C".

008100 05 FILLER PIC X(20) VALUE "USTUMER ".

008200 05 FILLER PIC X(20) VALUE " SALES SALE".

008300 05 FILLER PIC X(20) VALUE "S CHANGE ".

008400 05 FILLER PIC X(20) VALUE " CHANGE ".

008500 05 FILLER PIC X(32) VALUE SPACE.

008600*

008700 01 HEADING-LINE-4.

008800 05 FILLER PIC X(20) VALUE "NUM NUM NUMBER N".

008900 05 FILLER PIC X(20) VALUE "AME ".

009000 05 FILLER PIC X(20) VALUE " THIS YTD LAST".

009100 05 FILLER PIC X(20) VALUE " YTD AMOUNT ".

009200 05 FILLER PIC X(20) VALUE " PERCENT ".

009300 05 FILLER PIC X(32) VALUE SPACE.

009400*

009500 01 CUSTOMER-LINE.

009600 05 CL-BRANCH-NUMBER PIC x(2).

009700 05 FILLER PIC X(3) VALUE SPACE.

009800 05 CL-SALESREP-NUMBER PIC x(2).

009900 05 FILLER PIC X(3) VALUE SPACE.

010000 05 CL-CUSTOMER-NUMBER PIC X(5).

010100 05 FILLER PIC X(4) VALUE SPACE.

010200 05 CL-CUSTOMER-NAME PIC X(20).

010300 05 FILLER PIC X(3) VALUE SPACE.

010400 05 CL-SALES-THIS-YTD PIC ZZ,ZZ9.99-.

010500 05 FILLER PIC X(3) VALUE SPACE.

010600 05 CL-SALES-LAST-YTD PIC ZZ,ZZ9.99-.

010700 05 FILLER PIC X(3) VALUE SPACE.

010800 05 CL-CHANGE-AMOUNT PIC ZZ,ZZ9.99-.

010900 05 FILLER PIC X(5) VALUE SPACE.

011000 05 CL-CHANGE-PERCENT PIC ZZZ.9-.

011100 05 FILLER PIC X(33) VALUE SPACE.

011200*

011300 01 GRAND-TOTAL-LINE.

011400 05 FILLER PIC X(39) VALUE SPACE.

011500 05 GTL-SALES-THIS-YTD PIC Z,ZZZ,ZZ9.99-.

011600 05 GTL-SALES-LAST-YTD PIC Z,ZZZ,ZZ9.99-.

011700 05 FILLER PIC X(3) VALUE SPACE.

011800 05 GTL-CHANGE-AMOUNT PIC ZZ,ZZ9.99-.

011900 05 FILLER PIC X(5) VALUE SPACE.

012000 05 GTL-CHANGE-PERCENT PIC ZZ9.9-.

012100 05 FILLER PIC X(43) VALUE SPACE.

012200*

012300 77 CM-CHANGE-AMOUNT PIC S9(5)V99.

012400 77 GRAND-CHANGE-AMOUNT PIC S9(7)V99.

012500 77 CM-CHANGE-PERCENT PIC S999V99.

012600*

012700 01 TOTAL-PER-BRANCH.

012800 05 BTL-BRANCH-NUMBER PIC x(2) VALUE ZERO.

012900 05 BTL-SALES-THIS-YTD PIC S9(7)V99 VALUE ZERO.

013000 05 BTL-SALES-LAST-YTD PIC S9(7)V99 VALUE ZERO.

013100*

013200 01 TOTAL-PER-SALESREP.

013300 05 STL-SALESREP-NUMBER PIC x(2) VALUE ZERO.

013400 05 STL-SALES-THIS-YTD PIC S9(7)V99 VALUE ZERO.

013500 05 STL-SALES-LAST-YTD PIC S9(7)V99 VALUE ZERO.

013600*

013700 77 STL-SALESREP-NUMBER-RESET PIC X VALUE 'Y'.

013800 77 BTL-BRANCH-NUMBER-RESET PIC X VALUE 'Y'.

013900*

014000 PROCEDURE DIVISION.

014100*

014200 000-PREPARE-SALES-REPORT.

014300*

014400 OPEN INPUT CUSTMAST

014500 OUTPUT SALESRPT.

014600 PERFORM 100-FORMAT-REPORT-HEADING.

014700 PERFORM 205-INITIALIZE-COUNTER.

014800 PERFORM 200-PREPARE-SALES-LINES

014900 UNTIL CUSTMAST-EOF-SWITCH = "Y".

015000 PERFORM 250-PRINT-SALESREP-TOTAL.

015100 PERFORM 260-PRINT-BRANCH-TOTAL.

015200 PERFORM 300-PRINT-GRAND-TOTALS.

015300 CLOSE CUSTMAST

015400 SALESRPT.

015500 STOP RUN.

015600*

015700 100-FORMAT-REPORT-HEADING.

015800*

015900 MOVE FUNCTION CURRENT-DATE TO CURRENT-DATE-AND-TIME.

016000 MOVE CD-MONTH TO HL1-MONTH.

016100 MOVE CD-DAY TO HL1-DAY.

016200 MOVE CD-YEAR TO HL1-YEAR.

016300 MOVE CD-HOURS TO HL2-HOURS.

016400 MOVE CD-MINUTES TO HL2-MINUTES.

016500*

016600 205-INITIALIZE-COUNTER.

016700*

016800 PERFORM 210-READ-CUSTOMER-RECORD.

016900 IF CUSTMAST-EOF-SWITCH = "N"

017000 MOVE CM-BRANCH-NUMBER TO BTL-BRANCH-NUMBER

017100 MOVE CM-SALESREP-NUMBER TO STL-SALESREP-NUMBER

017200 PERFORM 220-PRINT-CUSTOMER-LINE.

017300*

017400 200-PREPARE-SALES-LINES.

017500*

017600 PERFORM 210-READ-CUSTOMER-RECORD.

017700 IF CUSTMAST-EOF-SWITCH = "N"

017800 PERFORM 220-PRINT-CUSTOMER-LINE.

017900*

018000 210-READ-CUSTOMER-RECORD.

018100*

018200 READ CUSTMAST

018300 AT END

018400 MOVE "Y" TO CUSTMAST-EOF-SWITCH.

018500*

018600 220-PRINT-CUSTOMER-LINE.

018700*

018800 IF LINE-COUNT >= LINES-ON-PAGE

018900 PERFORM 240-PRINT-HEADING-LINES

019000 END-IF.

019100 IF CM-SALESREP-NUMBER NOT = STL-SALESREP-NUMBER

019200 PERFORM 250-PRINT-SALESREP-TOTAL

019300 GO TO 220-PRINT-CUSTOMER-LINE

019400 END-IF.

019500 IF CM-BRANCH-NUMBER NOT = BTL-BRANCH-NUMBER

019600 DISPLAY CM-BRANCH-NUMBER BTL-BRANCH-NUMBER

019700 PERFORM 260-PRINT-BRANCH-TOTAL

019800 GO TO 220-PRINT-CUSTOMER-LINE

019900 END-IF.

020000 PERFORM 230-PRINT-NORMAL-RECORD.

020100 ADD 1 TO LINE-COUNT.

020200*

020300 230-PRINT-NORMAL-RECORD.

020400 ADD CM-SALES-THIS-YTD TO STL-SALES-THIS-YTD.

020500 ADD CM-SALES-LAST-YTD TO STL-SALES-LAST-YTD.

020600 SUBTRACT CM-SALES-LAST-YTD FROM CM-SALES-THIS-YTD

020700 GIVING CM-CHANGE-AMOUNT.

020800 COMPUTE CM-CHANGE-PERCENT =

020900 100 * CM-CHANGE-AMOUNT / CM-SALES-LAST-YTD

021000 ON SIZE ERROR MOVE 999.9 TO CM-CHANGE-PERCENT

021100 END-COMPUTE.

021200 IF BTL-BRANCH-NUMBER-RESET = 'Y' THEN

021300 MOVE 'N' TO BTL-BRANCH-NUMBER-RESET

021400 MOVE CM-BRANCH-NUMBER TO CL-BRANCH-NUMBER

021500 ELSE

021600 MOVE SPACE TO CL-BRANCH-NUMBER

021700 END-IF.

021800 IF STL-SALESREP-NUMBER-RESET = 'Y' THEN

021900 MOVE 'N' TO STL-SALESREP-NUMBER-RESET

022000 MOVE CM-BRANCH-NUMBER TO CL-SALESREP-NUMBER

022100 ELSE

022200 MOVE SPACE TO CL-SALESREP-NUMBER

022300 END-IF.

022400 MOVE CM-CUSTOMER-NUMBER TO CL-CUSTOMER-NUMBER.

022500 MOVE CM-CUSTOMER-NAME TO CL-CUSTOMER-NAME.

022600 MOVE CM-SALES-THIS-YTD TO CL-SALES-THIS-YTD.

022700 MOVE CM-SALES-LAST-YTD TO CL-SALES-LAST-YTD.

022800 MOVE CM-CHANGE-AMOUNT TO CL-CHANGE-AMOUNT.

022900 MOVE CM-CHANGE-PERCENT TO CL-CHANGE-PERCENT.

023000 MOVE CUSTOMER-LINE TO PRINT-AREA.

023100 WRITE PRINT-AREA AFTER ADVANCING SPACE-CONTROL LINES.

023200*

023300 240-PRINT-HEADING-LINES.

023400*

023500 ADD 1 TO PAGE-COUNT.

023600 MOVE PAGE-COUNT TO HL1-PAGE-NUMBER.

023700 MOVE HEADING-LINE-1 TO PRINT-AREA.

023800 WRITE PRINT-AREA AFTER ADVANCING PAGE.

023900 MOVE HEADING-LINE-2 TO PRINT-AREA.

024000 WRITE PRINT-AREA AFTER ADVANCING 1 LINES.

024100 MOVE HEADING-LINE-3 TO PRINT-AREA.

024200 WRITE PRINT-AREA AFTER ADVANCING 2 LINES.

024300 MOVE HEADING-LINE-4 TO PRINT-AREA.

024400 WRITE PRINT-AREA AFTER ADVANCING 1 LINES.

024500 MOVE ZERO TO LINE-COUNT.

024600 MOVE 2 TO SPACE-CONTROL.

024700*

024800 250-PRINT-SALESREP-TOTAL.

024900*

025000 SUBTRACT STL-SALES-LAST-YTD FROM STL-SALES-THIS-YTD

025100 GIVING GRAND-CHANGE-AMOUNT.

025200 COMPUTE CM-CHANGE-PERCENT =

025300 100 * GRAND-CHANGE-AMOUNT / STL-SALES-LAST-YTD

025400 ON SIZE ERROR MOVE 999.9 TO CM-CHANGE-PERCENT.

025500 MOVE STL-SALES-THIS-YTD TO GTL-SALES-THIS-YTD.

025600 MOVE STL-SALES-LAST-YTD TO GTL-SALES-LAST-YTD.

025700 MOVE GRAND-CHANGE-AMOUNT TO GTL-CHANGE-AMOUNT.

025800 MOVE CM-CHANGE-PERCENT TO GTL-CHANGE-PERCENT.

025900 MOVE GRAND-TOTAL-LINE TO PRINT-AREA.

026000 WRITE PRINT-AREA AFTER ADVANCING 2 LINES.

026100 ADD STL-SALES-THIS-YTD TO BTL-SALES-THIS-YTD.

026200 ADD STL-SALES-LAST-YTD TO BTL-SALES-LAST-YTD.

026300 MOVE 0 TO STL-SALES-THIS-YTD.

026400 MOVE 0 TO STL-SALES-LAST-YTD.

026500 MOVE CM-SALESREP-NUMBER TO STL-SALESREP-NUMBER.

026600 MOVE 'Y' TO STL-SALESREP-NUMBER-RESET.

026700 ADD 1 TO LINE-COUNT.

026800*

026900 260-PRINT-BRANCH-TOTAL.

027000*

027100 SUBTRACT BTL-SALES-LAST-YTD FROM BTL-SALES-THIS-YTD

027200 GIVING GRAND-CHANGE-AMOUNT.

027300 COMPUTE CM-CHANGE-PERCENT =

027400 100 * GRAND-CHANGE-AMOUNT / BTL-SALES-LAST-YTD

027500 ON SIZE ERROR MOVE 999.9 TO CM-CHANGE-PERCENT.

027600 MOVE BTL-SALES-THIS-YTD TO GTL-SALES-THIS-YTD.

027700 MOVE BTL-SALES-LAST-YTD TO GTL-SALES-LAST-YTD.

027800 MOVE GRAND-CHANGE-AMOUNT TO GTL-CHANGE-AMOUNT.

027900 MOVE CM-CHANGE-PERCENT TO GTL-CHANGE-PERCENT.

028000 MOVE GRAND-TOTAL-LINE TO PRINT-AREA.

028100 WRITE PRINT-AREA AFTER ADVANCING 2 LINES.

028200 ADD BTL-SALES-THIS-YTD TO GRAND-TOTAL-THIS-YTD.

028300 ADD BTL-SALES-LAST-YTD TO GRAND-TOTAL-LAST-YTD.

028400 MOVE 0 TO BTL-SALES-THIS-YTD.

028500 MOVE 0 TO BTL-SALES-LAST-YTD.

028600 MOVE CM-BRANCH-NUMBER TO BTL-BRANCH-NUMBER.

028700 MOVE 'Y' TO BTL-BRANCH-NUMBER-RESET.

028800 ADD 1 TO LINE-COUNT.

028900*

029000 300-PRINT-GRAND-TOTALS.

029100*

029200 SUBTRACT GRAND-TOTAL-LAST-YTD FROM GRAND-TOTAL-THIS-YTD

029300 GIVING GRAND-CHANGE-AMOUNT.

029400 COMPUTE CM-CHANGE-PERCENT =

029500 100 * GRAND-CHANGE-AMOUNT / GRAND-TOTAL-LAST-YTD

029600 ON SIZE ERROR MOVE 999.9 TO CM-CHANGE-PERCENT

029700 END-COMPUTE.

029800 MOVE GRAND-TOTAL-THIS-YTD TO GTL-SALES-THIS-YTD.

029900 MOVE GRAND-TOTAL-LAST-YTD TO GTL-SALES-LAST-YTD.

030000 MOVE GRAND-CHANGE-AMOUNT TO GTL-CHANGE-AMOUNT.

030100 MOVE CM-CHANGE-PERCENT TO GTL-CHANGE-PERCENT.

030200 MOVE GRAND-TOTAL-LINE TO PRINT-AREA.

030300 WRITE PRINT-AREA AFTER ADVANCING 2 LINES.

2. 输出

1DATE: 04/ 12/2012 YEAR-TO-DATE SALES REPORT PAGE: 1

TIME: 11:13 REPORT33

0DEPT SALE CUSTUMER CUSTUMER SALES SALES CHANGE CHANGE

NUM NUM NUMBER NAME THIS YTD LAST YTD AMOUNT PERCENT

012 12 11111 INFORMATION BUILDERS 1,234.56 1,111.11 123.45 11.1

0 12345 CAREER TRANING CTR 12,345.67 22,222.22 9,876.55- 44.4-

0 13,580.23 23,333.33 9,753.10- 41.7-

0 13,580.23 23,333.33 9,753.10- 41.7-

022 22 22222 HOMELITE TEXTRON CO 34,545.00 0.00 34,545.00 999.9

0 34,545.00 0.00 34,545.00 999.9

0 22 34567 NEAS MEMBER BENEFITS 111.11 0.00 111.11 999.9

0 55555 PILOT LIFE INS.CO. 10,000.00 1,000.00 9,000.00 900.0

0 10,111.11 1,000.00 9,111.11 911.1

0 44,656.11 1,000.00 43,656.11 999.9

034 34 00111 DAUPHIN DEPOSIT BANK 14,099.00 19,930.00 5,831.00- 29.2-

0 14,099.00 19,930.00 5,831.00- 29.2-

0 34 33333 NORFOLK CORP 6,396.35 4,462.88 1,933.47 43.3

0 6,396.35 4,462.88 1,933.47 43.3

0 20,495.35 24,392.88 3,897.53- 15.9-

047 47 12121 GENERAL SERVICES CO. 11,444.00 11,059.26 384.74 3.4

0 24680 INFO MANAGEMENT CO. 17,481.45 11,892.47 5,588.98 46.9

0 28,925.45 22,951.73 5,973.72 26.0

0 47 99999 DOLLAR SAVINGS BANK 5,059.00 4,621.95 437.05 9.4

0 76543 NATL MUSIC CORP. 2,383.46 4,435.26 2,051.80- 46.2-

0 7,442.46 9,057.21 1,614.75- 17.8-

0 36,367.91 32,008.94 4,358.97 13.6

0 115,099.60 80,735.15 34,364.45 42.5

3. 小结

特别注意数据移动时,每一个子项的对应。

实验总结

posted @ 2012-04-15 22:36  martin@dlut  阅读(925)  评论(0编辑  收藏  举报