如何读取两条记录并将它们与顺序文件系统中的主键进行比较?

时间:2015-02-25 05:03:22

标签: cobol mainframe

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

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

3 个答案:

答案 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。你可以用两到三行配置信息来解决这个问题。