PROCEDURE MergeRuns(VAR In1, In2, Result: TEXT);
{объединяем серии из In1 и In2 в Result}
VAR
Ch, Ch1, Choice: CHAR;
BEGIN {MergeRuns}
{инициализируем параметры файлов}
READ(In1, Ch1);
READ(In2, Ch2);
{если ни один из файлов In1 и In2 не пустой, то Ch:= min(Ch1, Ch2)};
WHILE NOT EOF(In1) AND NOT EOF(In2)
DO
BEGIN {объединяем серии из In1 и In2 в Result}
{устанавливаем в переменной Choice значение ‘1’ для чтения из In1
‘2’ – для чтения из In2};
{Заменяем Ch переменной Ch1 либо Ch2 в зависимости от значения Choice и получаем
новое значение для переменной Ch1 либо Ch2}
END;
{копируем последнюю серию из In1 либо In2 в Result};
{сбрасываем параметры файлов}
END {MergeRuns}
Design Part 3.1.5
BEGIN {если ни один из файлов In1 и In2 не пустой, то Ch:= min(Ch1, Ch2)}
...
END
Design Part 3.1.1
BEGIN {устанавливаем в переменной Choice значение ‘1’ для чтения из In1 ‘2’ – для чтения из In2}
...
END
Design Part 3.1.2
BEGIN {Заменяем Ch переменной Ch1 либо Ch2 в зависимости от значения Choice и получаем
новое значение для переменной Ch1 либо Ch2}
...
END
Design Part 3.1.3
BEGIN {копируем последнюю серию из In1 либо In2 в Result}
IF NOT EOF(In1)
THEN {копируем последнюю серию из In1 (если такая существует} в Result}
BEGIN
WRITE(Result, Ch1);
CopyOpen(In1, Result)
END
ELSE
BEGIN
WRITE(Result, Ch2);
CopyOpen(In2, Result)
END
END
Последнее, что осталось изменить – это процедуру CheckIfSorted, чтобы учесть тот файт, что символ # более не используется в качестве разделителя серий.