这是我的输入文件的记录格式:
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
布鲁斯提供了一个很好的解决方案,但往往做事情的方法不止一种。 这里是由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
.
伪代码尝试:
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
你有任何代码,结果???
有时,最好的方案是一个你没有写。
这的确是乞求一个实用工具解决的问题。 Syncsort公司会做匹配和资金类的东西,于是将其他工具,如FileAid和文件管理。 你也许可以敲了这一点与配置信息,二,三线。
文章来源: How to read two records and compare them with a primary key in sequential file system?