Реклама:

Компоненты ЗАПИСЬ А и ЗАПИСЬ В во входных файлах НЕ соответствуют между собой, поскольку описание проблемы предусматривает ситуации несоответствия. Ни один из этих компонентов не соответствует в точности компоненту НОВАЯ А в выходном файле. Но объединение этих двух входных компонентов соответствует компоненту НОВАЯ А выходного файла. Дело в том, что НОВАЯ А формируется слиянием записи А и записи В. Это объединение и получаемое в результате соответствие показаны на рис. 6.2.

Теперь установив структуры упорядочиваемых даннных и обработку соответствий, можно приступить к разработке основных структур программы упорядочения.

6.3. Структуры программы упорядочения

С использованием описанных соответствий формируется структура программы, показанная на рис. 6.3.

В таком виде это очень простая программа. Присоединим к ней исполнимые операции. Вот их список:

1. СТОП.

2. Открыть файлы.

3. Закрыть файлы.

4. Писать обновленную А-запись.

5. Писать неизмененную А-запись.

6. Писать новую А-запись с подробностями первой транзакции.

Кинг Д. Создание эффективного программного обеспечения

Рис. 6.3. Структура программы упорядочения.

В этой версии программы нет необходимости в вычислениях или операциях обработки даннных. Распределение перечисленных операций показано на рис. 6.4.

Компонент ТЕЛО УПОРЯДОЧЕНИЯ был добавлен для поддержания целостности структуры программы в новых условиях, когда УПОРЯДОЧЕНИЕ стало последовательностью и перестало быть повторением, каким оно представлено на рис. 6.3.

Обратите внимание на места размещения операций чтения с номерами 7 и 8. Правило предварительного чтения требует, чтобы для любого входного файла чтение выполнялось в первый раз непосредственно сразу после открытия файла, а затем последовательно после завершения обработки каждой записи из этого файла.

В данном случае у нас два входных файла. Поэтому чтение А и чтение В происходят сразу после операции 2. Затем в конце компонента ОБРАБОТКА СОПОСТАВЛЯЕМЫХ А + В обе записи А и В оказываются обработанными, и поэтому нужно поместить обе операции чтения. Но после компонентов ОБРАБОТКА НЕСОПОСТАВЛЯЕМОИ А и ОБРАБОТКА НЕСОПОС-ТАВЛЯЕМОй В фактически была обработана в каждом случае только одна запись, и поэтому нужно поместить соответственно только одну подходящую операцию чтения. Благодаря этой процедуре при проверке входных буферов сравнение идентификаторов клиентов показывает, что присутствуют обе требуемые записи. Кроме того, данная процедура исключает попытки чтения из какого-либо входного файла после появления признака Конец-файла (КФ).

Кинг Д. Создание эффективного программного обеспечения

Рис. 6.4. Структура программы упорядочения с распределенными операциями.

Теперь нужно оценить условия завершения повторения и условия выборов.

Для повторения ТЕЛО УПОРЯДОЧЕНИЯ условие завершения состоит в достижении обоими файлами А и В признака КФ. В этом и во всех последующих примерах программы упорядочения операторы чтения для обоих файлов А и В должны включать операцию «установки флага» Конца-файла, которая эффективно приводит «значение» ключа записи (в данном случае идентификатор клиента) к значению, превышающему те, которые могут появиться при обычной работе к моменту достижения КФ. Тем самым гарантируется, что после достижения конца файла этот файл не будет читаться заново. Весьма важное достижение на тот случай, когда чтение после признака КФ может принести много вреда!


⇐ Предыдущая страница| |Следующая страница ⇒