如何阅读两个记录,并将它们与顺序文件系统中的主键比较?(How to read two record

2019-10-29 07:21发布

这是我的输入文件的记录格式:

ID NAME Purchaseamount month
1  xxx  10000           feb
1  xxx  10000            mar
1  xxx  10000           apr
2  yyy  100              jan
2  yyy  2054             mar

我怎样才能增加进货量的每个人? 我会给你我的工作的伪代码。

Read inputfile,
move to working storage variables,
end read,
perform until eof,
read input file,
if inputid = ws-input id,
add purchase amount,
else write to output file

Answer 1:

布鲁斯提供了一个很好的解决方案,但往往做事情的方法不止一种。 这里是由Michael A. Jackson的“程序设计原理”所引发的替代解决方案(在伪代码)(我建议,如果你没有看过它)。

OPEN INPUT INPUT-FILE
READ INPUT-FILE 
PERFORM PROCESS-PERSON UNTIL INPUT-FILE-EOF
CLOSE INPUT-FILE
STOP RUN
.

PROCESS-PERSON.
    MOVE INPUT-ID TO LAST-INPUT-ID
    MOVE ZERO TO PURCHASE-TOTAL
    PERFORM PROCESS-RECORD UNTIL INPUT-FILE-EOF OR
        (INPUT-ID NOT = LAST-INPUT-ID)
    WRITE PERSON-TOTAL
    .

PROCESS-RECORD.
    ADD PURCHASE-AMOUNT TO PURCHASE-TOTAL
    READ INPUT-FILE
    .


Answer 2:

伪代码尝试:

 move 0            to purchaseTotal
 Read InputFile
 move inputId      to lastInputId
 Perform until eof
     if inputId = lastInputId
        add purshaseAmount     to purchaseTotal
     else
        write personTotal
        move 0                 to purchaseTotal 
        move inputId      to lastInputId
     end-if  
     Read InputFile
end-Perform
write personTotal

你有任何代码,结果???



Answer 3:

有时,最好的方案是一个你没有写。

这的确是乞求一个实用工具解决的问题。 Syncsort公司会做匹配和资金类的东西,于是将其他工具,如FileAid和文件管理。 你也许可以敲了这一点与配置信息,二,三线。



文章来源: How to read two records and compare them with a primary key in sequential file system?