DEBUGGING

// The two senior class homerooms at Littleville High School
// are having a fundraising drive for the prom. Each time a student
// solicits a contribution, a record is created with the
// student's name and the value. Two files have been created for Homeroom A and Homeroom B.
// Each file is sorted in contribution value order from highest to lowest.
// This program merges the two files.
start
// Declarations
string roomAName
num roomAValue
string roomBName
num roomBValue

string bothFilesDone = "N"
string HIGHVALUE = "XXXXX"
InputFile roomAFile
InputFile roomBFile
OutputFile mergedFile
getReady()
while bothFilesDone = "N"
detailLoop()
endwhile
allDone()
stop

getReady()
open roomAFile "roomAFile.dat"
open roomBFile "roomBFile.dat"
open mergedFile "mergedFile.dat"
readA()
readA()
checkBoth()
return

readA()
input roomAName, roomAValue from roomAFile
if eof then
roomAValue = HIGHVALUE
endif
return

readB()
input roomBName, roomBValue from roomBFile
if eof then
roomBValue = roomAValue
endif
return

checkBoth()
if roomAValue = HIGHVALUE AND roomAValue = HIGHVALUE then
bothFilesDone = "Y"
endif
return

detailLoop()
if roomAName > roomBName then
output roomBName, roomBValue to mergedFile
readB()
else
output roomAName, roomAValue to mergedFile
readA()
endif
checkBoth()
return

allDone()
close roomAFile
close roomBFile
close mergedFile
return

2 answers

gee, how about entering your code in an IDE and

(a) fix any syntax errors
(b) step through the execution if your output is wrong.
checkBoth() has a glaring logic error.

detailLoop() need to consider what happens if you come to the end of one file before its room?Name is greater than that of the other. Avoiding an infinite loop would be a good idea.