我的问题是我是 cobol 的初学者,因为我不太了解事物的顺序,所以我无法为我的 COBOL 程序接收正确的输出。如果您使用的是 visual studio 2015,则输出文件是 COBOL 程序的 bin debug 文件夹中的 .rpt 文件。它可能在 2022 年可用,但我们不允许使用该版本。我的目标是在输出文件的右侧添加一行平均值,并在底部添加一个总计行,其中包含击球总数、上垒数和平均总数。目前,我的计算显示 0,并且我的平均值没有像 CORRECT 输出那样在右侧排列。 SEQ 文件列在代码下方,它进入 bin 调试文件夹。
IDENTIFICATION DIVISION.
PROGRAM-ID. BASEBALL-2.
*
******************************************************************
*
* This program reads a file containing population data about
* U.S. cities. It then changes the order of the fields and
* writes a report showing this information.
*
******************************************************************
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT BASEBALL-FILE-IN
ASSIGN TO 'BASEBALL-2.SEQ'
ORGANIZATION IS LINE SEQUENTIAL.
SELECT BASEBALL-FILE-OUT
ASSIGN TO 'BASEBALL-2.RPT'
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD BASEBALL-FILE-IN.
01 BASEBALL-RECORD-IN.
05 NAME-IN PIC X(18).
05 FILLER PIC XX.
05 LEAGUE-IN PIC X(2).
05 FILLER PIC XX.
05 TEAM-IN PIC 9(3).
05 FILLER PIC XX.
05 AT-BATS-IN PIC 9(3).
05 FILLER PIC XX.
05 HITS-IN PIC 9(3).
FD BASEBALL-FILE-OUT.
01 BASEBALL-RECORD-OUT PIC X(80).
WORKING-STORAGE SECTION.
01 ARE-THERE-MORE-RECORDS PIC X(3) VALUE 'YES'.
01 LINES-PRINTED PIC 99 VALUE ZERO.
01 PAGE-NUMBER PIC 99 VALUE ZERO.
01 WS-AVERAGE-AMOUNT PIC 99 VALUE ZERO.
01 WS-GRAND-TOTAL-BATS PIC 99 VALUE ZERO.
01 WS-GRAND-TOTAL-HITS PIC 99 VALUE ZERO.
01 WS-GRAND-TTL-AVG-AMT PIC 99 VALUE ZERO.
01 CURRENT-DATE.
05 YEAR-X PIC XX.
05 MONTH-X PIC XX.
05 DAY-X PIC XX.
01 HEADING-LINE-1.
05 PIC X(23) VALUE SPACES.
05 PIC X(27)
VALUE 'BASEBALL PLAYER STATISTICS'.
05 PIC X(5) VALUE SPACES.
05 HL-1-DATE.
10 HL-1-MONTH PIC XX.
10 PIC X VALUE '/'.
10 HL-1-DAY PIC XX.
10 PIC X VALUE '/'.
10 HL-1-YEAR PIC XX.
05 PIC X(3) VALUE SPACES.
05 PIC X(5) VALUE 'PAGE'.
05 HL-1-PAGE-NUMBER PIC Z9.
01 HEADING-LINE-2.
05 PIC X(9) VALUE 'LEAGUE'.
05 PIC XX VALUE SPACES.
05 PIC X(9) VALUE 'TEAM'.
05 PIC XX VALUE SPACES.
05 PIC X(19) VALUE 'NAME'.
05 PIC XX VALUE SPACES.
05 PIC XX(13) VALUE 'HITS-IN'.
05 PIC XX VALUE SPACES.
05 PIC XX(13) VALUE 'AT-BATS'.
05 PIC XX VALUE SPACES.
05 PIC XX(10) VALUE 'AVERAGE'.
01 DETAIL-LINE.
05 DL-LEAGUE PIC X(9).
05 PIC XX VALUE SPACES
05 DL-TEAM PIC X(9).
05 PIC XX VALUE SPACES.
05 DL-NAME PIC X(19).
05 PIC XX VALUE SPACES.
05 DL-HITS-IN PIC 999.
05 PIC XX VALUE SPACES.
. 05 DL-AT-BATS PIC 999.
05 PIC XX VALUE SPACES.
05 DL-AVERAGE PIC .999.
05 PIC XX VALUE SPACES.
01 TOTAL-LINE.
05 PIC X(20)
VALUE 'TOTAL'.
05 PIC X(15) VALUE SPACES.
05 TL-GRAND-TOTAL-HITS-AMOUNT PIC 999.
05 PIC X(10) VALUE SPACES.
05 TL-GRAND-TOTAL-BATS-AMOUNT PIC 999.
05 PIC X(10).
05 TL-GRAND-TOTAL-AVERAGE-AMOUNT PIC 999.
PROCEDURE DIVISION.
100-MAIN.
OPEN INPUT BASEBALL-FILE-IN
OPEN OUTPUT BASEBALL-FILE-OUT
* Get the Current Date From The System
ACCEPT CURRENT-DATE FROM DATE
MOVE MONTH-X TO HL-1-MONTH
MOVE DAY-X TO HL-1-DAY
MOVE YEAR-X TO HL-1-YEAR
PERFORM 300-WRITE-HEADINGS
PERFORM UNTIL ARE-THERE-MORE-RECORDS = 'NO '
READ BASEBALL-FILE-IN
AT END
MOVE 'NO ' TO ARE-THERE-MORE-RECORDS
NOT AT END
PERFORM 200-PROCESS-ONE-RECORD
END-READ
END-PERFORM
CLOSE BASEBALL-FILE-IN
CLOSE BASEBALL-FILE-OUT
STOP RUN.
200-PROCESS-ONE-RECORD.
IF LINES-PRINTED >= 57
PERFORM 300-WRITE-HEADINGS
END-IF
COMPUTE WS-AVERAGE-AMOUNT ROUNDED = DL-AT-BATS / DL-HITS-IN
MOVE NAME-IN TO DL-NAME
MOVE LEAGUE-IN TO DL-LEAGUE
MOVE TEAM-IN TO DL-TEAM
MOVE AT-BATS-IN TO DL-AT-BATS
MOVE HITS-IN TO DL-HITS-IN
MOVE DETAIL-LINE TO BASEBALL-RECORD-OUT
WRITE BASEBALL-RECORD-OUT
AFTER ADVANCING 2 LINES
ADD 2 TO LINES-PRINTED.
COMPUTE WS-GRAND-TOTAL-BATS = WS-GRAND-TOTAL-BATS + DL-AT-BATS
COMPUTE WS-GRAND-TOTAL-HITS = WS-GRAND-TOTAL-HITS + DL-HITS-IN
COMPUTE WS-GRAND-TTL-AVG-AMT = WS-GRAND-TTL-AVG-AMT + WS-AVERAGE-AMOUNT
MOVE WS-GRAND-TOTAL-HITS TO TL-GRAND-TOTAL-HITS-AMOUNT
MOVE WS-GRAND-TOTAL-BATS TO TL-GRAND-TOTAL-BATS-AMOUNT
MOVE WS-GRAND-TTL-AVG-AMT TO TL-GRAND-TOTAL-AVERAGE-AMOUNT
300-WRITE-HEADINGS.
ADD 1 TO PAGE-NUMBER
MOVE PAGE-NUMBER TO HL-1-PAGE-NUMBER
MOVE HEADING-LINE-1 TO BASEBALL-RECORD-OUT
WRITE BASEBALL-RECORD-OUT
AFTER ADVANCING PAGE
MOVE HEADING-LINE-2 TO BASEBALL-RECORD-OUT
WRITE BASEBALL-RECORD-OUT
AFTER ADVANCING 2
MOVE 3 TO LINES-PRINTED.
Votto NL CIN 354 121
McCutchen NL PIT 569 190
Posey NL SF 510 169
Frandsen NL PHI 169 056
Lucroy NL MIL 299 098
Ruiz NL PHI 351 114
Molina NL STL 487 156
Braun NL MIL 572 182
Young NL COL 174 055
Pierre NL PHI 383 120
Ruggiano NL MIA 288 090
Pacheco NL COL 449 138
Wright NL NYM 560 172
Craig NL STL 447 137
Prado NL ATL 599 183
Scutaro NL SF 600 183
Werth NL WSH 276 084
Kemp NL LAD 378 115
Gonzalez NL COL 518 157
Bloomquist NL ARI 324 098
Cruz NL LAD 255 077
Hill NL ARI 578 174
Jay NL STL 422 127
Fowler NL COL 454 136
Nelson NL COL 324 097
Carpenter NL STL 284 085
Ramirez NL MIL 551 164
Desmond NL WSH 489 145
Freese NL STL 490 145
Tejada NL NYM 433 128
Jones NL ATL 370 109
Solano NL MIA 258 076
Holliday NL STL 582 171
Johnson NL ATL 259 076
LeMahieu NL COL 208 061
Denorfia NL SD 324 095
Montero NL ARI 468 137
Altuve NL HOU 561 164
Murphy NL NYM 544 159
Colvin NL COL 396 115
Castillo NL CHC 155 045
Pagan NL SF 583 169
Bernadina NL WSH 221 064
Dobbs NL MIA 311 090
Aoki NL MIL 491 142
Rutledge NL COL 243 070
Sandoval NL SF 375 108
Goldschmidt NL ARI 497 143
Reyes NL MIA 616 177
Tulowitzki NL COL 181 052
Morse NL WSH 383 110
Infante NL MIA 328 094
Zimmerman NL WSH 554 158
Ethier NL LAD 531 151
Johnson NL ARI 476 135
Rizzo NL CHC 314 089
Stanton NL MIA 427 121
Headley NL SD 579 164
Phillips NL CIN 558 158
Castro NL CHC 619 175
Hanigan NL CIN 308 087
Forsythe NL SD 298 084
Walker NL PIT 472 132
Schumaker NL STL 265 074
我尝试将平均值和总平均值变量添加到工作存储中,并为总计创建一个新的工作存储,以及在程序的处理区域中添加算术。下面显示的是正确的布局,简化为一页。
BASEBALL PLAYER STATISTICS 10/09/12 PAGE 3
LEAGUE TEAM NAME HITS AT BATS AVERAGE
NL WSH Zimmerman 158 554 .285
NL LAD Ethier 151 531 .284
NL ARI Johnson 135 476 .284
NL CHC Rizzo 89 314 .283
NL MIA Stanton 121 427 .283
NL SD Headley 164 579 .283
NL CIN Phillips 158 558 .283
NL CHC Castro 175 619 .283
NL CIN Hanigan 87 308 .282
NL SD Forsythe 84 298 .282
NL PIT Walker 132 472 .280
NL STL Schumaker 74 265 .279
TOTALS 7,851 26,342 .298