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. 小结

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

实验总结

转载于:https://www.cnblogs.com/martin-dlut/archive/2012/04/15/2443690.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值