Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Could someone help me debug this? // Cooper College maintains a master file of s

ID: 3600310 • Letter: C

Question

Could someone help me debug this?

// Cooper College maintains a master file of students and credits
// earned. Each semester the master is updated with a transaction
// file that contains credits earned during the semester.
// Each file is sorted in Student ID number order.

start
Declarations
num masterID
string masterName
num masterCredits
num transID
num transCredits

string bothDone = "N"
num HIGH_VALUE = 999999
InputFile master
InputFile trans
OutputFile newMaster
getReady()
while bothDone = "N"
detailLoop()
endwhile
allDone()
stop

getReady()
open master "studentFile.dat"
open trans "semesterCredits.dat"
open newMaster "updatedStudentFile.dat"
readMaster()
readTrans()
checkBoth()
return

readMaster()
input masterID, masterName, masterCredits from master
if eof then
masterID = HIGH_VALUE
endif
return

readTrans()
input transID, transCredits from trans
if eof then
transID = HIGH_VALUE
endif
return

checkBoth()
if masterID = HIGH_VALUE AND transID = HIGH_VALUE then
bothDone = "Y"
endif
return

detailLoop()
if masterID = transID then
match()
else
if masterID > transID then
noMasterForTrans()
else
noTransForMaster()
endif
endif
return

match()
masterCredits = transCredits
output masterID, masterName, masterCredits to newMaster
readMaster()
readTrans()
return

noMasterForTrans()
output "No master file record matches transaction ", masterID
readTrans()
return

noTransForMaster()
output masterID, masterName, masterCredits to newMaster
return

allDone()
close master
close trans
close newMaster
return

Explanation / Answer

start
Declarations
num masterID
string masterName
num masterCredits
num transID
num transCredits

string bothDone = "N"
num HIGH_VALUE = 999999
InputFile master
InputFile trans
OutputFile newMaster
getReady()
while bothDone = "N"
detailLoop()
endwhile
allDone()
stop

getReady()
open master "studentFile.dat"
open trans "semesterCredits.dat"
open newMaster "updatedStudentFile.dat"
readMaster()
readTrans()
checkBoth()
return

readMaster()
input masterID, masterName, masterCredits from master
if eof then
masterID = HIGH_VALUE
endif
return

readTrans()
input transID, transCredits from trans
if eof then
transID = HIGH_VALUE
endif
return

checkBoth()
if masterID = HIGH_VALUE AND transID = HIGH_VALUE then
bothDone = "Y"
endif
return

detailLoop()
if masterID = transID then
match()
else
if masterID > transID then
noMasterForTrans()
else
noTransForMaster()
endif
endif
return

match()
masterCredits = transCredits
output masterID, masterName, masterCredits to newMaster
readMaster()
readTrans()
return

noMasterForTrans()
output "No master file record matches transaction ", masterID
readTrans()
return

noTransForMaster()
output masterID, masterName, masterCredits to newMaster
return

allDone()
close master
close trans
close newMaster
return