Average 在Cobol中找到最高、最低和平均值
我正在创建一个程序,该程序正在读取由公司及其信息组成的文件。它是拒绝评级低于3.5的公司,然后显示最高报价和最低报价,然后显示公司之间的平均值。我是Cobol新手,所以我不知道如何找到最高、最低和平均值。我已经编写了我认为将在模块2012中工作的代码,以查找最高值,但当我运行程序时,它不会显示信息。在此方面的任何帮助都将不胜感激。多谢各位Average 在Cobol中找到最高、最低和平均值,average,cobol,highest,Average,Cobol,Highest,我正在创建一个程序,该程序正在读取由公司及其信息组成的文件。它是拒绝评级低于3.5的公司,然后显示最高报价和最低报价,然后显示公司之间的平均值。我是Cobol新手,所以我不知道如何找到最高、最低和平均值。我已经编写了我认为将在模块2012中工作的代码,以查找最高值,但当我运行程序时,它不会显示信息。在此方面的任何帮助都将不胜感激。多谢各位 IDENTIFICATION DIVISION. PROGRAM-ID. MOVING-QUOTES. ENVIRONMENT DIV
IDENTIFICATION DIVISION.
PROGRAM-ID. MOVING-QUOTES.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT MOVING-QUOTES-FILE ASSIGN TO 'Moving-Quotes.txt'
ORGANIZATION IS LINE SEQUENTIAL.
SELECT MOVING-QUOTES-RESULTS-FILE ASSIGN TO "MOVING.TXT"
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD MOVING-QUOTES-FILE.
01 FS-MOVING-QUOTES-RECORD PIC X(45).
FD MOVING-QUOTES-RESULTS-FILE.
01 MOVING-QUOTES-RESULTS-RECORD PIC X(80).
WORKING-STORAGE SECTION.
01 WS-MOVING-QUOTES-RECORD.
05 FILLER PIC X(2).
05 MQR-COMPANY-NAME PIC X(15).
05 FILLER PIC X(1).
05 MQR-COMPANY-PHONE PIC X(13).
05 FILLER PIC X(1).
05 MQR-MOVING-QUOTE PIC 999V99.
05 FILLER PIC X(1).
05 MQR-NUMBER-ITEMS PIC 999.
05 FILLER PIC X(1).
05 MQR-RATING PIC 9V9.
01 PRT-MOVING-QUOTES-FILE.
05 FILLER PIC X(2).
05 PRT-MQR-COMPANY-NAME PIC X(15).
05 FILLER PIC X(1) VALUE SPACES.
05 PRT-MQR-COMPANY-PHONE PIC X(13).
05 FILLER PIC X(5).
05 PRT-MQR-MOVING-QUOTE PIC $zz99.99.
05 FILLER PIC X(7).
05 PRT-MQR-NUMBER-ITEMS PIC 9(3).
05 FILLER PIC X(15).
05 PRT-MQR-RATING PIC 9.9.
01 PAGE-TITLE.
05 PIC X(22) VALUE SPACES.
05 PIC X(40) VALUE 'MOVING COMPANY QUOTES'.
05 PIC X(18) VALUE SPACES.
05 PRT-PAGE-NUM PIC Z9.
01 QUOTE-HEADING-1.
05 PIC X(7) VALUE SPACES.
05 PIC X(7) VALUE 'COMPANY'.
05 PIC X(9) VALUE SPACES.
05 PIC X(5) VALUE 'PHONE'.
05 PIC X(21) VALUE SPACES.
05 PIC X(9) VALUE 'NUMBER OF'.
05 PIC X(11) VALUE SPACES.
05 PIC X(4) VALUE 'YELP'.
05 PIC X(7).
01 QUOTE-HEADING-2.
05 PIC X(8).
05 PIC X(4) VALUE 'NAME'.
05 PIC X(11) VALUE SPACES.
05 PIC X(6) VALUE 'NUMBER'.
05 PIC X(9) VALUE SPACES.
05 PIC X(5) VALUE 'QUOTE'.
05 PIC X(7) VALUE SPACES.
05 PIC X(5) VALUE 'ITEMS'.
05 PIC X(13) VALUE SPACES.
05 PIC X(6) VALUE 'RATING'.
05 PIC X(2) VALUE SPACES.
01 QUOTE-HEADING-3.
05 PIC X(6) VALUE SPACES.
05 PIC X(9) VALUE ALL '-'.
05 PIC X(7) VALUE SPACES.
05 PIC X(8) VALUE ALL '-'.
05 PIC X(7) VALUE SPACES.
05 PIC X(7) VALUE ALL '-'.
05 PIC X(5) VALUE SPACES.
05 PIC X(11) VALUE ALL '-'.
05 PIC X(7) VALUE SPACES.
05 PIC X(8) VALUE ALL '-'.
01 WS-SWITCHES-AND-COUNTERS.
05 WS-EOF PIC X VALUE 'F'.
05 NUMBER-OF-PAGES PIC S9(4) COMP VALUE 0.
05 NUMBER-OF-LINES-USED PIC S9(4) COMP VALUE 0.
05 WS-HI-BID PIC 999V99 VALUE 0.
05 WS-LO-BID PIC 999V99 VALUE 999.99.
05 WS-TOTAL-BID-SUM PIC 999V99 VALUE 0.
05 WS-NUMBER-OF-RECORDS PIC 9(4) VALUE 4.
05 WS-AVERAGE PIC 999V99.
01 HI-COMPANY-INFO.
05 FILLER PIC X(6) VALUE SPACES.
05 SAV-HI-MQR-COMPANY-NAME PIC X(15).
05 FILLER PIC X(2) VALUE SPACES.
05 SAV-HI-MQR-COMPANY-PHONE PIC X(13).
05 FILLER PIC X(2) VALUE SPACES.
05 SAV-HI-MQR-QUOTE PIC $ZZ99.99.
01 LO-COMPANY-INFO.
05 FILLER PIC X(5) VALUE SPACES.
05 SAV-LO-MQR-COMPANY-NAME PIC X(15).
05 FILLER PIC X(2) VALUE SPACES.
05 SAV-LO-MQR-COMPANY-PHONE PIC X(13).
05 FILLER PIC X(2) VALUE SPACES.
05 SAV-LO-MQR-QUOTE PIC $ZZ99.99.
01 AVG-INFO.
05 PIC X(6) VALUE SPACES.
05 SAV-AVG PIC $ZZ99.99.
01 HI-INFO-HD1.
05 PIC X(8).
05 PIC X(7) VALUE 'HIGH'.
05 PIC X(8).
05 PIC X(5) VALUE 'PHONE'.
05 PIC X(52).
01 HI-INFO-HD2.
05 PIC X(6).
05 PIC X(7) VALUE 'COMPANY'.
05 PIC X(10).
05 PIC X(6) VALUE 'NUMBER'.
05 PIC X(9).
05 PIC X(5) VALUE 'QUOTE'.
05 PIC X(37).
01 HI-INFO-HD3.
05 PIC X(5).
05 PIC X(9) VALUE ALL '-'.
05 PIC X(8).
05 PIC X(8) VALUE ALL '-'.
05 PIC X(7).
05 PIC X(7) VALUE ALL '-'.
05 PIC X(36).
01 LO-INFO-HD1.
05 PIC X(7).
05 PIC X(3) VALUE 'LOW'.
05 PIC X(13).
05 PIC X(5) VALUE 'PHONE'.
05 PIC X(52).
01 LO-INFO-HD2.
05 PIC X(6).
05 PIC X(7) VALUE 'COMPANY'.
05 PIC X(10).
05 PIC X(6) VALUE 'NUMBER'.
05 PIC X(9).
05 PIC X(5) VALUE 'QUOTE'.
05 PIC X(37).
01 LO-INFO-HD3.
05 PIC X(5).
05 PIC X(9) VALUE ALL '-'.
05 PIC X(8).
05 PIC X(8) VALUE ALL '-'.
05 PIC X(7).
05 PIC X(7) VALUE ALL '-'.
05 PIC X(36).
01 AVG-INFO-HD1.
05 PIC X(7).
05 PIC X(7) VALUE 'AVERAGE'.
01 AVG-INFO-HD2.
05 PIC X(6).
05 PIC X(9) VALUE ALL '-'.
05 PIC X(65).
PROCEDURE DIVISION.
0000-MAINLINE.
PERFORM 1000-START-MOVING-QUOTES
PERFORM 2000-READ-N-PRINT-MQ
UNTIL WS-EOF = 'T'
PERFORM 3000-FINISH-UP
STOP RUN
.
*END OF MAIN BLOCK
1000-START-MOVING-QUOTES.
OPEN INPUT MOVING-QUOTES-FILE
OUTPUT MOVING-QUOTES-RESULTS-FILE
PERFORM 8000-READ-MOVING-QUOTES-FILE
IF WS-EOF NOT = 'T'
PERFORM 8020-PRINT-TITLE-AND-HEADINGS.
.
8000-READ-MOVING-QUOTES-FILE.
READ MOVING-QUOTES-FILE
AT END MOVE 'T' TO WS-EOF
end-READ
MOVE FS-MOVING-QUOTES-RECORD TO
WS-MOVING-QUOTES-RECORD
.
8010-CHECK-LINES.
ADD 2 TO NUMBER-OF-LINES-USED
IF NUMBER-OF-LINES-USED > 90
PERFORM 8020-PRINT-TITLE-AND-HEADINGS
.
8020-PRINT-TITLE-AND-HEADINGS.
ADD 1 TO NUMBER-OF-PAGES
MOVE NUMBER-OF-PAGES TO PRT-PAGE-NUM
MOVE SPACES TO MOVING-QUOTES-RESULTS-RECORD
MOVE PAGE-TITLE TO MOVING-QUOTES-RESULTS-RECORD
WRITE MOVING-QUOTES-RESULTS-RECORD AFTER ADVANCING 3 LINES
WRITE MOVING-QUOTES-RESULTS-RECORD FROM NUMBER-OF-PAGES
AFTER ADVANCING 1 LINE
WRITE MOVING-QUOTES-RESULTS-RECORD FROM QUOTE-HEADING-1
AFTER ADVANCING 1 LINE
WRITE MOVING-QUOTES-RESULTS-RECORD FROM QUOTE-HEADING-2
AFTER ADVANCING 1 LINE
WRITE MOVING-QUOTES-RESULTS-RECORD FROM QUOTE-HEADING-3
AFTER ADVANCING 1 LINE
.
8025-PRINT-HI-HD.
MOVE SPACES TO MOVING-QUOTES-RESULTS-RECORD
WRITE MOVING-QUOTES-RESULTS-RECORD FROM HI-INFO-HD1
AFTER ADVANCING 1 LINE
WRITE MOVING-QUOTES-RESULTS-RECORD FROM HI-INFO-HD2
AFTER ADVANCING 1 LINE
WRITE MOVING-QUOTES-RESULTS-RECORD FROM HI-INFO-HD3
AFTER ADVANCING 1 LINE
.
8026-PRINT-LO-HD.
WRITE MOVING-QUOTES-RESULTS-RECORD FROM LO-INFO-HD1
AFTER ADVANCING 1 LINE
WRITE MOVING-QUOTES-RESULTS-RECORD FROM LO-INFO-HD2
AFTER ADVANCING 1 LINE
WRITE MOVING-QUOTES-RESULTS-RECORD FROM LO-INFO-HD3
AFTER ADVANCING 1 LINE
.
8027-PRINT-AVG-HD.
WRITE MOVING-QUOTES-RESULTS-RECORD FROM AVG-INFO-HD1
AFTER ADVANCING 1 LINE
WRITE MOVING-QUOTES-RESULTS-RECORD FROM AVG-INFO-HD2
AFTER ADVANCING 1 LINE
.
2000-READ-N-PRINT-MQ.
* PERFORM 8010-CHECK-LINES
PERFORM 8000-READ-MOVING-QUOTES-FILE
IF (MQR-RATING >= 3.5)
MOVE WS-MOVING-QUOTES-RECORD TO
PRT-MOVING-QUOTES-FILE
PERFORM 2001-PRINT-COMP
PERFORM 2010-FIND-HI-LO-AVG
END-IF
.
2001-PRINT-COMP.
MOVE MQR-COMPANY-NAME TO PRT-MQR-COMPANY-NAME
MOVE MQR-COMPANY-PHONE TO PRT-MQR-COMPANY-PHONE
MOVE MQR-MOVING-QUOTE TO PRT-MQR-MOVING-QUOTE
MOVE MQR-NUMBER-ITEMS TO PRT-MQR-NUMBER-ITEMS
MOVE MQR-RATING TO PRT-MQR-RATING
MOVE PRT-MOVING-QUOTES-FILE TO MOVING-QUOTES-RESULTS-RECORD
WRITE MOVING-QUOTES-RESULTS-RECORD
AFTER ADVANCING 2 LINES
ADD 1 TO WS-NUMBER-OF-RECORDS
.
2010-FIND-HI-LO-AVG.
PERFORM 2012-FIND-HI
PERFORM 2013-STORING-VAL-LO
PERFORM 2014-FIND-LO
PERFORM 2015-GET-SUM
PERFORM 2016-GET-AVERAGE
* PERFORM 8000-READ-MOVING-QUOTES-FILE
.
2011-STORING-VAL-HI.
MOVE MQR-MOVING-QUOTE TO WS-HI-BID
.
2012-FIND-HI.
PERFORM 2011-STORING-VAL-HI
IF (MQR-MOVING-QUOTE > WS-HI-BID)
MOVE MQR-MOVING-QUOTE TO WS-HI-BID
MOVE MQR-COMPANY-NAME TO SAV-HI-MQR-COMPANY-NAME
MOVE MQR-COMPANY-PHONE TO SAV-HI-MQR-COMPANY-PHONE
MOVE WS-HI-BID TO SAV-HI-MQR-QUOTE
MOVE HI-COMPANY-INFO TO MOVING-QUOTES-RESULTS-RECORD
WRITE MOVING-QUOTES-RESULTS-RECORD
AFTER ADVANCING 2 LINES
END-IF
.
2013-STORING-VAL-LO.
MOVE MQR-MOVING-QUOTE TO WS-LO-BID
.
2014-FIND-LO.
IF (MQR-MOVING-QUOTE < WS-LO-BID)
MOVE MQR-MOVING-QUOTE TO WS-LO-BID
MOVE MQR-COMPANY-NAME TO SAV-LO-MQR-COMPANY-NAME
MOVE MQR-COMPANY-PHONE TO SAV-LO-MQR-COMPANY-PHONE
MOVE MQR-MOVING-QUOTE TO SAV-LO-MQR-QUOTE
.
2015-GET-SUM.
ADD MQR-MOVING-QUOTE GIVING WS-TOTAL-BID-SUM
.
2016-GET-AVERAGE.
DIVIDE WS-TOTAL-BID-SUM BY WS-NUMBER-OF-RECORDS GIVING
WS-AVERAGE
MOVE WS-AVERAGE TO SAV-AVG
.
3000-FINISH-UP.
PERFORM 8025-PRINT-HI-HD
PERFORM 2012-FIND-HI
PERFORM 3010-PRT-HI
PERFORM 8026-PRINT-LO-HD
PERFORM 2014-FIND-LO
PERFORM 3020-PRT-LO
PERFORM 8027-PRINT-AVG-HD
PERFORM 2016-GET-AVERAGE
PERFORM 3030-PRT-AVG
CLOSE MOVING-QUOTES-FILE
MOVING-QUOTES-RESULTS-FILE
.
3010-PRT-HI.
MOVE HI-COMPANY-INFO TO MOVING-QUOTES-RESULTS-RECORD
.
3020-PRT-LO.
MOVE LO-COMPANY-INFO TO MOVING-QUOTES-RESULTS-RECORD
.
3030-PRT-AVG.
MOVE SAV-AVG TO MOVING-QUOTES-RESULTS-RECORD
.
识别部门。
PROGRAM-ID.MOVING-QUOTES。
环境司。
输入输出部分。
文件控制。
选择MOVING-QUOTES-FILE分配给“MOVING QUOTES.txt”
组织是按行顺序的。
选择MOVING-QUOTES-RESULTS-FILE分配给“MOVING.TXT”
组织是按行顺序的。
数据司。
文件部分。
FD MOVING-QUOTES-FILE。
01 FS-MOVING-QUOTES-RECORD PIC X(45)。
FD MOVING-QUOTES-RESULTS-FILE。
01 MOVING-QUOTES-RESULTS-RECORD PIC X(80)。
工作和储存科。
01 WS-MOVING-QUOTES-RECORD。
05填料图X(2)。
05 MQR-COMPANY-NAME PIC X(15)。
05填料图X(1)。
05 MQR-COMPANY-PHONE PIC X(13)。
05填料图X(1)。
05 MQR-MOVING-QUOTE PIC 999V99。
05填料图X(1)。
05 MQR-NUMBER-ITEMS图999。
05填料图X(1)。
05 MQR额定值PIC 9V9。
01 PRT-MOVING-QUOTES-FILE。
05填料图X(2)。
05 PRT-MQR-COMPANY-NAME PIC X(15)。
05填充图片X(1)值空间。
05 PRT-MQR-COMPANY-PHONE PIC X(13)。
05填料图X(5)。
05 PRT-MQR-MOVING-QUOTE PIC$zz99.99。
05填料图X(7)。
05 PRT-MQR-编号-项目图9(3)。
05填料图X(15)。
05 PRT-MQR-额定值图9.9。
01页标题。
05 PIC X(22)值空间。
05图X(40)值“移动公司报价”。
05 PIC X(18)值空间。
05 PRT-PAGE-NUM图Z9。
01报价-标题-1。
05 PIC X(7)值空间。
05图X(7)价值“公司”。
05 PIC X(9)值空间。
05图X(5)值“电话”。
05 PIC X(21)值空间。
05 PIC X(9)值“数量”。
05 PIC X(11)值空间。
05图片X(4)值“YELP”。
05图X(7)。
01报价-标题-2。
05图X(8)。
05图X(4)值“名称”。
05 PIC X(11)值空间。
05 PIC X(6)值“编号”。
05 PIC X(9)值空间。
05图X(5)值“报价”。
05 PIC X(7)值空间。
05图X(5)值“项目”。
05 PIC X(13)值空间。
05图X(6)值“额定值”。
05 PIC X(2)值空间。
01报价-标题-3。
05 PIC X(6)值空间。
05图X(9)值全部为“-”。
05 PIC X(7)值空间。
05图X(8)值全部为“-”。
05 PIC X(7)值空间。
05图X(7)值全部为“-”。
05 PIC X(5)值空间。
05图X(11)值全部为“-”。
05 PIC X(7)值空间。
05图X(8)值全部为“-”。
01 WS-Switchs-AND-COUNTERS。
05 WS-EOF PIC X值“F”。
05页数PIC S9(4)补偿值0。
05使用的线路数PIC S9(4)补偿值0。
05 WS-HI-BID PIC 999V99值为0。
05 WS-LO-BID PIC 999V99值999.99。
05 WS-TOTAL-BID-SUM PIC 999V99数值0。
05 WS-NUMBER-OF-RECORDS PIC 9(4)值4。
05 WS-AVERAGE PIC 999V99。
01 HI-COMPANY-INFO。
05填充图片X(6)值空间。
05 SAV-HI-MQR-COMPANY-NAME PIC X(15)。
05填充图片X(2)值空间。
05 SAV-HI-MQR-COMPANY-PHONE PIC X(13)。
05填充图片X(2)值空间。
05 SAV-HI-MQR-QUOTE PIC$ZZ99.99。
01 LO-COMPANY-INFO。
05填充图片X(5)个值空间。
05 SAV-LO-MQR-COMPANY-NAME PIC X(15)。
05填充图片X(2)值空间。
05 SAV-LO-MQR-COMPANY-PHONE PIC X(13)。
05填充图片X(2)值空间。
05 SAV-LO-MQR-QUOTE PIC$ZZ99.99。
01平均信息。
05 PIC X(6)值空间。
0
2000-READ-N-PRINT-MQ.
* PERFORM 8010-CHECK-LINES
PERFORM 8000-READ-MOVING-QUOTES-FILE
IF (MQR-RATING >= 3.5)
MOVE WS-MOVING-QUOTES-RECORD TO
PRT-MOVING-QUOTES-FILE
PERFORM 2001-PRINT-COMP
PERFORM 2010-FIND-HI-LO-AVG
END-IF
2000-READ-N-PRINT-MQ.
* PERFORM 8010-CHECK-LINES
IF (MQR-RATING >= 3.5)
MOVE WS-MOVING-QUOTES-RECORD TO
PRT-MOVING-QUOTES-FILE
PERFORM 2001-PRINT-COMP
PERFORM 2010-FIND-HI-LO-AVG
END-IF
PERFORM 8000-READ-MOVING-QUOTES-FILE
if value-from-input-file > current-high
move input-file-details to current-High-details
end-if
if value-from-input-file < current-low
move input-file-details to current-Low-details
end-if