Program Algorithm; { Two-way merge for sequential files. Described on page 106 of "The Art of Computer Programming" volume 3 / "Sorting and Searching" by Donald E. Knuth. } const LENGTE = 80; var invoer1, invoer2, uitvoer : text; eind1, eind2 : boolean; regel1, regel2, sentinel : string[LENGTE]; k : byte; begin sentinel[0] := char(LENGTE); for k := 1 to LENGTE do sentinel[k] := char($FF); Assign(invoer1, 'invoer1.dat'); Reset(invoer1); Assign(invoer2, 'invoer2.dat'); Reset(invoer2); Assign(uitvoer, 'uitvoer.dat'); Rewrite(uitvoer); eind1 := false; eind2 := false; Readln(invoer1, regel1); Readln(invoer2, regel2); while (not eind1) or (not eind2) do begin eind1 := EoF(invoer1); eind2 := EoF(invoer2); if regel1 <= regel2 then begin Writeln(uitvoer, regel1); regel1 := sentinel; if (not eind1) then Readln(invoer1, regel1); end else begin Writeln(uitvoer, regel2); regel2 := sentinel; if (not eind2) then Readln(invoer2, regel2); end; end; Close(invoer1); Close(invoer2); Close(uitvoer); end.