这是我的输入文件的记录格式:
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
答案 0 :(得分:2)
布鲁斯提供了一个很好的解决方案,但通常有不止一种方法可以做。这是一个替代解决方案(伪代码),灵感来自迈克尔A.杰克逊的“程序设计原理”(如果你还没有读过它,我推荐它)。
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
.
答案 1 :(得分:1)
伪代码试试:
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
你有任何代码和结果???
答案 2 :(得分:1)
有时,最好的程序是你不必写的程序。
这确实是一个需要实用工具解决方案的问题。 Syncsort将匹配和总结类型的东西,因此其他工具,如FileAid和FileManager。你可以用两到三行配置信息来解决这个问题。